diff options
-rw-r--r-- | pycparser/c_lexer.py | 4 | ||||
-rw-r--r-- | tests/test_c_lexer.py | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py index 42802e5..610bbbe 100644 --- a/pycparser/c_lexer.py +++ b/pycparser/c_lexer.py @@ -169,8 +169,8 @@ class CLexer(object): ## ## - # valid C identifiers (K&R2: A.2.3) - identifier = r'[a-zA-Z_][0-9a-zA-Z_]*' + # valid C identifiers (K&R2: A.2.3), plus '$' (supported by some compilers) + identifier = r'[a-zA-Z_$][0-9a-zA-Z_$]*' hex_prefix = '0[xX]' hex_digits = '[0-9a-fA-F]+' diff --git a/tests/test_c_lexer.py b/tests/test_c_lexer.py index 20f514c..790ab39 100644 --- a/tests/test_c_lexer.py +++ b/tests/test_c_lexer.py @@ -44,6 +44,7 @@ class TestCLexerNoErrors(unittest.TestCase): self.assertTokensTypes('++', ['PLUSPLUS']) self.assertTokensTypes('case int', ['CASE', 'INT']) self.assertTokensTypes('caseint', ['ID']) + self.assertTokensTypes('$dollar cent$', ['ID', 'ID']) self.assertTokensTypes('i ^= 1;', ['ID', 'XOREQUAL', 'INT_CONST_DEC', 'SEMI']) def test_id_typeid(self): @@ -358,7 +359,6 @@ class TestCLexerErrors(unittest.TestCase): def test_trivial_tokens(self): self.assertLexerError('@', ERR_ILLEGAL_CHAR) - self.assertLexerError('$', ERR_ILLEGAL_CHAR) self.assertLexerError('`', ERR_ILLEGAL_CHAR) self.assertLexerError('\\', ERR_ILLEGAL_CHAR) |