summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pycparser/c_lexer.py4
-rw-r--r--tests/test_c_lexer.py2
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)