Fixed handling of some integer suffix corner cases
diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py
index 553e43f..42802e5 100644
--- a/pycparser/c_lexer.py
+++ b/pycparser/c_lexer.py
@@ -176,7 +176,7 @@
hex_digits = '[0-9a-fA-F]+'
# integer constants (K&R2: A.2.5.1)
- integer_suffix_opt = r'(u?ll|U?LL|([uU][lL])|([lL][uU])|[uU]|[lL])?'
+ integer_suffix_opt = r'(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?'
decimal_constant = '(0'+integer_suffix_opt+')|([1-9][0-9]*'+integer_suffix_opt+')'
octal_constant = '0[0-7]*'+integer_suffix_opt
hex_constant = hex_prefix+hex_digits+integer_suffix_opt
diff --git a/tests/test_c_lexer.py b/tests/test_c_lexer.py
index 2c651a3..20f514c 100644
--- a/tests/test_c_lexer.py
+++ b/tests/test_c_lexer.py
@@ -54,9 +54,14 @@
def test_integer_constants(self):
self.assertTokensTypes('12', ['INT_CONST_DEC'])
self.assertTokensTypes('12u', ['INT_CONST_DEC'])
+ self.assertTokensTypes('12l', ['INT_CONST_DEC'])
self.assertTokensTypes('199872Ul', ['INT_CONST_DEC'])
+ self.assertTokensTypes('199872lU', ['INT_CONST_DEC'])
self.assertTokensTypes('199872LL', ['INT_CONST_DEC'])
self.assertTokensTypes('199872ull', ['INT_CONST_DEC'])
+ self.assertTokensTypes('199872llu', ['INT_CONST_DEC'])
+ self.assertTokensTypes('1009843200000uLL', ['INT_CONST_DEC'])
+ self.assertTokensTypes('1009843200000LLu', ['INT_CONST_DEC'])
self.assertTokensTypes('077', ['INT_CONST_OCT'])
self.assertTokensTypes('0123456L', ['INT_CONST_OCT'])