ECC: CParser add DEBUG macro parsing.
authorjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 29 Jan 2008 11:02:54 +0000 (11:02 +0000)
committerjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 29 Jan 2008 11:02:54 +0000 (11:02 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@990 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Ecc/C.g
Source/Python/Ecc/CLexer.py
Source/Python/Ecc/CParser.py

index d734e24..6da139e 100644 (file)
@@ -48,7 +48,7 @@ options {
 }\r
 \r
 translation_unit\r
-       : external_declaration+\r
+       : external_declaration*\r
        ;\r
 \r
 \r
@@ -160,10 +160,6 @@ type_specifier
        | 'double'\r
        | 'signed'\r
        | 'unsigned'\r
-       | 'BOOLEAN'\r
-       | 'CHAR8'\r
-       | 'CHAR16'\r
-       | 'VOID'\r
        | s=struct_or_union_specifier {self.StoreStructUnionDefinition($s.start.line, $s.start.charPositionInLine, $s.stop.line, $s.stop.charPositionInLine, $s.text)}\r
        | e=enum_specifier {self.StoreEnumerationDefinition($e.start.line, $e.start.charPositionInLine, $e.stop.line, $e.stop.charPositionInLine, $e.text)}\r
        | (IDENTIFIER type_qualifier* declarator)=> type_id\r
@@ -208,8 +204,8 @@ struct_declarator
 \r
 enum_specifier\r
 options {k=3;}\r
-       : 'enum' '{' enumerator_list '}'\r
-       | 'enum' IDENTIFIER '{' enumerator_list '}'\r
+       : 'enum' '{' enumerator_list ','? '}'\r
+       | 'enum' IDENTIFIER '{' enumerator_list ','? '}'\r
        | 'enum' IDENTIFIER\r
        ;\r
 \r
@@ -230,6 +226,7 @@ type_qualifier
        | 'CONST'\r
        | 'UNALIGNED'\r
        | 'VOLATILE'\r
+       | 'GLOBAL_REMOVE_IF_UNREFERENCED'\r
        ;\r
 \r
 declarator\r
@@ -258,7 +255,7 @@ pointer
        ;\r
 \r
 parameter_type_list\r
-       : parameter_list (',' '...')?\r
+       : parameter_list (',' ('OPTIONAL')? '...')?\r
        ;\r
 \r
 parameter_list\r
@@ -268,7 +265,7 @@ parameter_list
 parameter_declaration\r
        : declaration_specifiers (declarator|abstract_declarator)* ('OPTIONAL')?\r
        //accomerdate user-defined type only, no declarator follow.\r
-       | IDENTIFIER\r
+       | pointer* IDENTIFIER\r
        ;\r
 \r
 identifier_list\r
@@ -340,6 +337,7 @@ postfix_expression
         (   '[' expression ']'\r
         |   '(' a=')'{self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $a.line, $a.charPositionInLine, $p.text, '')}\r
         |   '(' c=argument_expression_list b=')' {self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $b.line, $b.charPositionInLine, $p.text, $c.text)}\r
+        |   '(' macro_parameter_list ')'\r
         |   '.' IDENTIFIER\r
         |   '*' IDENTIFIER\r
         |   '->' IDENTIFIER\r
@@ -347,6 +345,10 @@ postfix_expression
         |   '--'\r
         )*\r
        ;\r
+       \r
+macro_parameter_list\r
+       : parameter_declaration (',' parameter_declaration)*\r
+       ;\r
 \r
 unary_operator\r
        : '&'\r
@@ -454,7 +456,7 @@ statement
        ;\r
 \r
 macro_statement\r
-       : IDENTIFIER '(' (IDENTIFIER | declaration*  statement_list?) ')'\r
+       : IDENTIFIER '(' declaration*  statement_list? expression? ')'\r
        ;\r
        \r
 labeled_statement\r
@@ -526,9 +528,10 @@ HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
 \r
 fragment\r
 IntegerTypeSuffix\r
-       :       ('u'|'U')? ('l'|'L')\r
-       |       ('u'|'U')  ('l'|'L')?\r
-       | 'ULL'\r
+       : ('u'|'U')\r
+       | ('l'|'L')\r
+       | ('u'|'U')  ('l'|'L')\r
+       | ('u'|'U')  ('l'|'L') ('l'|'L')\r
        ;\r
 \r
 FLOATING_POINT_LITERAL\r
index a08bbd3..166ef1d 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2008-01-29 14:19:14
+# $ANTLR 3.0.1 C.g 2008-01-29 19:00:50
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -14,7 +14,6 @@ T70=70
 T74=74
 T85=85
 T102=102
-T114=114
 T103=103
 STRING_LITERAL=9
 T32=32
@@ -32,7 +31,6 @@ T84=84
 T33=33
 UnicodeVocabulary=21
 T78=78
-T115=115
 WS=19
 LINE_COMMAND=24
 T42=42
@@ -74,7 +72,6 @@ T91=91
 T105=105
 T37=37
 T86=86
-T116=116
 EscapeSequence=12
 T26=26
 T51=51
@@ -116,7 +113,7 @@ T54=54
 EOF=-1
 T104=104
 T47=47
-Tokens=117
+Tokens=114
 T53=53
 OctalEscape=17
 T99=99
@@ -130,25 +127,25 @@ class CLexer(Lexer):
 
     def __init__(self, input=None):
         Lexer.__init__(self, input)
-        self.dfa27 = self.DFA27(
-            self, 27,
-            eot = self.DFA27_eot,
-            eof = self.DFA27_eof,
-            min = self.DFA27_min,
-            max = self.DFA27_max,
-            accept = self.DFA27_accept,
-            special = self.DFA27_special,
-            transition = self.DFA27_transition
+        self.dfa25 = self.DFA25(
+            self, 25,
+            eot = self.DFA25_eot,
+            eof = self.DFA25_eof,
+            min = self.DFA25_min,
+            max = self.DFA25_max,
+            accept = self.DFA25_accept,
+            special = self.DFA25_special,
+            transition = self.DFA25_transition
             )
-        self.dfa37 = self.DFA37(
-            self, 37,
-            eot = self.DFA37_eot,
-            eof = self.DFA37_eof,
-            min = self.DFA37_min,
-            max = self.DFA37_max,
-            accept = self.DFA37_accept,
-            special = self.DFA37_special,
-            transition = self.DFA37_transition
+        self.dfa35 = self.DFA35(
+            self, 35,
+            eot = self.DFA35_eot,
+            eof = self.DFA35_eof,
+            min = self.DFA35_min,
+            max = self.DFA35_max,
+            accept = self.DFA35_accept,
+            special = self.DFA35_special,
+            transition = self.DFA35_transition
             )
 
 
@@ -573,10 +570,9 @@ class CLexer(Lexer):
         try:
             self.type = T43
 
-            # C.g:25:5: ( 'BOOLEAN' )
-            # C.g:25:7: 'BOOLEAN'
-            self.match("BOOLEAN")
-
+            # C.g:25:5: ( '{' )
+            # C.g:25:7: '{'
+            self.match(u'{')
 
 
 
@@ -596,10 +592,9 @@ class CLexer(Lexer):
         try:
             self.type = T44
 
-            # C.g:26:5: ( 'CHAR8' )
-            # C.g:26:7: 'CHAR8'
-            self.match("CHAR8")
-
+            # C.g:26:5: ( '}' )
+            # C.g:26:7: '}'
+            self.match(u'}')
 
 
 
@@ -619,9 +614,9 @@ class CLexer(Lexer):
         try:
             self.type = T45
 
-            # C.g:27:5: ( 'CHAR16' )
-            # C.g:27:7: 'CHAR16'
-            self.match("CHAR16")
+            # C.g:27:5: ( 'struct' )
+            # C.g:27:7: 'struct'
+            self.match("struct")
 
 
 
@@ -642,9 +637,9 @@ class CLexer(Lexer):
         try:
             self.type = T46
 
-            # C.g:28:5: ( 'VOID' )
-            # C.g:28:7: 'VOID'
-            self.match("VOID")
+            # C.g:28:5: ( 'union' )
+            # C.g:28:7: 'union'
+            self.match("union")
 
 
 
@@ -665,9 +660,9 @@ class CLexer(Lexer):
         try:
             self.type = T47
 
-            # C.g:29:5: ( '{' )
-            # C.g:29:7: '{'
-            self.match(u'{')
+            # C.g:29:5: ( ':' )
+            # C.g:29:7: ':'
+            self.match(u':')
 
 
 
@@ -687,9 +682,10 @@ class CLexer(Lexer):
         try:
             self.type = T48
 
-            # C.g:30:5: ( '}' )
-            # C.g:30:7: '}'
-            self.match(u'}')
+            # C.g:30:5: ( 'enum' )
+            # C.g:30:7: 'enum'
+            self.match("enum")
+
 
 
 
@@ -709,9 +705,9 @@ class CLexer(Lexer):
         try:
             self.type = T49
 
-            # C.g:31:5: ( 'struct' )
-            # C.g:31:7: 'struct'
-            self.match("struct")
+            # C.g:31:5: ( 'const' )
+            # C.g:31:7: 'const'
+            self.match("const")
 
 
 
@@ -732,9 +728,9 @@ class CLexer(Lexer):
         try:
             self.type = T50
 
-            # C.g:32:5: ( 'union' )
-            # C.g:32:7: 'union'
-            self.match("union")
+            # C.g:32:5: ( 'volatile' )
+            # C.g:32:7: 'volatile'
+            self.match("volatile")
 
 
 
@@ -755,9 +751,10 @@ class CLexer(Lexer):
         try:
             self.type = T51
 
-            # C.g:33:5: ( ':' )
-            # C.g:33:7: ':'
-            self.match(u':')
+            # C.g:33:5: ( 'IN' )
+            # C.g:33:7: 'IN'
+            self.match("IN")
+
 
 
 
@@ -777,9 +774,9 @@ class CLexer(Lexer):
         try:
             self.type = T52
 
-            # C.g:34:5: ( 'enum' )
-            # C.g:34:7: 'enum'
-            self.match("enum")
+            # C.g:34:5: ( 'OUT' )
+            # C.g:34:7: 'OUT'
+            self.match("OUT")
 
 
 
@@ -800,9 +797,9 @@ class CLexer(Lexer):
         try:
             self.type = T53
 
-            # C.g:35:5: ( 'const' )
-            # C.g:35:7: 'const'
-            self.match("const")
+            # C.g:35:5: ( 'OPTIONAL' )
+            # C.g:35:7: 'OPTIONAL'
+            self.match("OPTIONAL")
 
 
 
@@ -823,9 +820,9 @@ class CLexer(Lexer):
         try:
             self.type = T54
 
-            # C.g:36:5: ( 'volatile' )
-            # C.g:36:7: 'volatile'
-            self.match("volatile")
+            # C.g:36:5: ( 'CONST' )
+            # C.g:36:7: 'CONST'
+            self.match("CONST")
 
 
 
@@ -846,9 +843,9 @@ class CLexer(Lexer):
         try:
             self.type = T55
 
-            # C.g:37:5: ( 'IN' )
-            # C.g:37:7: 'IN'
-            self.match("IN")
+            # C.g:37:5: ( 'UNALIGNED' )
+            # C.g:37:7: 'UNALIGNED'
+            self.match("UNALIGNED")
 
 
 
@@ -869,9 +866,9 @@ class CLexer(Lexer):
         try:
             self.type = T56
 
-            # C.g:38:5: ( 'OUT' )
-            # C.g:38:7: 'OUT'
-            self.match("OUT")
+            # C.g:38:5: ( 'VOLATILE' )
+            # C.g:38:7: 'VOLATILE'
+            self.match("VOLATILE")
 
 
 
@@ -892,9 +889,9 @@ class CLexer(Lexer):
         try:
             self.type = T57
 
-            # C.g:39:5: ( 'OPTIONAL' )
-            # C.g:39:7: 'OPTIONAL'
-            self.match("OPTIONAL")
+            # C.g:39:5: ( 'GLOBAL_REMOVE_IF_UNREFERENCED' )
+            # C.g:39:7: 'GLOBAL_REMOVE_IF_UNREFERENCED'
+            self.match("GLOBAL_REMOVE_IF_UNREFERENCED")
 
 
 
@@ -915,9 +912,9 @@ class CLexer(Lexer):
         try:
             self.type = T58
 
-            # C.g:40:5: ( 'CONST' )
-            # C.g:40:7: 'CONST'
-            self.match("CONST")
+            # C.g:40:5: ( 'EFIAPI' )
+            # C.g:40:7: 'EFIAPI'
+            self.match("EFIAPI")
 
 
 
@@ -938,9 +935,9 @@ class CLexer(Lexer):
         try:
             self.type = T59
 
-            # C.g:41:5: ( 'UNALIGNED' )
-            # C.g:41:7: 'UNALIGNED'
-            self.match("UNALIGNED")
+            # C.g:41:5: ( 'EFI_BOOTSERVICE' )
+            # C.g:41:7: 'EFI_BOOTSERVICE'
+            self.match("EFI_BOOTSERVICE")
 
 
 
@@ -961,9 +958,9 @@ class CLexer(Lexer):
         try:
             self.type = T60
 
-            # C.g:42:5: ( 'VOLATILE' )
-            # C.g:42:7: 'VOLATILE'
-            self.match("VOLATILE")
+            # C.g:42:5: ( 'EFI_RUNTIMESERVICE' )
+            # C.g:42:7: 'EFI_RUNTIMESERVICE'
+            self.match("EFI_RUNTIMESERVICE")
 
 
 
@@ -984,10 +981,9 @@ class CLexer(Lexer):
         try:
             self.type = T61
 
-            # C.g:43:5: ( 'EFIAPI' )
-            # C.g:43:7: 'EFIAPI'
-            self.match("EFIAPI")
-
+            # C.g:43:5: ( '(' )
+            # C.g:43:7: '('
+            self.match(u'(')
 
 
 
@@ -1007,10 +1003,9 @@ class CLexer(Lexer):
         try:
             self.type = T62
 
-            # C.g:44:5: ( 'EFI_BOOTSERVICE' )
-            # C.g:44:7: 'EFI_BOOTSERVICE'
-            self.match("EFI_BOOTSERVICE")
-
+            # C.g:44:5: ( ')' )
+            # C.g:44:7: ')'
+            self.match(u')')
 
 
 
@@ -1030,10 +1025,9 @@ class CLexer(Lexer):
         try:
             self.type = T63
 
-            # C.g:45:5: ( 'EFI_RUNTIMESERVICE' )
-            # C.g:45:7: 'EFI_RUNTIMESERVICE'
-            self.match("EFI_RUNTIMESERVICE")
-
+            # C.g:45:5: ( '[' )
+            # C.g:45:7: '['
+            self.match(u'[')
 
 
 
@@ -1053,9 +1047,9 @@ class CLexer(Lexer):
         try:
             self.type = T64
 
-            # C.g:46:5: ( '(' )
-            # C.g:46:7: '('
-            self.match(u'(')
+            # C.g:46:5: ( ']' )
+            # C.g:46:7: ']'
+            self.match(u']')
 
 
 
@@ -1075,9 +1069,9 @@ class CLexer(Lexer):
         try:
             self.type = T65
 
-            # C.g:47:5: ( ')' )
-            # C.g:47:7: ')'
-            self.match(u')')
+            # C.g:47:5: ( '*' )
+            # C.g:47:7: '*'
+            self.match(u'*')
 
 
 
@@ -1097,9 +1091,10 @@ class CLexer(Lexer):
         try:
             self.type = T66
 
-            # C.g:48:5: ( '[' )
-            # C.g:48:7: '['
-            self.match(u'[')
+            # C.g:48:5: ( '...' )
+            # C.g:48:7: '...'
+            self.match("...")
+
 
 
 
@@ -1119,9 +1114,9 @@ class CLexer(Lexer):
         try:
             self.type = T67
 
-            # C.g:49:5: ( ']' )
-            # C.g:49:7: ']'
-            self.match(u']')
+            # C.g:49:5: ( '+' )
+            # C.g:49:7: '+'
+            self.match(u'+')
 
 
 
@@ -1141,9 +1136,9 @@ class CLexer(Lexer):
         try:
             self.type = T68
 
-            # C.g:50:5: ( '*' )
-            # C.g:50:7: '*'
-            self.match(u'*')
+            # C.g:50:5: ( '-' )
+            # C.g:50:7: '-'
+            self.match(u'-')
 
 
 
@@ -1163,10 +1158,9 @@ class CLexer(Lexer):
         try:
             self.type = T69
 
-            # C.g:51:5: ( '...' )
-            # C.g:51:7: '...'
-            self.match("...")
-
+            # C.g:51:5: ( '/' )
+            # C.g:51:7: '/'
+            self.match(u'/')
 
 
 
@@ -1186,9 +1180,9 @@ class CLexer(Lexer):
         try:
             self.type = T70
 
-            # C.g:52:5: ( '+' )
-            # C.g:52:7: '+'
-            self.match(u'+')
+            # C.g:52:5: ( '%' )
+            # C.g:52:7: '%'
+            self.match(u'%')
 
 
 
@@ -1208,9 +1202,10 @@ class CLexer(Lexer):
         try:
             self.type = T71
 
-            # C.g:53:5: ( '-' )
-            # C.g:53:7: '-'
-            self.match(u'-')
+            # C.g:53:5: ( '++' )
+            # C.g:53:7: '++'
+            self.match("++")
+
 
 
 
@@ -1230,9 +1225,10 @@ class CLexer(Lexer):
         try:
             self.type = T72
 
-            # C.g:54:5: ( '/' )
-            # C.g:54:7: '/'
-            self.match(u'/')
+            # C.g:54:5: ( '--' )
+            # C.g:54:7: '--'
+            self.match("--")
+
 
 
 
@@ -1252,9 +1248,10 @@ class CLexer(Lexer):
         try:
             self.type = T73
 
-            # C.g:55:5: ( '%' )
-            # C.g:55:7: '%'
-            self.match(u'%')
+            # C.g:55:5: ( 'sizeof' )
+            # C.g:55:7: 'sizeof'
+            self.match("sizeof")
+
 
 
 
@@ -1274,10 +1271,9 @@ class CLexer(Lexer):
         try:
             self.type = T74
 
-            # C.g:56:5: ( '++' )
-            # C.g:56:7: '++'
-            self.match("++")
-
+            # C.g:56:5: ( '.' )
+            # C.g:56:7: '.'
+            self.match(u'.')
 
 
 
@@ -1297,9 +1293,9 @@ class CLexer(Lexer):
         try:
             self.type = T75
 
-            # C.g:57:5: ( '--' )
-            # C.g:57:7: '--'
-            self.match("--")
+            # C.g:57:5: ( '->' )
+            # C.g:57:7: '->'
+            self.match("->")
 
 
 
@@ -1320,10 +1316,9 @@ class CLexer(Lexer):
         try:
             self.type = T76
 
-            # C.g:58:5: ( 'sizeof' )
-            # C.g:58:7: 'sizeof'
-            self.match("sizeof")
-
+            # C.g:58:5: ( '&' )
+            # C.g:58:7: '&'
+            self.match(u'&')
 
 
 
@@ -1343,9 +1338,9 @@ class CLexer(Lexer):
         try:
             self.type = T77
 
-            # C.g:59:5: ( '.' )
-            # C.g:59:7: '.'
-            self.match(u'.')
+            # C.g:59:5: ( '~' )
+            # C.g:59:7: '~'
+            self.match(u'~')
 
 
 
@@ -1365,10 +1360,9 @@ class CLexer(Lexer):
         try:
             self.type = T78
 
-            # C.g:60:5: ( '->' )
-            # C.g:60:7: '->'
-            self.match("->")
-
+            # C.g:60:5: ( '!' )
+            # C.g:60:7: '!'
+            self.match(u'!')
 
 
 
@@ -1388,9 +1382,10 @@ class CLexer(Lexer):
         try:
             self.type = T79
 
-            # C.g:61:5: ( '&' )
-            # C.g:61:7: '&'
-            self.match(u'&')
+            # C.g:61:5: ( '*=' )
+            # C.g:61:7: '*='
+            self.match("*=")
+
 
 
 
@@ -1410,9 +1405,10 @@ class CLexer(Lexer):
         try:
             self.type = T80
 
-            # C.g:62:5: ( '~' )
-            # C.g:62:7: '~'
-            self.match(u'~')
+            # C.g:62:5: ( '/=' )
+            # C.g:62:7: '/='
+            self.match("/=")
+
 
 
 
@@ -1432,9 +1428,10 @@ class CLexer(Lexer):
         try:
             self.type = T81
 
-            # C.g:63:5: ( '!' )
-            # C.g:63:7: '!'
-            self.match(u'!')
+            # C.g:63:5: ( '%=' )
+            # C.g:63:7: '%='
+            self.match("%=")
+
 
 
 
@@ -1454,9 +1451,9 @@ class CLexer(Lexer):
         try:
             self.type = T82
 
-            # C.g:64:5: ( '*=' )
-            # C.g:64:7: '*='
-            self.match("*=")
+            # C.g:64:5: ( '+=' )
+            # C.g:64:7: '+='
+            self.match("+=")
 
 
 
@@ -1477,9 +1474,9 @@ class CLexer(Lexer):
         try:
             self.type = T83
 
-            # C.g:65:5: ( '/=' )
-            # C.g:65:7: '/='
-            self.match("/=")
+            # C.g:65:5: ( '-=' )
+            # C.g:65:7: '-='
+            self.match("-=")
 
 
 
@@ -1500,9 +1497,9 @@ class CLexer(Lexer):
         try:
             self.type = T84
 
-            # C.g:66:5: ( '%=' )
-            # C.g:66:7: '%='
-            self.match("%=")
+            # C.g:66:5: ( '<<=' )
+            # C.g:66:7: '<<='
+            self.match("<<=")
 
 
 
@@ -1523,9 +1520,9 @@ class CLexer(Lexer):
         try:
             self.type = T85
 
-            # C.g:67:5: ( '+=' )
-            # C.g:67:7: '+='
-            self.match("+=")
+            # C.g:67:5: ( '>>=' )
+            # C.g:67:7: '>>='
+            self.match(">>=")
 
 
 
@@ -1546,9 +1543,9 @@ class CLexer(Lexer):
         try:
             self.type = T86
 
-            # C.g:68:5: ( '-=' )
-            # C.g:68:7: '-='
-            self.match("-=")
+            # C.g:68:5: ( '&=' )
+            # C.g:68:7: '&='
+            self.match("&=")
 
 
 
@@ -1569,9 +1566,9 @@ class CLexer(Lexer):
         try:
             self.type = T87
 
-            # C.g:69:5: ( '<<=' )
-            # C.g:69:7: '<<='
-            self.match("<<=")
+            # C.g:69:5: ( '^=' )
+            # C.g:69:7: '^='
+            self.match("^=")
 
 
 
@@ -1592,9 +1589,9 @@ class CLexer(Lexer):
         try:
             self.type = T88
 
-            # C.g:70:5: ( '>>=' )
-            # C.g:70:7: '>>='
-            self.match(">>=")
+            # C.g:70:5: ( '|=' )
+            # C.g:70:7: '|='
+            self.match("|=")
 
 
 
@@ -1615,10 +1612,9 @@ class CLexer(Lexer):
         try:
             self.type = T89
 
-            # C.g:71:5: ( '&=' )
-            # C.g:71:7: '&='
-            self.match("&=")
-
+            # C.g:71:5: ( '?' )
+            # C.g:71:7: '?'
+            self.match(u'?')
 
 
 
@@ -1638,9 +1634,9 @@ class CLexer(Lexer):
         try:
             self.type = T90
 
-            # C.g:72:5: ( '^=' )
-            # C.g:72:7: '^='
-            self.match("^=")
+            # C.g:72:5: ( '||' )
+            # C.g:72:7: '||'
+            self.match("||")
 
 
 
@@ -1661,9 +1657,9 @@ class CLexer(Lexer):
         try:
             self.type = T91
 
-            # C.g:73:5: ( '|=' )
-            # C.g:73:7: '|='
-            self.match("|=")
+            # C.g:73:5: ( '&&' )
+            # C.g:73:7: '&&'
+            self.match("&&")
 
 
 
@@ -1684,9 +1680,9 @@ class CLexer(Lexer):
         try:
             self.type = T92
 
-            # C.g:74:5: ( '?' )
-            # C.g:74:7: '?'
-            self.match(u'?')
+            # C.g:74:5: ( '|' )
+            # C.g:74:7: '|'
+            self.match(u'|')
 
 
 
@@ -1706,10 +1702,9 @@ class CLexer(Lexer):
         try:
             self.type = T93
 
-            # C.g:75:5: ( '||' )
-            # C.g:75:7: '||'
-            self.match("||")
-
+            # C.g:75:5: ( '^' )
+            # C.g:75:7: '^'
+            self.match(u'^')
 
 
 
@@ -1729,9 +1724,9 @@ class CLexer(Lexer):
         try:
             self.type = T94
 
-            # C.g:76:5: ( '&&' )
-            # C.g:76:7: '&&'
-            self.match("&&")
+            # C.g:76:5: ( '==' )
+            # C.g:76:7: '=='
+            self.match("==")
 
 
 
@@ -1752,9 +1747,10 @@ class CLexer(Lexer):
         try:
             self.type = T95
 
-            # C.g:77:5: ( '|' )
-            # C.g:77:7: '|'
-            self.match(u'|')
+            # C.g:77:5: ( '!=' )
+            # C.g:77:7: '!='
+            self.match("!=")
+
 
 
 
@@ -1774,9 +1770,9 @@ class CLexer(Lexer):
         try:
             self.type = T96
 
-            # C.g:78:5: ( '^' )
-            # C.g:78:7: '^'
-            self.match(u'^')
+            # C.g:78:5: ( '<' )
+            # C.g:78:7: '<'
+            self.match(u'<')
 
 
 
@@ -1796,10 +1792,9 @@ class CLexer(Lexer):
         try:
             self.type = T97
 
-            # C.g:79:5: ( '==' )
-            # C.g:79:7: '=='
-            self.match("==")
-
+            # C.g:79:5: ( '>' )
+            # C.g:79:7: '>'
+            self.match(u'>')
 
 
 
@@ -1819,9 +1814,9 @@ class CLexer(Lexer):
         try:
             self.type = T98
 
-            # C.g:80:5: ( '!=' )
-            # C.g:80:7: '!='
-            self.match("!=")
+            # C.g:80:5: ( '<=' )
+            # C.g:80:7: '<='
+            self.match("<=")
 
 
 
@@ -1842,9 +1837,10 @@ class CLexer(Lexer):
         try:
             self.type = T99
 
-            # C.g:81:5: ( '<' )
-            # C.g:81:7: '<'
-            self.match(u'<')
+            # C.g:81:5: ( '>=' )
+            # C.g:81:7: '>='
+            self.match(">=")
+
 
 
 
@@ -1864,9 +1860,10 @@ class CLexer(Lexer):
         try:
             self.type = T100
 
-            # C.g:82:6: ( '>' )
-            # C.g:82:8: '>'
-            self.match(u'>')
+            # C.g:82:6: ( '<<' )
+            # C.g:82:8: '<<'
+            self.match("<<")
+
 
 
 
@@ -1886,9 +1883,9 @@ class CLexer(Lexer):
         try:
             self.type = T101
 
-            # C.g:83:6: ( '<=' )
-            # C.g:83:8: '<='
-            self.match("<=")
+            # C.g:83:6: ( '>>' )
+            # C.g:83:8: '>>'
+            self.match(">>")
 
 
 
@@ -1909,9 +1906,9 @@ class CLexer(Lexer):
         try:
             self.type = T102
 
-            # C.g:84:6: ( '>=' )
-            # C.g:84:8: '>='
-            self.match(">=")
+            # C.g:84:6: ( 'case' )
+            # C.g:84:8: 'case'
+            self.match("case")
 
 
 
@@ -1932,9 +1929,9 @@ class CLexer(Lexer):
         try:
             self.type = T103
 
-            # C.g:85:6: ( '<<' )
-            # C.g:85:8: '<<'
-            self.match("<<")
+            # C.g:85:6: ( 'default' )
+            # C.g:85:8: 'default'
+            self.match("default")
 
 
 
@@ -1955,9 +1952,9 @@ class CLexer(Lexer):
         try:
             self.type = T104
 
-            # C.g:86:6: ( '>>' )
-            # C.g:86:8: '>>'
-            self.match(">>")
+            # C.g:86:6: ( 'if' )
+            # C.g:86:8: 'if'
+            self.match("if")
 
 
 
@@ -1978,9 +1975,9 @@ class CLexer(Lexer):
         try:
             self.type = T105
 
-            # C.g:87:6: ( 'case' )
-            # C.g:87:8: 'case'
-            self.match("case")
+            # C.g:87:6: ( 'else' )
+            # C.g:87:8: 'else'
+            self.match("else")
 
 
 
@@ -2001,9 +1998,9 @@ class CLexer(Lexer):
         try:
             self.type = T106
 
-            # C.g:88:6: ( 'default' )
-            # C.g:88:8: 'default'
-            self.match("default")
+            # C.g:88:6: ( 'switch' )
+            # C.g:88:8: 'switch'
+            self.match("switch")
 
 
 
@@ -2024,9 +2021,9 @@ class CLexer(Lexer):
         try:
             self.type = T107
 
-            # C.g:89:6: ( 'if' )
-            # C.g:89:8: 'if'
-            self.match("if")
+            # C.g:89:6: ( 'while' )
+            # C.g:89:8: 'while'
+            self.match("while")
 
 
 
@@ -2047,9 +2044,9 @@ class CLexer(Lexer):
         try:
             self.type = T108
 
-            # C.g:90:6: ( 'else' )
-            # C.g:90:8: 'else'
-            self.match("else")
+            # C.g:90:6: ( 'do' )
+            # C.g:90:8: 'do'
+            self.match("do")
 
 
 
@@ -2070,9 +2067,9 @@ class CLexer(Lexer):
         try:
             self.type = T109
 
-            # C.g:91:6: ( 'switch' )
-            # C.g:91:8: 'switch'
-            self.match("switch")
+            # C.g:91:6: ( 'for' )
+            # C.g:91:8: 'for'
+            self.match("for")
 
 
 
@@ -2093,9 +2090,9 @@ class CLexer(Lexer):
         try:
             self.type = T110
 
-            # C.g:92:6: ( 'while' )
-            # C.g:92:8: 'while'
-            self.match("while")
+            # C.g:92:6: ( 'goto' )
+            # C.g:92:8: 'goto'
+            self.match("goto")
 
 
 
@@ -2116,9 +2113,9 @@ class CLexer(Lexer):
         try:
             self.type = T111
 
-            # C.g:93:6: ( 'do' )
-            # C.g:93:8: 'do'
-            self.match("do")
+            # C.g:93:6: ( 'continue' )
+            # C.g:93:8: 'continue'
+            self.match("continue")
 
 
 
@@ -2139,9 +2136,9 @@ class CLexer(Lexer):
         try:
             self.type = T112
 
-            # C.g:94:6: ( 'for' )
-            # C.g:94:8: 'for'
-            self.match("for")
+            # C.g:94:6: ( 'break' )
+            # C.g:94:8: 'break'
+            self.match("break")
 
 
 
@@ -2162,77 +2159,8 @@ class CLexer(Lexer):
         try:
             self.type = T113
 
-            # C.g:95:6: ( 'goto' )
-            # C.g:95:8: 'goto'
-            self.match("goto")
-
-
-
-
-
-
-        finally:
-
-            pass
-
-    # $ANTLR end T113
-
-
-
-    # $ANTLR start T114
-    def mT114(self, ):
-
-        try:
-            self.type = T114
-
-            # C.g:96:6: ( 'continue' )
-            # C.g:96:8: 'continue'
-            self.match("continue")
-
-
-
-
-
-
-        finally:
-
-            pass
-
-    # $ANTLR end T114
-
-
-
-    # $ANTLR start T115
-    def mT115(self, ):
-
-        try:
-            self.type = T115
-
-            # C.g:97:6: ( 'break' )
-            # C.g:97:8: 'break'
-            self.match("break")
-
-
-
-
-
-
-        finally:
-
-            pass
-
-    # $ANTLR end T115
-
-
-
-    # $ANTLR start T116
-    def mT116(self, ):
-
-        try:
-            self.type = T116
-
-            # C.g:98:6: ( 'return' )
-            # C.g:98:8: 'return'
+            # C.g:95:6: ( 'return' )
+            # C.g:95:8: 'return'
             self.match("return")
 
 
@@ -2244,7 +2172,7 @@ class CLexer(Lexer):
 
             pass
 
-    # $ANTLR end T116
+    # $ANTLR end T113
 
 
 
@@ -2254,11 +2182,11 @@ class CLexer(Lexer):
         try:
             self.type = IDENTIFIER
 
-            # C.g:499:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:499:4: LETTER ( LETTER | '0' .. '9' )*
+            # C.g:501:2: ( LETTER ( LETTER | '0' .. '9' )* )
+            # C.g:501:4: LETTER ( LETTER | '0' .. '9' )*
             self.mLETTER()
 
-            # C.g:499:11: ( LETTER | '0' .. '9' )*
+            # C.g:501:11: ( LETTER | '0' .. '9' )*
             while True: #loop1
                 alt1 = 2
                 LA1_0 = self.input.LA(1)
@@ -2300,7 +2228,7 @@ class CLexer(Lexer):
     def mLETTER(self, ):
 
         try:
-            # C.g:504:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
+            # C.g:506:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
             # C.g:
             if self.input.LA(1) == u'$' or (u'A' <= self.input.LA(1) <= u'Z') or self.input.LA(1) == u'_' or (u'a' <= self.input.LA(1) <= u'z'):
                 self.input.consume();
@@ -2329,16 +2257,16 @@ class CLexer(Lexer):
         try:
             self.type = CHARACTER_LITERAL
 
-            # C.g:511:5: ( ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:511:9: ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
-            # C.g:511:9: ( 'L' )?
+            # C.g:513:5: ( ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            # C.g:513:9: ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            # C.g:513:9: ( 'L' )?
             alt2 = 2
             LA2_0 = self.input.LA(1)
 
             if (LA2_0 == u'L') :
                 alt2 = 1
             if alt2 == 1:
-                # C.g:511:10: 'L'
+                # C.g:513:10: 'L'
                 self.match(u'L')
 
 
@@ -2346,7 +2274,7 @@ class CLexer(Lexer):
 
             self.match(u'\'')
 
-            # C.g:511:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:513:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
@@ -2355,18 +2283,18 @@ class CLexer(Lexer):
             elif ((u'\u0000' <= LA3_0 <= u'&') or (u'(' <= LA3_0 <= u'[') or (u']' <= LA3_0 <= u'\uFFFE')) :
                 alt3 = 2
             else:
-                nvae = NoViableAltException("511:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
+                nvae = NoViableAltException("513:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
 
                 raise nvae
 
             if alt3 == 1:
-                # C.g:511:23: EscapeSequence
+                # C.g:513:23: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt3 == 2:
-                # C.g:511:40: ~ ( '\\'' | '\\\\' )
+                # C.g:513:40: ~ ( '\\'' | '\\\\' )
                 if (u'\u0000' <= self.input.LA(1) <= u'&') or (u'(' <= self.input.LA(1) <= u'[') or (u']' <= self.input.LA(1) <= u'\uFFFE'):
                     self.input.consume();
 
@@ -2399,16 +2327,16 @@ class CLexer(Lexer):
         try:
             self.type = STRING_LITERAL
 
-            # C.g:515:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:515:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:515:8: ( 'L' )?
+            # C.g:517:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            # C.g:517:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            # C.g:517:8: ( 'L' )?
             alt4 = 2
             LA4_0 = self.input.LA(1)
 
             if (LA4_0 == u'L') :
                 alt4 = 1
             if alt4 == 1:
-                # C.g:515:9: 'L'
+                # C.g:517:9: 'L'
                 self.match(u'L')
 
 
@@ -2416,7 +2344,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:515:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:517:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             while True: #loop5
                 alt5 = 3
                 LA5_0 = self.input.LA(1)
@@ -2428,13 +2356,13 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:515:21: EscapeSequence
+                    # C.g:517:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt5 == 2:
-                    # C.g:515:38: ~ ( '\\\\' | '\"' )
+                    # C.g:517:38: ~ ( '\\\\' | '\"' )
                     if (u'\u0000' <= self.input.LA(1) <= u'!') or (u'#' <= self.input.LA(1) <= u'[') or (u']' <= self.input.LA(1) <= u'\uFFFE'):
                         self.input.consume();
 
@@ -2470,8 +2398,8 @@ class CLexer(Lexer):
         try:
             self.type = HEX_LITERAL
 
-            # C.g:518:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:518:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            # C.g:520:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            # C.g:520:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
             if self.input.LA(1) == u'X' or self.input.LA(1) == u'x':
@@ -2483,7 +2411,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:518:29: ( HexDigit )+
+            # C.g:520:29: ( HexDigit )+
             cnt6 = 0
             while True: #loop6
                 alt6 = 2
@@ -2494,7 +2422,7 @@ class CLexer(Lexer):
 
 
                 if alt6 == 1:
-                    # C.g:518:29: HexDigit
+                    # C.g:520:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2509,14 +2437,14 @@ class CLexer(Lexer):
                 cnt6 += 1
 
 
-            # C.g:518:39: ( IntegerTypeSuffix )?
+            # C.g:520:39: ( IntegerTypeSuffix )?
             alt7 = 2
             LA7_0 = self.input.LA(1)
 
             if (LA7_0 == u'L' or LA7_0 == u'U' or LA7_0 == u'l' or LA7_0 == u'u') :
                 alt7 = 1
             if alt7 == 1:
-                # C.g:518:39: IntegerTypeSuffix
+                # C.g:520:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2540,9 +2468,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:520:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:520:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:520:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            # C.g:522:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            # C.g:522:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            # C.g:522:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             alt9 = 2
             LA9_0 = self.input.LA(1)
 
@@ -2551,21 +2479,21 @@ class CLexer(Lexer):
             elif ((u'1' <= LA9_0 <= u'9')) :
                 alt9 = 2
             else:
-                nvae = NoViableAltException("520:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 9, 0, self.input)
+                nvae = NoViableAltException("522:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 9, 0, self.input)
 
                 raise nvae
 
             if alt9 == 1:
-                # C.g:520:20: '0'
+                # C.g:522:20: '0'
                 self.match(u'0')
 
 
 
             elif alt9 == 2:
-                # C.g:520:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:522:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:520:35: ( '0' .. '9' )*
+                # C.g:522:35: ( '0' .. '9' )*
                 while True: #loop8
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
@@ -2575,7 +2503,7 @@ class CLexer(Lexer):
 
 
                     if alt8 == 1:
-                        # C.g:520:35: '0' .. '9'
+                        # C.g:522:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2587,14 +2515,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:520:46: ( IntegerTypeSuffix )?
+            # C.g:522:46: ( IntegerTypeSuffix )?
             alt10 = 2
             LA10_0 = self.input.LA(1)
 
             if (LA10_0 == u'L' or LA10_0 == u'U' or LA10_0 == u'l' or LA10_0 == u'u') :
                 alt10 = 1
             if alt10 == 1:
-                # C.g:520:46: IntegerTypeSuffix
+                # C.g:522:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2618,11 +2546,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:522:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:522:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            # C.g:524:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            # C.g:524:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
-            # C.g:522:21: ( '0' .. '7' )+
+            # C.g:524:21: ( '0' .. '7' )+
             cnt11 = 0
             while True: #loop11
                 alt11 = 2
@@ -2633,7 +2561,7 @@ class CLexer(Lexer):
 
 
                 if alt11 == 1:
-                    # C.g:522:22: '0' .. '7'
+                    # C.g:524:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2648,14 +2576,14 @@ class CLexer(Lexer):
                 cnt11 += 1
 
 
-            # C.g:522:33: ( IntegerTypeSuffix )?
+            # C.g:524:33: ( IntegerTypeSuffix )?
             alt12 = 2
             LA12_0 = self.input.LA(1)
 
             if (LA12_0 == u'L' or LA12_0 == u'U' or LA12_0 == u'l' or LA12_0 == u'u') :
                 alt12 = 1
             if alt12 == 1:
-                # C.g:522:33: IntegerTypeSuffix
+                # C.g:524:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2677,8 +2605,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:525:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:525:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            # C.g:527:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            # C.g:527:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
             if (u'0' <= self.input.LA(1) <= u'9') or (u'A' <= self.input.LA(1) <= u'F') or (u'a' <= self.input.LA(1) <= u'f'):
                 self.input.consume();
 
@@ -2704,58 +2632,44 @@ class CLexer(Lexer):
     def mIntegerTypeSuffix(self, ):
 
         try:
-            # C.g:529:2: ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? | 'ULL' )
-            alt15 = 3
-            LA15 = self.input.LA(1)
-            if LA15 == u'U':
-                LA15 = self.input.LA(2)
-                if LA15 == u'L':
-                    LA15_4 = self.input.LA(3)
-
-                    if (LA15_4 == u'L') :
-                        alt15 = 3
-                    else:
-                        alt15 = 1
-                elif LA15 == u'l':
-                    alt15 = 1
-                else:
-                    alt15 = 2
-            elif LA15 == u'L' or LA15 == u'l':
-                alt15 = 1
-            elif LA15 == u'u':
-                LA15_3 = self.input.LA(2)
+            # C.g:531:2: ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) )
+            alt13 = 4
+            LA13_0 = self.input.LA(1)
 
-                if (LA15_3 == u'L' or LA15_3 == u'l') :
-                    alt15 = 1
-                else:
-                    alt15 = 2
-            else:
-                nvae = NoViableAltException("527:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? | 'ULL' );", 15, 0, self.input)
+            if (LA13_0 == u'U' or LA13_0 == u'u') :
+                LA13_1 = self.input.LA(2)
 
-                raise nvae
+                if (LA13_1 == u'L' or LA13_1 == u'l') :
+                    LA13_3 = self.input.LA(3)
 
-            if alt15 == 1:
-                # C.g:529:4: ( 'u' | 'U' )? ( 'l' | 'L' )
-                # C.g:529:4: ( 'u' | 'U' )?
+                    if (LA13_3 == u'L' or LA13_3 == u'l') :
+                        alt13 = 4
+                    else:
+                        alt13 = 3
+                else:
+                    alt13 = 1
+            elif (LA13_0 == u'L' or LA13_0 == u'l') :
                 alt13 = 2
-                LA13_0 = self.input.LA(1)
+            else:
+                nvae = NoViableAltException("529:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) );", 13, 0, self.input)
 
-                if (LA13_0 == u'U' or LA13_0 == u'u') :
-                    alt13 = 1
-                if alt13 == 1:
-                    # C.g:
-                    if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
-                        self.input.consume();
+                raise nvae
 
-                    else:
-                        mse = MismatchedSetException(None, self.input)
-                        self.recover(mse)
-                        raise mse
+            if alt13 == 1:
+                # C.g:531:4: ( 'u' | 'U' )
+                if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
+                    self.input.consume();
 
+                else:
+                    mse = MismatchedSetException(None, self.input)
+                    self.recover(mse)
+                    raise mse
 
 
 
 
+            elif alt13 == 2:
+                # C.g:532:4: ( 'l' | 'L' )
                 if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
                     self.input.consume();
 
@@ -2767,8 +2681,8 @@ class CLexer(Lexer):
 
 
 
-            elif alt15 == 2:
-                # C.g:530:4: ( 'u' | 'U' ) ( 'l' | 'L' )?
+            elif alt13 == 3:
+                # C.g:533:4: ( 'u' | 'U' ) ( 'l' | 'L' )
                 if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
                     self.input.consume();
 
@@ -2778,31 +2692,44 @@ class CLexer(Lexer):
                     raise mse
 
 
-                # C.g:530:15: ( 'l' | 'L' )?
-                alt14 = 2
-                LA14_0 = self.input.LA(1)
+                if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
+                    self.input.consume();
 
-                if (LA14_0 == u'L' or LA14_0 == u'l') :
-                    alt14 = 1
-                if alt14 == 1:
-                    # C.g:
-                    if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
-                        self.input.consume();
+                else:
+                    mse = MismatchedSetException(None, self.input)
+                    self.recover(mse)
+                    raise mse
 
-                    else:
-                        mse = MismatchedSetException(None, self.input)
-                        self.recover(mse)
-                        raise mse
 
 
 
+            elif alt13 == 4:
+                # C.g:534:4: ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' )
+                if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
+                    self.input.consume();
+
+                else:
+                    mse = MismatchedSetException(None, self.input)
+                    self.recover(mse)
+                    raise mse
+
+
+                if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
+                    self.input.consume();
 
+                else:
+                    mse = MismatchedSetException(None, self.input)
+                    self.recover(mse)
+                    raise mse
 
 
+                if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
+                    self.input.consume();
 
-            elif alt15 == 3:
-                # C.g:531:4: 'ULL'
-                self.match("ULL")
+                else:
+                    mse = MismatchedSetException(None, self.input)
+                    self.recover(mse)
+                    raise mse
 
 
 
@@ -2822,79 +2749,79 @@ class CLexer(Lexer):
         try:
             self.type = FLOATING_POINT_LITERAL
 
-            # C.g:535:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
-            alt27 = 4
-            alt27 = self.dfa27.predict(self.input)
-            if alt27 == 1:
-                # C.g:535:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:535:9: ( '0' .. '9' )+
-                cnt16 = 0
-                while True: #loop16
-                    alt16 = 2
-                    LA16_0 = self.input.LA(1)
+            # C.g:538:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            alt25 = 4
+            alt25 = self.dfa25.predict(self.input)
+            if alt25 == 1:
+                # C.g:538:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:538:9: ( '0' .. '9' )+
+                cnt14 = 0
+                while True: #loop14
+                    alt14 = 2
+                    LA14_0 = self.input.LA(1)
 
-                    if ((u'0' <= LA16_0 <= u'9')) :
-                        alt16 = 1
+                    if ((u'0' <= LA14_0 <= u'9')) :
+                        alt14 = 1
 
 
-                    if alt16 == 1:
-                        # C.g:535:10: '0' .. '9'
+                    if alt14 == 1:
+                        # C.g:538:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
 
                     else:
-                        if cnt16 >= 1:
-                            break #loop16
+                        if cnt14 >= 1:
+                            break #loop14
 
-                        eee = EarlyExitException(16, self.input)
+                        eee = EarlyExitException(14, self.input)
                         raise eee
 
-                    cnt16 += 1
+                    cnt14 += 1
 
 
                 self.match(u'.')
 
-                # C.g:535:25: ( '0' .. '9' )*
-                while True: #loop17
-                    alt17 = 2
-                    LA17_0 = self.input.LA(1)
+                # C.g:538:25: ( '0' .. '9' )*
+                while True: #loop15
+                    alt15 = 2
+                    LA15_0 = self.input.LA(1)
 
-                    if ((u'0' <= LA17_0 <= u'9')) :
-                        alt17 = 1
+                    if ((u'0' <= LA15_0 <= u'9')) :
+                        alt15 = 1
 
 
-                    if alt17 == 1:
-                        # C.g:535:26: '0' .. '9'
+                    if alt15 == 1:
+                        # C.g:538:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
 
                     else:
-                        break #loop17
+                        break #loop15
 
 
-                # C.g:535:37: ( Exponent )?
-                alt18 = 2
-                LA18_0 = self.input.LA(1)
+                # C.g:538:37: ( Exponent )?
+                alt16 = 2
+                LA16_0 = self.input.LA(1)
 
-                if (LA18_0 == u'E' or LA18_0 == u'e') :
-                    alt18 = 1
-                if alt18 == 1:
-                    # C.g:535:37: Exponent
+                if (LA16_0 == u'E' or LA16_0 == u'e') :
+                    alt16 = 1
+                if alt16 == 1:
+                    # C.g:538:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:535:47: ( FloatTypeSuffix )?
-                alt19 = 2
-                LA19_0 = self.input.LA(1)
+                # C.g:538:47: ( FloatTypeSuffix )?
+                alt17 = 2
+                LA17_0 = self.input.LA(1)
 
-                if (LA19_0 == u'D' or LA19_0 == u'F' or LA19_0 == u'd' or LA19_0 == u'f') :
-                    alt19 = 1
-                if alt19 == 1:
-                    # C.g:535:47: FloatTypeSuffix
+                if (LA17_0 == u'D' or LA17_0 == u'F' or LA17_0 == u'd' or LA17_0 == u'f') :
+                    alt17 = 1
+                if alt17 == 1:
+                    # C.g:538:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2902,57 +2829,57 @@ class CLexer(Lexer):
 
 
 
-            elif alt27 == 2:
-                # C.g:536:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+            elif alt25 == 2:
+                # C.g:539:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:536:13: ( '0' .. '9' )+
-                cnt20 = 0
-                while True: #loop20
-                    alt20 = 2
-                    LA20_0 = self.input.LA(1)
+                # C.g:539:13: ( '0' .. '9' )+
+                cnt18 = 0
+                while True: #loop18
+                    alt18 = 2
+                    LA18_0 = self.input.LA(1)
 
-                    if ((u'0' <= LA20_0 <= u'9')) :
-                        alt20 = 1
+                    if ((u'0' <= LA18_0 <= u'9')) :
+                        alt18 = 1
 
 
-                    if alt20 == 1:
-                        # C.g:536:14: '0' .. '9'
+                    if alt18 == 1:
+                        # C.g:539:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
 
                     else:
-                        if cnt20 >= 1:
-                            break #loop20
+                        if cnt18 >= 1:
+                            break #loop18
 
-                        eee = EarlyExitException(20, self.input)
+                        eee = EarlyExitException(18, self.input)
                         raise eee
 
-                    cnt20 += 1
+                    cnt18 += 1
 
 
-                # C.g:536:25: ( Exponent )?
-                alt21 = 2
-                LA21_0 = self.input.LA(1)
+                # C.g:539:25: ( Exponent )?
+                alt19 = 2
+                LA19_0 = self.input.LA(1)
 
-                if (LA21_0 == u'E' or LA21_0 == u'e') :
-                    alt21 = 1
-                if alt21 == 1:
-                    # C.g:536:25: Exponent
+                if (LA19_0 == u'E' or LA19_0 == u'e') :
+                    alt19 = 1
+                if alt19 == 1:
+                    # C.g:539:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:536:35: ( FloatTypeSuffix )?
-                alt22 = 2
-                LA22_0 = self.input.LA(1)
+                # C.g:539:35: ( FloatTypeSuffix )?
+                alt20 = 2
+                LA20_0 = self.input.LA(1)
 
-                if (LA22_0 == u'D' or LA22_0 == u'F' or LA22_0 == u'd' or LA22_0 == u'f') :
-                    alt22 = 1
-                if alt22 == 1:
-                    # C.g:536:35: FloatTypeSuffix
+                if (LA20_0 == u'D' or LA20_0 == u'F' or LA20_0 == u'd' or LA20_0 == u'f') :
+                    alt20 = 1
+                if alt20 == 1:
+                    # C.g:539:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2960,44 +2887,44 @@ class CLexer(Lexer):
 
 
 
-            elif alt27 == 3:
-                # C.g:537:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:537:9: ( '0' .. '9' )+
-                cnt23 = 0
-                while True: #loop23
-                    alt23 = 2
-                    LA23_0 = self.input.LA(1)
+            elif alt25 == 3:
+                # C.g:540:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:540:9: ( '0' .. '9' )+
+                cnt21 = 0
+                while True: #loop21
+                    alt21 = 2
+                    LA21_0 = self.input.LA(1)
 
-                    if ((u'0' <= LA23_0 <= u'9')) :
-                        alt23 = 1
+                    if ((u'0' <= LA21_0 <= u'9')) :
+                        alt21 = 1
 
 
-                    if alt23 == 1:
-                        # C.g:537:10: '0' .. '9'
+                    if alt21 == 1:
+                        # C.g:540:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
 
                     else:
-                        if cnt23 >= 1:
-                            break #loop23
+                        if cnt21 >= 1:
+                            break #loop21
 
-                        eee = EarlyExitException(23, self.input)
+                        eee = EarlyExitException(21, self.input)
                         raise eee
 
-                    cnt23 += 1
+                    cnt21 += 1
 
 
                 self.mExponent()
 
-                # C.g:537:30: ( FloatTypeSuffix )?
-                alt24 = 2
-                LA24_0 = self.input.LA(1)
+                # C.g:540:30: ( FloatTypeSuffix )?
+                alt22 = 2
+                LA22_0 = self.input.LA(1)
 
-                if (LA24_0 == u'D' or LA24_0 == u'F' or LA24_0 == u'd' or LA24_0 == u'f') :
-                    alt24 = 1
-                if alt24 == 1:
-                    # C.g:537:30: FloatTypeSuffix
+                if (LA22_0 == u'D' or LA22_0 == u'F' or LA22_0 == u'd' or LA22_0 == u'f') :
+                    alt22 = 1
+                if alt22 == 1:
+                    # C.g:540:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -3005,42 +2932,42 @@ class CLexer(Lexer):
 
 
 
-            elif alt27 == 4:
-                # C.g:538:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:538:9: ( '0' .. '9' )+
-                cnt25 = 0
-                while True: #loop25
-                    alt25 = 2
-                    LA25_0 = self.input.LA(1)
+            elif alt25 == 4:
+                # C.g:541:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:541:9: ( '0' .. '9' )+
+                cnt23 = 0
+                while True: #loop23
+                    alt23 = 2
+                    LA23_0 = self.input.LA(1)
 
-                    if ((u'0' <= LA25_0 <= u'9')) :
-                        alt25 = 1
+                    if ((u'0' <= LA23_0 <= u'9')) :
+                        alt23 = 1
 
 
-                    if alt25 == 1:
-                        # C.g:538:10: '0' .. '9'
+                    if alt23 == 1:
+                        # C.g:541:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
 
                     else:
-                        if cnt25 >= 1:
-                            break #loop25
+                        if cnt23 >= 1:
+                            break #loop23
 
-                        eee = EarlyExitException(25, self.input)
+                        eee = EarlyExitException(23, self.input)
                         raise eee
 
-                    cnt25 += 1
+                    cnt23 += 1
 
 
-                # C.g:538:21: ( Exponent )?
-                alt26 = 2
-                LA26_0 = self.input.LA(1)
+                # C.g:541:21: ( Exponent )?
+                alt24 = 2
+                LA24_0 = self.input.LA(1)
 
-                if (LA26_0 == u'E' or LA26_0 == u'e') :
-                    alt26 = 1
-                if alt26 == 1:
-                    # C.g:538:21: Exponent
+                if (LA24_0 == u'E' or LA24_0 == u'e') :
+                    alt24 = 1
+                if alt24 == 1:
+                    # C.g:541:21: Exponent
                     self.mExponent()
 
 
@@ -3063,8 +2990,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:542:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:542:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            # C.g:545:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            # C.g:545:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
             if self.input.LA(1) == u'E' or self.input.LA(1) == u'e':
                 self.input.consume();
 
@@ -3074,13 +3001,13 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:542:22: ( '+' | '-' )?
-            alt28 = 2
-            LA28_0 = self.input.LA(1)
+            # C.g:545:22: ( '+' | '-' )?
+            alt26 = 2
+            LA26_0 = self.input.LA(1)
 
-            if (LA28_0 == u'+' or LA28_0 == u'-') :
-                alt28 = 1
-            if alt28 == 1:
+            if (LA26_0 == u'+' or LA26_0 == u'-') :
+                alt26 = 1
+            if alt26 == 1:
                 # C.g:
                 if self.input.LA(1) == u'+' or self.input.LA(1) == u'-':
                     self.input.consume();
@@ -3094,30 +3021,30 @@ class CLexer(Lexer):
 
 
 
-            # C.g:542:33: ( '0' .. '9' )+
-            cnt29 = 0
-            while True: #loop29
-                alt29 = 2
-                LA29_0 = self.input.LA(1)
+            # C.g:545:33: ( '0' .. '9' )+
+            cnt27 = 0
+            while True: #loop27
+                alt27 = 2
+                LA27_0 = self.input.LA(1)
 
-                if ((u'0' <= LA29_0 <= u'9')) :
-                    alt29 = 1
+                if ((u'0' <= LA27_0 <= u'9')) :
+                    alt27 = 1
 
 
-                if alt29 == 1:
-                    # C.g:542:34: '0' .. '9'
+                if alt27 == 1:
+                    # C.g:545:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
 
                 else:
-                    if cnt29 >= 1:
-                        break #loop29
+                    if cnt27 >= 1:
+                        break #loop27
 
-                    eee = EarlyExitException(29, self.input)
+                    eee = EarlyExitException(27, self.input)
                     raise eee
 
-                cnt29 += 1
+                cnt27 += 1
 
 
 
@@ -3136,8 +3063,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:545:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:545:19: ( 'f' | 'F' | 'd' | 'D' )
+            # C.g:548:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            # C.g:548:19: ( 'f' | 'F' | 'd' | 'D' )
             if self.input.LA(1) == u'D' or self.input.LA(1) == u'F' or self.input.LA(1) == u'd' or self.input.LA(1) == u'f':
                 self.input.consume();
 
@@ -3163,29 +3090,29 @@ class CLexer(Lexer):
     def mEscapeSequence(self, ):
 
         try:
-            # C.g:549:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
-            alt30 = 2
-            LA30_0 = self.input.LA(1)
+            # C.g:552:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
+            alt28 = 2
+            LA28_0 = self.input.LA(1)
 
-            if (LA30_0 == u'\\') :
-                LA30_1 = self.input.LA(2)
+            if (LA28_0 == u'\\') :
+                LA28_1 = self.input.LA(2)
 
-                if (LA30_1 == u'"' or LA30_1 == u'\'' or LA30_1 == u'\\' or LA30_1 == u'b' or LA30_1 == u'f' or LA30_1 == u'n' or LA30_1 == u'r' or LA30_1 == u't') :
-                    alt30 = 1
-                elif ((u'0' <= LA30_1 <= u'7')) :
-                    alt30 = 2
+                if (LA28_1 == u'"' or LA28_1 == u'\'' or LA28_1 == u'\\' or LA28_1 == u'b' or LA28_1 == u'f' or LA28_1 == u'n' or LA28_1 == u'r' or LA28_1 == u't') :
+                    alt28 = 1
+                elif ((u'0' <= LA28_1 <= u'7')) :
+                    alt28 = 2
                 else:
-                    nvae = NoViableAltException("547:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 30, 1, self.input)
+                    nvae = NoViableAltException("550:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("547:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 30, 0, self.input)
+                nvae = NoViableAltException("550:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 0, self.input)
 
                 raise nvae
 
-            if alt30 == 1:
-                # C.g:549:8: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+            if alt28 == 1:
+                # C.g:552:8: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                 self.match(u'\\')
 
                 if self.input.LA(1) == u'"' or self.input.LA(1) == u'\'' or self.input.LA(1) == u'\\' or self.input.LA(1) == u'b' or self.input.LA(1) == u'f' or self.input.LA(1) == u'n' or self.input.LA(1) == u'r' or self.input.LA(1) == u't':
@@ -3199,8 +3126,8 @@ class CLexer(Lexer):
 
 
 
-            elif alt30 == 2:
-                # C.g:550:9: OctalEscape
+            elif alt28 == 2:
+                # C.g:553:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -3218,62 +3145,62 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:555:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
-            alt31 = 3
-            LA31_0 = self.input.LA(1)
+            # C.g:558:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            alt29 = 3
+            LA29_0 = self.input.LA(1)
 
-            if (LA31_0 == u'\\') :
-                LA31_1 = self.input.LA(2)
+            if (LA29_0 == u'\\') :
+                LA29_1 = self.input.LA(2)
 
-                if ((u'0' <= LA31_1 <= u'3')) :
-                    LA31_2 = self.input.LA(3)
+                if ((u'0' <= LA29_1 <= u'3')) :
+                    LA29_2 = self.input.LA(3)
 
-                    if ((u'0' <= LA31_2 <= u'7')) :
-                        LA31_4 = self.input.LA(4)
+                    if ((u'0' <= LA29_2 <= u'7')) :
+                        LA29_5 = self.input.LA(4)
 
-                        if ((u'0' <= LA31_4 <= u'7')) :
-                            alt31 = 1
+                        if ((u'0' <= LA29_5 <= u'7')) :
+                            alt29 = 1
                         else:
-                            alt31 = 2
+                            alt29 = 2
                     else:
-                        alt31 = 3
-                elif ((u'4' <= LA31_1 <= u'7')) :
-                    LA31_3 = self.input.LA(3)
+                        alt29 = 3
+                elif ((u'4' <= LA29_1 <= u'7')) :
+                    LA29_3 = self.input.LA(3)
 
-                    if ((u'0' <= LA31_3 <= u'7')) :
-                        alt31 = 2
+                    if ((u'0' <= LA29_3 <= u'7')) :
+                        alt29 = 2
                     else:
-                        alt31 = 3
+                        alt29 = 3
                 else:
-                    nvae = NoViableAltException("553:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 31, 1, self.input)
+                    nvae = NoViableAltException("556:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("553:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 31, 0, self.input)
+                nvae = NoViableAltException("556:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 0, self.input)
 
                 raise nvae
 
-            if alt31 == 1:
-                # C.g:555:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+            if alt29 == 1:
+                # C.g:558:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:555:14: ( '0' .. '3' )
-                # C.g:555:15: '0' .. '3'
+                # C.g:558:14: ( '0' .. '3' )
+                # C.g:558:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:555:25: ( '0' .. '7' )
-                # C.g:555:26: '0' .. '7'
+                # C.g:558:25: ( '0' .. '7' )
+                # C.g:558:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:555:36: ( '0' .. '7' )
-                # C.g:555:37: '0' .. '7'
+                # C.g:558:36: ( '0' .. '7' )
+                # C.g:558:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3281,19 +3208,19 @@ class CLexer(Lexer):
 
 
 
-            elif alt31 == 2:
-                # C.g:556:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+            elif alt29 == 2:
+                # C.g:559:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:556:14: ( '0' .. '7' )
-                # C.g:556:15: '0' .. '7'
+                # C.g:559:14: ( '0' .. '7' )
+                # C.g:559:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:556:25: ( '0' .. '7' )
-                # C.g:556:26: '0' .. '7'
+                # C.g:559:25: ( '0' .. '7' )
+                # C.g:559:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3301,12 +3228,12 @@ class CLexer(Lexer):
 
 
 
-            elif alt31 == 3:
-                # C.g:557:9: '\\\\' ( '0' .. '7' )
+            elif alt29 == 3:
+                # C.g:560:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:557:14: ( '0' .. '7' )
-                # C.g:557:15: '0' .. '7'
+                # C.g:560:14: ( '0' .. '7' )
+                # C.g:560:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3327,8 +3254,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:562:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:562:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            # C.g:565:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            # C.g:565:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             self.match(u'\\')
 
             self.match(u'u')
@@ -3359,8 +3286,8 @@ class CLexer(Lexer):
         try:
             self.type = WS
 
-            # C.g:565:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:565:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            # C.g:568:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            # C.g:568:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
             if (u'\t' <= self.input.LA(1) <= u'\n') or (u'\f' <= self.input.LA(1) <= u'\r') or self.input.LA(1) == u' ':
                 self.input.consume();
 
@@ -3391,10 +3318,10 @@ class CLexer(Lexer):
         try:
             self.type = BS
 
-            # C.g:569:5: ( ( '\\\\' ) )
-            # C.g:569:7: ( '\\\\' )
-            # C.g:569:7: ( '\\\\' )
-            # C.g:569:8: '\\\\'
+            # C.g:572:5: ( ( '\\\\' ) )
+            # C.g:572:7: ( '\\\\' )
+            # C.g:572:7: ( '\\\\' )
+            # C.g:572:8: '\\\\'
             self.match(u'\\')
 
 
@@ -3421,8 +3348,8 @@ class CLexer(Lexer):
         try:
             self.type = UnicodeVocabulary
 
-            # C.g:577:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:577:7: '\\u0003' .. '\\uFFFE'
+            # C.g:580:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:580:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3443,37 +3370,37 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:580:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:580:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:583:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:583:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:580:14: ( options {greedy=false; } : . )*
-            while True: #loop32
-                alt32 = 2
-                LA32_0 = self.input.LA(1)
+            # C.g:583:14: ( options {greedy=false; } : . )*
+            while True: #loop30
+                alt30 = 2
+                LA30_0 = self.input.LA(1)
 
-                if (LA32_0 == u'*') :
-                    LA32_1 = self.input.LA(2)
+                if (LA30_0 == u'*') :
+                    LA30_1 = self.input.LA(2)
 
-                    if (LA32_1 == u'/') :
-                        alt32 = 2
-                    elif ((u'\u0000' <= LA32_1 <= u'.') or (u'0' <= LA32_1 <= u'\uFFFE')) :
-                        alt32 = 1
+                    if (LA30_1 == u'/') :
+                        alt30 = 2
+                    elif ((u'\u0000' <= LA30_1 <= u'.') or (u'0' <= LA30_1 <= u'\uFFFE')) :
+                        alt30 = 1
 
 
-                elif ((u'\u0000' <= LA32_0 <= u')') or (u'+' <= LA32_0 <= u'\uFFFE')) :
-                    alt32 = 1
+                elif ((u'\u0000' <= LA30_0 <= u')') or (u'+' <= LA30_0 <= u'\uFFFE')) :
+                    alt30 = 1
 
 
-                if alt32 == 1:
-                    # C.g:580:42: .
+                if alt30 == 1:
+                    # C.g:583:42: .
                     self.matchAny()
 
 
 
                 else:
-                    break #loop32
+                    break #loop30
 
 
             self.match("*/")
@@ -3500,22 +3427,22 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:585:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:585:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:588:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:588:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match("//")
 
 
-            # C.g:585:12: (~ ( '\\n' | '\\r' ) )*
-            while True: #loop33
-                alt33 = 2
-                LA33_0 = self.input.LA(1)
+            # C.g:588:12: (~ ( '\\n' | '\\r' ) )*
+            while True: #loop31
+                alt31 = 2
+                LA31_0 = self.input.LA(1)
 
-                if ((u'\u0000' <= LA33_0 <= u'\t') or (u'\u000B' <= LA33_0 <= u'\f') or (u'\u000E' <= LA33_0 <= u'\uFFFE')) :
-                    alt33 = 1
+                if ((u'\u0000' <= LA31_0 <= u'\t') or (u'\u000B' <= LA31_0 <= u'\f') or (u'\u000E' <= LA31_0 <= u'\uFFFE')) :
+                    alt31 = 1
 
 
-                if alt33 == 1:
-                    # C.g:585:12: ~ ( '\\n' | '\\r' )
+                if alt31 == 1:
+                    # C.g:588:12: ~ ( '\\n' | '\\r' )
                     if (u'\u0000' <= self.input.LA(1) <= u'\t') or (u'\u000B' <= self.input.LA(1) <= u'\f') or (u'\u000E' <= self.input.LA(1) <= u'\uFFFE'):
                         self.input.consume();
 
@@ -3528,17 +3455,17 @@ class CLexer(Lexer):
 
 
                 else:
-                    break #loop33
+                    break #loop31
 
 
-            # C.g:585:26: ( '\\r' )?
-            alt34 = 2
-            LA34_0 = self.input.LA(1)
+            # C.g:588:26: ( '\\r' )?
+            alt32 = 2
+            LA32_0 = self.input.LA(1)
 
-            if (LA34_0 == u'\r') :
-                alt34 = 1
-            if alt34 == 1:
-                # C.g:585:26: '\\r'
+            if (LA32_0 == u'\r') :
+                alt32 = 1
+            if alt32 == 1:
+                # C.g:588:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3567,21 +3494,21 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:590:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:590:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:593:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:593:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match(u'#')
 
-            # C.g:590:11: (~ ( '\\n' | '\\r' ) )*
-            while True: #loop35
-                alt35 = 2
-                LA35_0 = self.input.LA(1)
+            # C.g:593:11: (~ ( '\\n' | '\\r' ) )*
+            while True: #loop33
+                alt33 = 2
+                LA33_0 = self.input.LA(1)
 
-                if ((u'\u0000' <= LA35_0 <= u'\t') or (u'\u000B' <= LA35_0 <= u'\f') or (u'\u000E' <= LA35_0 <= u'\uFFFE')) :
-                    alt35 = 1
+                if ((u'\u0000' <= LA33_0 <= u'\t') or (u'\u000B' <= LA33_0 <= u'\f') or (u'\u000E' <= LA33_0 <= u'\uFFFE')) :
+                    alt33 = 1
 
 
-                if alt35 == 1:
-                    # C.g:590:11: ~ ( '\\n' | '\\r' )
+                if alt33 == 1:
+                    # C.g:593:11: ~ ( '\\n' | '\\r' )
                     if (u'\u0000' <= self.input.LA(1) <= u'\t') or (u'\u000B' <= self.input.LA(1) <= u'\f') or (u'\u000E' <= self.input.LA(1) <= u'\uFFFE'):
                         self.input.consume();
 
@@ -3594,17 +3521,17 @@ class CLexer(Lexer):
 
 
                 else:
-                    break #loop35
+                    break #loop33
 
 
-            # C.g:590:25: ( '\\r' )?
-            alt36 = 2
-            LA36_0 = self.input.LA(1)
+            # C.g:593:25: ( '\\r' )?
+            alt34 = 2
+            LA34_0 = self.input.LA(1)
 
-            if (LA36_0 == u'\r') :
-                alt36 = 1
-            if alt36 == 1:
-                # C.g:590:25: '\\r'
+            if (LA34_0 == u'\r') :
+                alt34 = 1
+            if alt34 == 1:
+                # C.g:593:25: '\\r'
                 self.match(u'\r')
 
 
@@ -3628,635 +3555,617 @@ class CLexer(Lexer):
 
 
     def mTokens(self):
-        # C.g:1:8: ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | T114 | T115 | T116 | IDENTIFIER | CHARACTER_LITERAL | STRING_LITERAL | HEX_LITERAL | DECIMAL_LITERAL | OCTAL_LITERAL | FLOATING_POINT_LITERAL | WS | BS | UnicodeVocabulary | COMMENT | LINE_COMMENT | LINE_COMMAND )
-        alt37 = 105
-        alt37 = self.dfa37.predict(self.input)
-        if alt37 == 1:
+        # C.g:1:8: ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | IDENTIFIER | CHARACTER_LITERAL | STRING_LITERAL | HEX_LITERAL | DECIMAL_LITERAL | OCTAL_LITERAL | FLOATING_POINT_LITERAL | WS | BS | UnicodeVocabulary | COMMENT | LINE_COMMENT | LINE_COMMAND )
+        alt35 = 102
+        alt35 = self.dfa35.predict(self.input)
+        if alt35 == 1:
             # C.g:1:10: T25
             self.mT25()
 
 
 
-        elif alt37 == 2:
+        elif alt35 == 2:
             # C.g:1:14: T26
             self.mT26()
 
 
 
-        elif alt37 == 3:
+        elif alt35 == 3:
             # C.g:1:18: T27
             self.mT27()
 
 
 
-        elif alt37 == 4:
+        elif alt35 == 4:
             # C.g:1:22: T28
             self.mT28()
 
 
 
-        elif alt37 == 5:
+        elif alt35 == 5:
             # C.g:1:26: T29
             self.mT29()
 
 
 
-        elif alt37 == 6:
+        elif alt35 == 6:
             # C.g:1:30: T30
             self.mT30()
 
 
 
-        elif alt37 == 7:
+        elif alt35 == 7:
             # C.g:1:34: T31
             self.mT31()
 
 
 
-        elif alt37 == 8:
+        elif alt35 == 8:
             # C.g:1:38: T32
             self.mT32()
 
 
 
-        elif alt37 == 9:
+        elif alt35 == 9:
             # C.g:1:42: T33
             self.mT33()
 
 
 
-        elif alt37 == 10:
+        elif alt35 == 10:
             # C.g:1:46: T34
             self.mT34()
 
 
 
-        elif alt37 == 11:
+        elif alt35 == 11:
             # C.g:1:50: T35
             self.mT35()
 
 
 
-        elif alt37 == 12:
+        elif alt35 == 12:
             # C.g:1:54: T36
             self.mT36()
 
 
 
-        elif alt37 == 13:
+        elif alt35 == 13:
             # C.g:1:58: T37
             self.mT37()
 
 
 
-        elif alt37 == 14:
+        elif alt35 == 14:
             # C.g:1:62: T38
             self.mT38()
 
 
 
-        elif alt37 == 15:
+        elif alt35 == 15:
             # C.g:1:66: T39
             self.mT39()
 
 
 
-        elif alt37 == 16:
+        elif alt35 == 16:
             # C.g:1:70: T40
             self.mT40()
 
 
 
-        elif alt37 == 17:
+        elif alt35 == 17:
             # C.g:1:74: T41
             self.mT41()
 
 
 
-        elif alt37 == 18:
+        elif alt35 == 18:
             # C.g:1:78: T42
             self.mT42()
 
 
 
-        elif alt37 == 19:
+        elif alt35 == 19:
             # C.g:1:82: T43
             self.mT43()
 
 
 
-        elif alt37 == 20:
+        elif alt35 == 20:
             # C.g:1:86: T44
             self.mT44()
 
 
 
-        elif alt37 == 21:
+        elif alt35 == 21:
             # C.g:1:90: T45
             self.mT45()
 
 
 
-        elif alt37 == 22:
+        elif alt35 == 22:
             # C.g:1:94: T46
             self.mT46()
 
 
 
-        elif alt37 == 23:
+        elif alt35 == 23:
             # C.g:1:98: T47
             self.mT47()
 
 
 
-        elif alt37 == 24:
+        elif alt35 == 24:
             # C.g:1:102: T48
             self.mT48()
 
 
 
-        elif alt37 == 25:
+        elif alt35 == 25:
             # C.g:1:106: T49
             self.mT49()
 
 
 
-        elif alt37 == 26:
+        elif alt35 == 26:
             # C.g:1:110: T50
             self.mT50()
 
 
 
-        elif alt37 == 27:
+        elif alt35 == 27:
             # C.g:1:114: T51
             self.mT51()
 
 
 
-        elif alt37 == 28:
+        elif alt35 == 28:
             # C.g:1:118: T52
             self.mT52()
 
 
 
-        elif alt37 == 29:
+        elif alt35 == 29:
             # C.g:1:122: T53
             self.mT53()
 
 
 
-        elif alt37 == 30:
+        elif alt35 == 30:
             # C.g:1:126: T54
             self.mT54()
 
 
 
-        elif alt37 == 31:
+        elif alt35 == 31:
             # C.g:1:130: T55
             self.mT55()
 
 
 
-        elif alt37 == 32:
+        elif alt35 == 32:
             # C.g:1:134: T56
             self.mT56()
 
 
 
-        elif alt37 == 33:
+        elif alt35 == 33:
             # C.g:1:138: T57
             self.mT57()
 
 
 
-        elif alt37 == 34:
+        elif alt35 == 34:
             # C.g:1:142: T58
             self.mT58()
 
 
 
-        elif alt37 == 35:
+        elif alt35 == 35:
             # C.g:1:146: T59
             self.mT59()
 
 
 
-        elif alt37 == 36:
+        elif alt35 == 36:
             # C.g:1:150: T60
             self.mT60()
 
 
 
-        elif alt37 == 37:
+        elif alt35 == 37:
             # C.g:1:154: T61
             self.mT61()
 
 
 
-        elif alt37 == 38:
+        elif alt35 == 38:
             # C.g:1:158: T62
             self.mT62()
 
 
 
-        elif alt37 == 39:
+        elif alt35 == 39:
             # C.g:1:162: T63
             self.mT63()
 
 
 
-        elif alt37 == 40:
+        elif alt35 == 40:
             # C.g:1:166: T64
             self.mT64()
 
 
 
-        elif alt37 == 41:
+        elif alt35 == 41:
             # C.g:1:170: T65
             self.mT65()
 
 
 
-        elif alt37 == 42:
+        elif alt35 == 42:
             # C.g:1:174: T66
             self.mT66()
 
 
 
-        elif alt37 == 43:
+        elif alt35 == 43:
             # C.g:1:178: T67
             self.mT67()
 
 
 
-        elif alt37 == 44:
+        elif alt35 == 44:
             # C.g:1:182: T68
             self.mT68()
 
 
 
-        elif alt37 == 45:
+        elif alt35 == 45:
             # C.g:1:186: T69
             self.mT69()
 
 
 
-        elif alt37 == 46:
+        elif alt35 == 46:
             # C.g:1:190: T70
             self.mT70()
 
 
 
-        elif alt37 == 47:
+        elif alt35 == 47:
             # C.g:1:194: T71
             self.mT71()
 
 
 
-        elif alt37 == 48:
+        elif alt35 == 48:
             # C.g:1:198: T72
             self.mT72()
 
 
 
-        elif alt37 == 49:
+        elif alt35 == 49:
             # C.g:1:202: T73
             self.mT73()
 
 
 
-        elif alt37 == 50:
+        elif alt35 == 50:
             # C.g:1:206: T74
             self.mT74()
 
 
 
-        elif alt37 == 51:
+        elif alt35 == 51:
             # C.g:1:210: T75
             self.mT75()
 
 
 
-        elif alt37 == 52:
+        elif alt35 == 52:
             # C.g:1:214: T76
             self.mT76()
 
 
 
-        elif alt37 == 53:
+        elif alt35 == 53:
             # C.g:1:218: T77
             self.mT77()
 
 
 
-        elif alt37 == 54:
+        elif alt35 == 54:
             # C.g:1:222: T78
             self.mT78()
 
 
 
-        elif alt37 == 55:
+        elif alt35 == 55:
             # C.g:1:226: T79
             self.mT79()
 
 
 
-        elif alt37 == 56:
+        elif alt35 == 56:
             # C.g:1:230: T80
             self.mT80()
 
 
 
-        elif alt37 == 57:
+        elif alt35 == 57:
             # C.g:1:234: T81
             self.mT81()
 
 
 
-        elif alt37 == 58:
+        elif alt35 == 58:
             # C.g:1:238: T82
             self.mT82()
 
 
 
-        elif alt37 == 59:
+        elif alt35 == 59:
             # C.g:1:242: T83
             self.mT83()
 
 
 
-        elif alt37 == 60:
+        elif alt35 == 60:
             # C.g:1:246: T84
             self.mT84()
 
 
 
-        elif alt37 == 61:
+        elif alt35 == 61:
             # C.g:1:250: T85
             self.mT85()
 
 
 
-        elif alt37 == 62:
+        elif alt35 == 62:
             # C.g:1:254: T86
             self.mT86()
 
 
 
-        elif alt37 == 63:
+        elif alt35 == 63:
             # C.g:1:258: T87
             self.mT87()
 
 
 
-        elif alt37 == 64:
+        elif alt35 == 64:
             # C.g:1:262: T88
             self.mT88()
 
 
 
-        elif alt37 == 65:
+        elif alt35 == 65:
             # C.g:1:266: T89
             self.mT89()
 
 
 
-        elif alt37 == 66:
+        elif alt35 == 66:
             # C.g:1:270: T90
             self.mT90()
 
 
 
-        elif alt37 == 67:
+        elif alt35 == 67:
             # C.g:1:274: T91
             self.mT91()
 
 
 
-        elif alt37 == 68:
+        elif alt35 == 68:
             # C.g:1:278: T92
             self.mT92()
 
 
 
-        elif alt37 == 69:
+        elif alt35 == 69:
             # C.g:1:282: T93
             self.mT93()
 
 
 
-        elif alt37 == 70:
+        elif alt35 == 70:
             # C.g:1:286: T94
             self.mT94()
 
 
 
-        elif alt37 == 71:
+        elif alt35 == 71:
             # C.g:1:290: T95
             self.mT95()
 
 
 
-        elif alt37 == 72:
+        elif alt35 == 72:
             # C.g:1:294: T96
             self.mT96()
 
 
 
-        elif alt37 == 73:
+        elif alt35 == 73:
             # C.g:1:298: T97
             self.mT97()
 
 
 
-        elif alt37 == 74:
+        elif alt35 == 74:
             # C.g:1:302: T98
             self.mT98()
 
 
 
-        elif alt37 == 75:
+        elif alt35 == 75:
             # C.g:1:306: T99
             self.mT99()
 
 
 
-        elif alt37 == 76:
+        elif alt35 == 76:
             # C.g:1:310: T100
             self.mT100()
 
 
 
-        elif alt37 == 77:
+        elif alt35 == 77:
             # C.g:1:315: T101
             self.mT101()
 
 
 
-        elif alt37 == 78:
+        elif alt35 == 78:
             # C.g:1:320: T102
             self.mT102()
 
 
 
-        elif alt37 == 79:
+        elif alt35 == 79:
             # C.g:1:325: T103
             self.mT103()
 
 
 
-        elif alt37 == 80:
+        elif alt35 == 80:
             # C.g:1:330: T104
             self.mT104()
 
 
 
-        elif alt37 == 81:
+        elif alt35 == 81:
             # C.g:1:335: T105
             self.mT105()
 
 
 
-        elif alt37 == 82:
+        elif alt35 == 82:
             # C.g:1:340: T106
             self.mT106()
 
 
 
-        elif alt37 == 83:
+        elif alt35 == 83:
             # C.g:1:345: T107
             self.mT107()
 
 
 
-        elif alt37 == 84:
+        elif alt35 == 84:
             # C.g:1:350: T108
             self.mT108()
 
 
 
-        elif alt37 == 85:
+        elif alt35 == 85:
             # C.g:1:355: T109
             self.mT109()
 
 
 
-        elif alt37 == 86:
+        elif alt35 == 86:
             # C.g:1:360: T110
             self.mT110()
 
 
 
-        elif alt37 == 87:
+        elif alt35 == 87:
             # C.g:1:365: T111
             self.mT111()
 
 
 
-        elif alt37 == 88:
+        elif alt35 == 88:
             # C.g:1:370: T112
             self.mT112()
 
 
 
-        elif alt37 == 89:
+        elif alt35 == 89:
             # C.g:1:375: T113
             self.mT113()
 
 
 
-        elif alt37 == 90:
-            # C.g:1:380: T114
-            self.mT114()
-
-
-
-        elif alt37 == 91:
-            # C.g:1:385: T115
-            self.mT115()
-
-
-
-        elif alt37 == 92:
-            # C.g:1:390: T116
-            self.mT116()
-
-
-
-        elif alt37 == 93:
-            # C.g:1:395: IDENTIFIER
+        elif alt35 == 90:
+            # C.g:1:380: IDENTIFIER
             self.mIDENTIFIER()
 
 
 
-        elif alt37 == 94:
-            # C.g:1:406: CHARACTER_LITERAL
+        elif alt35 == 91:
+            # C.g:1:391: CHARACTER_LITERAL
             self.mCHARACTER_LITERAL()
 
 
 
-        elif alt37 == 95:
-            # C.g:1:424: STRING_LITERAL
+        elif alt35 == 92:
+            # C.g:1:409: STRING_LITERAL
             self.mSTRING_LITERAL()
 
 
 
-        elif alt37 == 96:
-            # C.g:1:439: HEX_LITERAL
+        elif alt35 == 93:
+            # C.g:1:424: HEX_LITERAL
             self.mHEX_LITERAL()
 
 
 
-        elif alt37 == 97:
-            # C.g:1:451: DECIMAL_LITERAL
+        elif alt35 == 94:
+            # C.g:1:436: DECIMAL_LITERAL
             self.mDECIMAL_LITERAL()
 
 
 
-        elif alt37 == 98:
-            # C.g:1:467: OCTAL_LITERAL
+        elif alt35 == 95:
+            # C.g:1:452: OCTAL_LITERAL
             self.mOCTAL_LITERAL()
 
 
 
-        elif alt37 == 99:
-            # C.g:1:481: FLOATING_POINT_LITERAL
+        elif alt35 == 96:
+            # C.g:1:466: FLOATING_POINT_LITERAL
             self.mFLOATING_POINT_LITERAL()
 
 
 
-        elif alt37 == 100:
-            # C.g:1:504: WS
+        elif alt35 == 97:
+            # C.g:1:489: WS
             self.mWS()
 
 
 
-        elif alt37 == 101:
-            # C.g:1:507: BS
+        elif alt35 == 98:
+            # C.g:1:492: BS
             self.mBS()
 
 
 
-        elif alt37 == 102:
-            # C.g:1:510: UnicodeVocabulary
+        elif alt35 == 99:
+            # C.g:1:495: UnicodeVocabulary
             self.mUnicodeVocabulary()
 
 
 
-        elif alt37 == 103:
-            # C.g:1:528: COMMENT
+        elif alt35 == 100:
+            # C.g:1:513: COMMENT
             self.mCOMMENT()
 
 
 
-        elif alt37 == 104:
-            # C.g:1:536: LINE_COMMENT
+        elif alt35 == 101:
+            # C.g:1:521: LINE_COMMENT
             self.mLINE_COMMENT()
 
 
 
-        elif alt37 == 105:
-            # C.g:1:549: LINE_COMMAND
+        elif alt35 == 102:
+            # C.g:1:534: LINE_COMMAND
             self.mLINE_COMMAND()
 
 
@@ -4266,34 +4175,34 @@ class CLexer(Lexer):
 
 
 
-    # lookup tables for DFA #27
+    # lookup tables for DFA #25
 
-    DFA27_eot = DFA.unpack(
+    DFA25_eot = DFA.unpack(
         u"\7\uffff\1\10\2\uffff"
         )
 
-    DFA27_eof = DFA.unpack(
+    DFA25_eof = DFA.unpack(
         u"\12\uffff"
         )
 
-    DFA27_min = DFA.unpack(
+    DFA25_min = DFA.unpack(
         u"\2\56\1\uffff\1\53\2\uffff\2\60\2\uffff"
         )
 
-    DFA27_max = DFA.unpack(
+    DFA25_max = DFA.unpack(
         u"\1\71\1\146\1\uffff\1\71\2\uffff\1\71\1\146\2\uffff"
         )
 
-    DFA27_accept = DFA.unpack(
+    DFA25_accept = DFA.unpack(
         u"\2\uffff\1\2\1\uffff\1\4\1\1\2\uffff\2\3"
         )
 
-    DFA27_special = DFA.unpack(
+    DFA25_special = DFA.unpack(
         u"\12\uffff"
         )
 
             
-    DFA27_transition = [
+    DFA25_transition = [
         DFA.unpack(u"\1\2\1\uffff\12\1"),
         DFA.unpack(u"\1\5\1\uffff\12\1\12\uffff\1\4\1\3\1\4\35\uffff\1\4"
         u"\1\3\1\4"),
@@ -4308,206 +4217,209 @@ class CLexer(Lexer):
         DFA.unpack(u"")
     ]
 
-    # class definition for DFA #27
-
-    DFA27 = DFA
-    # lookup tables for DFA #37
-
-    DFA37_eot = DFA.unpack(
-        u"\2\uffff\1\74\1\uffff\1\77\17\74\3\uffff\4\74\4\uffff\1\147\1\151"
-        u"\1\155\1\161\1\165\1\167\1\172\1\uffff\1\175\1\u0080\1\u0083\1"
-        u"\u0085\1\u0088\1\uffff\4\74\1\uffff\2\71\2\u0091\2\uffff\1\71\2"
-        u"\uffff\1\74\4\uffff\16\74\1\u00a9\5\74\1\u00b0\5\74\3\uffff\1\u00b8"
-        u"\4\74\34\uffff\1\u00be\2\uffff\1\u00c0\10\uffff\3\74\3\uffff\1"
-        u"\u00c4\1\uffff\1\u0091\3\uffff\23\74\1\uffff\1\u00d9\1\74\1\u00db"
-        u"\3\74\1\uffff\7\74\1\uffff\1\u00e6\3\74\4\uffff\3\74\1\uffff\1"
-        u"\74\1\u00ef\1\74\1\u00f1\6\74\1\u00f8\4\74\1\u00fd\2\74\1\u0100"
-        u"\1\u0101\1\uffff\1\u0102\1\uffff\10\74\1\u010c\1\74\1\uffff\5\74"
-        u"\1\u0114\2\74\1\uffff\1\74\1\uffff\4\74\1\u011c\1\74\1\uffff\4"
-        u"\74\1\uffff\1\u0122\1\74\3\uffff\1\u0124\3\74\1\u0128\1\74\1\u012a"
-        u"\1\u012b\1\74\1\uffff\6\74\1\u0133\1\uffff\1\u0134\1\74\1\u0136"
-        u"\1\u0137\1\u0138\1\u0139\1\u013a\1\uffff\1\u013b\1\u013c\1\74\1"
-        u"\u013e\1\74\1\uffff\1\74\1\uffff\1\74\1\u0142\1\74\1\uffff\1\74"
-        u"\2\uffff\1\u0145\5\74\1\u014b\2\uffff\1\u014c\7\uffff\1\74\1\uffff"
-        u"\2\74\1\u0150\1\uffff\1\74\1\u0152\1\uffff\5\74\2\uffff\1\u0158"
-        u"\1\u0159\1\u015a\1\uffff\1\u015b\1\uffff\1\u015c\1\u015d\3\74\6"
-        u"\uffff\1\u0161\2\74\1\uffff\13\74\1\u016f\1\74\1\uffff\1\74\1\u0172"
-        u"\1\uffff"
+    # class definition for DFA #25
+
+    DFA25 = DFA
+    # lookup tables for DFA #35
+
+    DFA35_eot = DFA.unpack(
+        u"\2\uffff\1\74\1\uffff\1\77\14\74\3\uffff\7\74\4\uffff\1\146\1\151"
+        u"\1\154\1\160\1\164\1\166\1\171\1\uffff\1\174\1\177\1\u0082\1\u0084"
+        u"\1\u0087\1\uffff\4\74\1\uffff\2\71\2\u0090\2\uffff\1\71\2\uffff"
+        u"\1\74\4\uffff\17\74\1\u00a9\3\74\1\u00ae\2\74\3\uffff\1\u00b2\7"
+        u"\74\34\uffff\1\u00bb\2\uffff\1\u00bd\10\uffff\3\74\3\uffff\1\u00c1"
+        u"\1\uffff\1\u0090\3\uffff\23\74\1\u00d6\1\uffff\1\74\1\u00d8\2\74"
+        u"\1\uffff\3\74\1\uffff\1\u00de\6\74\4\uffff\3\74\1\uffff\1\74\1"
+        u"\u00ea\1\74\1\u00ec\6\74\1\u00f3\3\74\1\u00f7\1\74\1\u00f9\2\74"
+        u"\1\u00fc\1\uffff\1\u00fd\1\uffff\5\74\1\uffff\10\74\1\u010c\2\74"
+        u"\1\uffff\1\74\1\uffff\5\74\1\u0115\1\uffff\3\74\1\uffff\1\74\1"
+        u"\uffff\1\74\1\u011b\2\uffff\1\u011c\3\74\1\u0120\1\74\1\u0122\6"
+        u"\74\1\u0129\1\uffff\1\u012a\1\74\1\u012c\1\u012d\1\u012e\1\u012f"
+        u"\1\u0130\1\u0131\1\uffff\1\74\1\u0133\1\u0134\2\74\2\uffff\1\u0137"
+        u"\2\74\1\uffff\1\74\1\uffff\5\74\1\u0140\2\uffff\1\u0141\6\uffff"
+        u"\1\74\2\uffff\2\74\1\uffff\1\u0145\7\74\2\uffff\1\u014d\1\u014e"
+        u"\1\u014f\1\uffff\1\u0150\1\u0151\1\74\1\u0153\3\74\5\uffff\1\u0157"
+        u"\1\uffff\3\74\1\uffff\20\74\1\u016b\2\74\1\uffff\4\74\1\u0172\1"
+        u"\74\1\uffff\11\74\1\u017d\1\uffff"
         )
 
-    DFA37_eof = DFA.unpack(
-        u"\u0173\uffff"
+    DFA35_eof = DFA.unpack(
+        u"\u017e\uffff"
         )
 
-    DFA37_min = DFA.unpack(
+    DFA35_min = DFA.unpack(
         u"\1\3\1\uffff\1\171\1\uffff\1\75\1\154\1\150\1\165\1\145\1\124\1"
-        u"\157\1\141\1\146\1\157\1\154\1\145\1\156\1\117\1\110\1\117\3\uffff"
-        u"\1\116\1\120\1\116\1\106\4\uffff\1\75\1\56\1\53\1\55\1\52\1\75"
-        u"\1\46\1\uffff\1\75\1\74\3\75\1\uffff\1\150\1\157\1\162\1\42\1\uffff"
-        u"\2\0\2\56\2\uffff\1\0\2\uffff\1\160\4\uffff\1\165\1\164\1\163\1"
-        u"\147\1\141\1\157\1\151\1\164\1\147\1\101\1\151\1\156\1\141\1\163"
-        u"\1\44\1\164\1\156\1\162\1\157\1\146\1\44\1\151\1\117\1\116\1\101"
-        u"\1\111\3\uffff\1\44\2\124\1\101\1\111\34\uffff\1\75\2\uffff\1\75"
-        u"\10\uffff\1\151\1\164\1\145\3\uffff\1\56\1\uffff\1\56\3\uffff\1"
-        u"\145\1\155\2\145\1\156\1\145\1\165\1\164\1\162\1\164\1\157\1\165"
-        u"\1\151\1\124\1\141\1\144\1\163\1\162\1\145\1\uffff\1\44\1\147\1"
-        u"\44\2\141\1\142\1\uffff\1\151\1\157\1\114\1\123\1\122\1\104\1\101"
-        u"\1\uffff\1\44\1\111\1\114\1\101\4\uffff\1\154\1\157\1\141\1\uffff"
-        u"\1\144\1\44\1\162\1\44\1\145\1\157\1\143\1\151\1\164\1\143\1\44"
-        u"\1\162\1\163\1\111\1\164\1\44\1\164\1\151\2\44\1\uffff\1\44\1\uffff"
-        u"\1\164\1\165\1\154\1\147\1\156\1\105\1\124\1\61\1\44\1\124\1\uffff"
-        u"\1\117\1\111\1\102\1\120\1\145\1\44\1\153\1\145\1\uffff\1\156\1"
-        u"\uffff\1\144\1\146\1\164\1\143\1\44\1\150\1\uffff\1\156\1\164\1"
-        u"\103\1\151\1\uffff\1\44\1\156\3\uffff\1\44\1\154\1\145\1\156\1"
-        u"\44\1\101\2\44\1\66\1\uffff\1\111\1\116\1\107\1\125\1\117\1\111"
-        u"\1\44\1\uffff\1\44\1\146\5\44\1\uffff\2\44\1\145\1\44\1\154\1\uffff"
-        u"\1\165\1\uffff\1\164\1\44\1\145\1\uffff\1\116\2\uffff\1\44\1\114"
-        u"\1\101\2\116\1\117\1\44\2\uffff\1\44\7\uffff\1\162\1\uffff\2\145"
-        u"\1\44\1\uffff\1\144\1\44\1\uffff\1\105\1\114\1\105\2\124\2\uffff"
-        u"\3\44\1\uffff\1\44\1\uffff\2\44\1\104\1\111\1\123\6\uffff\1\44"
-        u"\1\115\1\105\1\uffff\1\105\1\122\1\123\1\126\1\105\1\111\1\122"
-        u"\1\103\1\126\1\105\1\111\1\44\1\103\1\uffff\1\105\1\44\1\uffff"
+        u"\157\1\141\1\146\1\157\1\154\1\145\1\156\3\uffff\1\116\1\120\1"
+        u"\117\1\116\1\117\1\114\1\106\4\uffff\1\75\1\56\1\53\1\55\1\52\1"
+        u"\75\1\46\1\uffff\1\75\1\74\3\75\1\uffff\1\150\1\157\1\162\1\42"
+        u"\1\uffff\2\0\2\56\2\uffff\1\0\2\uffff\1\160\4\uffff\1\165\1\164"
+        u"\1\163\1\151\1\147\1\141\1\157\1\164\1\147\1\101\1\151\1\141\1"
+        u"\156\1\163\1\164\1\44\1\156\1\162\1\157\1\44\1\146\1\151\3\uffff"
+        u"\1\44\2\124\1\116\1\101\1\114\1\117\1\111\34\uffff\1\75\2\uffff"
+        u"\1\75\10\uffff\1\151\1\164\1\145\3\uffff\1\56\1\uffff\1\56\3\uffff"
+        u"\1\145\1\155\2\145\1\164\1\145\1\156\1\165\1\164\1\162\1\157\1"
+        u"\151\1\165\1\124\1\144\1\141\1\162\1\163\1\145\1\44\1\uffff\1\147"
+        u"\1\44\1\141\1\142\1\uffff\1\141\1\151\1\157\1\uffff\1\44\1\111"
+        u"\1\123\1\114\1\101\1\102\1\101\4\uffff\1\154\1\157\1\141\1\uffff"
+        u"\1\144\1\44\1\162\1\44\1\143\1\157\1\145\1\143\1\151\1\164\1\44"
+        u"\1\163\1\162\1\111\1\44\1\164\1\44\1\151\1\164\1\44\1\uffff\1\44"
+        u"\1\uffff\1\164\1\154\1\165\1\147\1\156\1\uffff\1\117\1\124\1\111"
+        u"\1\124\1\101\1\102\1\120\1\145\1\44\1\153\1\145\1\uffff\1\156\1"
+        u"\uffff\1\150\1\146\1\144\1\164\1\143\1\44\1\uffff\1\164\1\156\1"
+        u"\103\1\uffff\1\151\1\uffff\1\156\1\44\2\uffff\1\44\1\145\1\154"
+        u"\1\156\1\44\1\116\1\44\1\107\1\111\1\114\1\117\1\125\1\111\1\44"
+        u"\1\uffff\1\44\1\146\6\44\1\uffff\1\145\2\44\1\154\1\165\2\uffff"
+        u"\1\44\1\164\1\145\1\uffff\1\101\1\uffff\1\116\1\114\1\137\1\117"
+        u"\1\116\1\44\2\uffff\1\44\6\uffff\1\162\2\uffff\2\145\1\uffff\1"
+        u"\44\1\144\1\114\2\105\1\122\2\124\2\uffff\3\44\1\uffff\2\44\1\104"
+        u"\1\44\1\105\1\123\1\111\5\uffff\1\44\1\uffff\1\115\1\105\1\115"
+        u"\1\uffff\1\117\1\122\1\105\2\126\1\123\1\105\1\111\1\105\1\137"
+        u"\1\103\1\122\1\111\1\105\1\126\1\106\1\44\1\111\1\137\1\uffff\1"
+        u"\103\1\125\1\105\1\116\1\44\1\122\1\uffff\1\105\1\106\1\105\1\122"
+        u"\1\105\1\116\1\103\1\105\1\104\1\44\1\uffff"
         )
 
-    DFA37_max = DFA.unpack(
+    DFA35_max = DFA.unpack(
         u"\1\ufffe\1\uffff\1\171\1\uffff\1\75\1\170\1\167\1\165\1\145\1\124"
-        u"\2\157\1\156\3\157\1\156\3\117\3\uffff\1\116\1\125\1\116\1\106"
-        u"\4\uffff\1\75\1\71\1\75\1\76\3\75\1\uffff\2\75\1\76\1\75\1\174"
-        u"\1\uffff\1\150\1\157\1\162\1\47\1\uffff\2\ufffe\1\170\1\146\2\uffff"
-        u"\1\ufffe\2\uffff\1\160\4\uffff\1\165\1\164\1\163\1\172\1\162\1"
-        u"\157\1\151\2\164\1\101\1\154\1\156\1\141\1\163\1\172\1\164\1\156"
-        u"\1\162\1\157\1\146\1\172\1\163\1\117\1\116\1\101\1\114\3\uffff"
-        u"\1\172\2\124\1\101\1\111\34\uffff\1\75\2\uffff\1\75\10\uffff\1"
-        u"\151\1\164\1\145\3\uffff\1\146\1\uffff\1\146\3\uffff\1\145\1\155"
-        u"\2\145\1\156\1\145\1\165\1\164\1\162\1\164\1\157\1\165\1\151\1"
-        u"\124\1\141\1\144\1\164\1\162\1\145\1\uffff\1\172\1\147\1\172\2"
-        u"\141\1\142\1\uffff\1\151\1\157\1\114\1\123\1\122\1\104\1\101\1"
-        u"\uffff\1\172\1\111\1\114\1\137\4\uffff\1\154\1\157\1\141\1\uffff"
-        u"\1\144\1\172\1\162\1\172\1\145\1\157\1\143\1\151\1\164\1\143\1"
-        u"\172\1\162\1\163\1\111\1\164\1\172\1\164\1\151\2\172\1\uffff\1"
-        u"\172\1\uffff\1\164\1\165\1\154\1\147\1\156\1\105\1\124\1\70\1\172"
-        u"\1\124\1\uffff\1\117\1\111\1\122\1\120\1\145\1\172\1\153\1\145"
-        u"\1\uffff\1\156\1\uffff\1\144\1\146\1\164\1\143\1\172\1\150\1\uffff"
-        u"\1\156\1\164\1\103\1\151\1\uffff\1\172\1\156\3\uffff\1\172\1\154"
-        u"\1\145\1\156\1\172\1\101\2\172\1\66\1\uffff\1\111\1\116\1\107\1"
-        u"\125\1\117\1\111\1\172\1\uffff\1\172\1\146\5\172\1\uffff\2\172"
-        u"\1\145\1\172\1\154\1\uffff\1\165\1\uffff\1\164\1\172\1\145\1\uffff"
-        u"\1\116\2\uffff\1\172\1\114\1\101\2\116\1\117\1\172\2\uffff\1\172"
-        u"\7\uffff\1\162\1\uffff\2\145\1\172\1\uffff\1\144\1\172\1\uffff"
-        u"\1\105\1\114\1\105\2\124\2\uffff\3\172\1\uffff\1\172\1\uffff\2"
-        u"\172\1\104\1\111\1\123\6\uffff\1\172\1\115\1\105\1\uffff\1\105"
-        u"\1\122\1\123\1\126\1\105\1\111\1\122\1\103\1\126\1\105\1\111\1"
-        u"\172\1\103\1\uffff\1\105\1\172\1\uffff"
+        u"\2\157\1\156\3\157\1\156\3\uffff\1\116\1\125\1\117\1\116\1\117"
+        u"\1\114\1\106\4\uffff\1\75\1\71\1\75\1\76\3\75\1\uffff\2\75\1\76"
+        u"\1\75\1\174\1\uffff\1\150\1\157\1\162\1\47\1\uffff\2\ufffe\1\170"
+        u"\1\146\2\uffff\1\ufffe\2\uffff\1\160\4\uffff\1\165\1\164\1\163"
+        u"\1\151\1\172\1\162\1\157\2\164\1\101\1\154\1\141\1\156\1\163\1"
+        u"\164\1\172\1\156\1\162\1\157\1\172\1\146\1\163\3\uffff\1\172\2"
+        u"\124\1\116\1\101\1\114\1\117\1\111\34\uffff\1\75\2\uffff\1\75\10"
+        u"\uffff\1\151\1\164\1\145\3\uffff\1\146\1\uffff\1\146\3\uffff\1"
+        u"\145\1\155\2\145\1\164\1\145\1\156\1\165\1\164\1\162\1\157\1\151"
+        u"\1\165\1\124\1\144\1\141\1\162\1\164\1\145\1\172\1\uffff\1\147"
+        u"\1\172\1\141\1\142\1\uffff\1\141\1\151\1\157\1\uffff\1\172\1\111"
+        u"\1\123\1\114\1\101\1\102\1\137\4\uffff\1\154\1\157\1\141\1\uffff"
+        u"\1\144\1\172\1\162\1\172\1\143\1\157\1\145\1\143\1\151\1\164\1"
+        u"\172\1\163\1\162\1\111\1\172\1\164\1\172\1\151\1\164\1\172\1\uffff"
+        u"\1\172\1\uffff\1\164\1\154\1\165\1\147\1\156\1\uffff\1\117\1\124"
+        u"\1\111\1\124\1\101\1\122\1\120\1\145\1\172\1\153\1\145\1\uffff"
+        u"\1\156\1\uffff\1\150\1\146\1\144\1\164\1\143\1\172\1\uffff\1\164"
+        u"\1\156\1\103\1\uffff\1\151\1\uffff\1\156\1\172\2\uffff\1\172\1"
+        u"\145\1\154\1\156\1\172\1\116\1\172\1\107\1\111\1\114\1\117\1\125"
+        u"\1\111\1\172\1\uffff\1\172\1\146\6\172\1\uffff\1\145\2\172\1\154"
+        u"\1\165\2\uffff\1\172\1\164\1\145\1\uffff\1\101\1\uffff\1\116\1"
+        u"\114\1\137\1\117\1\116\1\172\2\uffff\1\172\6\uffff\1\162\2\uffff"
+        u"\2\145\1\uffff\1\172\1\144\1\114\2\105\1\122\2\124\2\uffff\3\172"
+        u"\1\uffff\2\172\1\104\1\172\1\105\1\123\1\111\5\uffff\1\172\1\uffff"
+        u"\1\115\1\105\1\115\1\uffff\1\117\1\122\1\105\2\126\1\123\1\105"
+        u"\1\111\1\105\1\137\1\103\1\122\1\111\1\105\1\126\1\106\1\172\1"
+        u"\111\1\137\1\uffff\1\103\1\125\1\105\1\116\1\172\1\122\1\uffff"
+        u"\1\105\1\106\1\105\1\122\1\105\1\116\1\103\1\105\1\104\1\172\1"
+        u"\uffff"
         )
 
-    DFA37_accept = DFA.unpack(
-        u"\1\uffff\1\1\1\uffff\1\3\20\uffff\1\27\1\30\1\33\4\uffff\1\50\1"
-        u"\51\1\52\1\53\7\uffff\1\70\5\uffff\1\104\4\uffff\1\135\4\uffff"
-        u"\1\144\1\145\1\uffff\1\146\1\1\1\uffff\1\135\1\3\1\111\1\4\32\uffff"
-        u"\1\27\1\30\1\33\5\uffff\1\50\1\51\1\52\1\53\1\72\1\54\1\55\1\65"
-        u"\1\143\1\62\1\75\1\56\1\76\1\66\1\63\1\57\1\73\1\150\1\147\1\60"
-        u"\1\74\1\61\1\106\1\101\1\67\1\70\1\112\1\71\1\uffff\1\115\1\113"
-        u"\1\uffff\1\116\1\114\1\102\1\110\1\105\1\103\1\107\1\104\3\uffff"
-        u"\1\136\1\137\1\140\1\uffff\1\141\1\uffff\1\144\1\145\1\151\23\uffff"
-        u"\1\123\6\uffff\1\127\7\uffff\1\37\4\uffff\1\77\1\117\1\100\1\120"
-        u"\3\uffff\1\142\24\uffff\1\15\1\uffff\1\130\12\uffff\1\40\10\uffff"
-        u"\1\34\1\uffff\1\124\6\uffff\1\7\4\uffff\1\12\2\uffff\1\13\1\121"
-        u"\1\16\11\uffff\1\26\7\uffff\1\131\7\uffff\1\14\5\uffff\1\35\1\uffff"
-        u"\1\17\3\uffff\1\32\1\uffff\1\42\1\24\7\uffff\1\126\1\133\1\uffff"
-        u"\1\5\1\21\1\64\1\31\1\6\1\125\1\134\1\uffff\1\11\3\uffff\1\20\2"
-        u"\uffff\1\25\5\uffff\1\45\1\2\3\uffff\1\122\1\uffff\1\23\5\uffff"
-        u"\1\10\1\36\1\132\1\22\1\44\1\41\3\uffff\1\43\15\uffff\1\46\2\uffff"
-        u"\1\47"
+    DFA35_accept = DFA.unpack(
+        u"\1\uffff\1\1\1\uffff\1\3\15\uffff\1\23\1\24\1\27\7\uffff\1\45\1"
+        u"\46\1\47\1\50\7\uffff\1\65\5\uffff\1\101\4\uffff\1\132\4\uffff"
+        u"\1\141\1\142\1\uffff\1\143\1\1\1\uffff\1\132\1\3\1\106\1\4\26\uffff"
+        u"\1\23\1\24\1\27\10\uffff\1\45\1\46\1\47\1\50\1\67\1\51\1\52\1\140"
+        u"\1\62\1\72\1\57\1\53\1\63\1\73\1\60\1\54\1\145\1\70\1\144\1\55"
+        u"\1\71\1\56\1\76\1\103\1\64\1\65\1\107\1\66\1\uffff\1\112\1\110"
+        u"\1\uffff\1\113\1\111\1\77\1\105\1\100\1\102\1\104\1\101\3\uffff"
+        u"\1\134\1\133\1\135\1\uffff\1\136\1\uffff\1\141\1\142\1\146\24\uffff"
+        u"\1\120\4\uffff\1\124\3\uffff\1\33\7\uffff\1\74\1\114\1\75\1\115"
+        u"\3\uffff\1\137\24\uffff\1\15\1\uffff\1\125\5\uffff\1\34\13\uffff"
+        u"\1\30\1\uffff\1\121\6\uffff\1\7\3\uffff\1\12\1\uffff\1\13\2\uffff"
+        u"\1\116\1\16\16\uffff\1\126\10\uffff\1\14\5\uffff\1\31\1\17\3\uffff"
+        u"\1\26\1\uffff\1\36\6\uffff\1\123\1\130\1\uffff\1\5\1\122\1\61\1"
+        u"\21\1\25\1\6\1\uffff\1\131\1\11\2\uffff\1\20\10\uffff\1\42\1\2"
+        u"\3\uffff\1\117\7\uffff\1\10\1\32\1\127\1\22\1\35\1\uffff\1\40\3"
+        u"\uffff\1\37\23\uffff\1\43\6\uffff\1\44\12\uffff\1\41"
         )
 
-    DFA37_special = DFA.unpack(
-        u"\u0173\uffff"
+    DFA35_special = DFA.unpack(
+        u"\u017e\uffff"
         )
 
             
-    DFA37_transition = [
+    DFA35_transition = [
         DFA.unpack(u"\6\71\2\66\1\71\2\66\22\71\1\66\1\47\1\63\1\70\1\61"
         u"\1\44\1\45\1\62\1\33\1\34\1\37\1\41\1\3\1\42\1\40\1\43\1\64\11"
-        u"\65\1\26\1\1\1\50\1\4\1\51\1\54\1\71\1\61\1\21\1\22\1\61\1\32\3"
-        u"\61\1\27\2\61\1\60\2\61\1\30\3\61\1\11\1\61\1\31\1\23\4\61\1\35"
-        u"\1\67\1\36\1\52\1\61\1\71\1\7\1\57\1\13\1\17\1\5\1\16\1\56\1\61"
-        u"\1\14\2\61\1\15\5\61\1\10\1\6\1\2\1\20\1\12\1\55\3\61\1\24\1\53"
-        u"\1\25\1\46\uff80\71"),
+        u"\65\1\23\1\1\1\50\1\4\1\51\1\54\1\71\2\61\1\26\1\61\1\32\1\61\1"
+        u"\31\1\61\1\24\2\61\1\60\2\61\1\25\3\61\1\11\1\61\1\27\1\30\4\61"
+        u"\1\35\1\67\1\36\1\52\1\61\1\71\1\7\1\57\1\13\1\17\1\5\1\16\1\56"
+        u"\1\61\1\14\2\61\1\15\5\61\1\10\1\6\1\2\1\20\1\12\1\55\3\61\1\21"
+        u"\1\53\1\22\1\46\uff80\71"),
         DFA.unpack(u""),
         DFA.unpack(u"\1\73"),
         DFA.unpack(u""),
         DFA.unpack(u"\1\76"),
         DFA.unpack(u"\1\102\1\uffff\1\100\11\uffff\1\101"),
-        DFA.unpack(u"\1\105\1\103\12\uffff\1\104\2\uffff\1\106"),
+        DFA.unpack(u"\1\106\1\104\12\uffff\1\105\2\uffff\1\103"),
         DFA.unpack(u"\1\107"),
         DFA.unpack(u"\1\110"),
         DFA.unpack(u"\1\111"),
         DFA.unpack(u"\1\112"),
-        DFA.unpack(u"\1\115\6\uffff\1\114\6\uffff\1\113"),
-        DFA.unpack(u"\1\116\7\uffff\1\117"),
+        DFA.unpack(u"\1\115\6\uffff\1\113\6\uffff\1\114"),
+        DFA.unpack(u"\1\117\7\uffff\1\116"),
         DFA.unpack(u"\1\120"),
         DFA.unpack(u"\1\122\2\uffff\1\121"),
-        DFA.unpack(u"\1\123\11\uffff\1\124"),
+        DFA.unpack(u"\1\124\11\uffff\1\123"),
         DFA.unpack(u"\1\125"),
-        DFA.unpack(u"\1\126"),
-        DFA.unpack(u"\1\130\6\uffff\1\127"),
-        DFA.unpack(u"\1\131"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\131"),
+        DFA.unpack(u"\1\133\4\uffff\1\132"),
+        DFA.unpack(u"\1\134"),
         DFA.unpack(u"\1\135"),
-        DFA.unpack(u"\1\137\4\uffff\1\136"),
+        DFA.unpack(u"\1\136"),
+        DFA.unpack(u"\1\137"),
         DFA.unpack(u"\1\140"),
-        DFA.unpack(u"\1\141"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\146"),
-        DFA.unpack(u"\1\150\1\uffff\12\152"),
-        DFA.unpack(u"\1\153\21\uffff\1\154"),
-        DFA.unpack(u"\1\160\17\uffff\1\156\1\157"),
-        DFA.unpack(u"\1\164\4\uffff\1\163\15\uffff\1\162"),
-        DFA.unpack(u"\1\166"),
-        DFA.unpack(u"\1\170\26\uffff\1\171"),
+        DFA.unpack(u"\1\145"),
+        DFA.unpack(u"\1\147\1\uffff\12\150"),
+        DFA.unpack(u"\1\153\21\uffff\1\152"),
+        DFA.unpack(u"\1\157\17\uffff\1\156\1\155"),
+        DFA.unpack(u"\1\163\4\uffff\1\161\15\uffff\1\162"),
+        DFA.unpack(u"\1\165"),
+        DFA.unpack(u"\1\170\26\uffff\1\167"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\174"),
-        DFA.unpack(u"\1\176\1\177"),
-        DFA.unpack(u"\1\u0082\1\u0081"),
-        DFA.unpack(u"\1\u0084"),
-        DFA.unpack(u"\1\u0087\76\uffff\1\u0086"),
+        DFA.unpack(u"\1\173"),
+        DFA.unpack(u"\1\175\1\176"),
+        DFA.unpack(u"\1\u0081\1\u0080"),
+        DFA.unpack(u"\1\u0083"),
+        DFA.unpack(u"\1\u0085\76\uffff\1\u0086"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0089"),
         DFA.unpack(u"\1\u008a"),
         DFA.unpack(u"\1\u008b"),
-        DFA.unpack(u"\1\u008c"),
-        DFA.unpack(u"\1\u008e\4\uffff\1\u008d"),
+        DFA.unpack(u"\1\u008c\4\uffff\1\u008d"),
         DFA.unpack(u""),
         DFA.unpack(u"\47\u008d\1\uffff\uffd7\u008d"),
-        DFA.unpack(u"\uffff\u008e"),
-        DFA.unpack(u"\1\152\1\uffff\10\u0090\2\152\12\uffff\3\152\21\uffff"
-        u"\1\u008f\13\uffff\3\152\21\uffff\1\u008f"),
-        DFA.unpack(u"\1\152\1\uffff\12\u0092\12\uffff\3\152\35\uffff\3\152"),
+        DFA.unpack(u"\uffff\u008c"),
+        DFA.unpack(u"\1\150\1\uffff\10\u008f\2\150\12\uffff\3\150\21\uffff"
+        u"\1\u008e\13\uffff\3\150\21\uffff\1\u008e"),
+        DFA.unpack(u"\1\150\1\uffff\12\u0091\12\uffff\3\150\35\uffff\3\150"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\uffff\u0095"),
+        DFA.unpack(u"\uffff\u0094"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0096"),
+        DFA.unpack(u"\1\u0095"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0096"),
         DFA.unpack(u"\1\u0097"),
         DFA.unpack(u"\1\u0098"),
         DFA.unpack(u"\1\u0099"),
-        DFA.unpack(u"\1\u009a\22\uffff\1\u009b"),
+        DFA.unpack(u"\1\u009b\22\uffff\1\u009a"),
         DFA.unpack(u"\1\u009d\20\uffff\1\u009c"),
         DFA.unpack(u"\1\u009e"),
         DFA.unpack(u"\1\u009f"),
-        DFA.unpack(u"\1\u00a0"),
-        DFA.unpack(u"\1\u00a2\14\uffff\1\u00a1"),
-        DFA.unpack(u"\1\u00a3"),
-        DFA.unpack(u"\1\u00a5\2\uffff\1\u00a4"),
+        DFA.unpack(u"\1\u00a0\14\uffff\1\u00a1"),
+        DFA.unpack(u"\1\u00a2"),
+        DFA.unpack(u"\1\u00a3\2\uffff\1\u00a4"),
+        DFA.unpack(u"\1\u00a5"),
         DFA.unpack(u"\1\u00a6"),
         DFA.unpack(u"\1\u00a7"),
         DFA.unpack(u"\1\u00a8"),
@@ -4516,24 +4428,22 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\u00aa"),
         DFA.unpack(u"\1\u00ab"),
         DFA.unpack(u"\1\u00ac"),
-        DFA.unpack(u"\1\u00ad"),
-        DFA.unpack(u"\1\u00ae"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\24\74\1\u00af\5\74"),
-        DFA.unpack(u"\1\u00b2\11\uffff\1\u00b1"),
-        DFA.unpack(u"\1\u00b3"),
-        DFA.unpack(u"\1\u00b4"),
-        DFA.unpack(u"\1\u00b5"),
-        DFA.unpack(u"\1\u00b6\2\uffff\1\u00b7"),
+        u"\24\74\1\u00ad\5\74"),
+        DFA.unpack(u"\1\u00af"),
+        DFA.unpack(u"\1\u00b1\11\uffff\1\u00b0"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u00b3"),
+        DFA.unpack(u"\1\u00b4"),
+        DFA.unpack(u"\1\u00b5"),
+        DFA.unpack(u"\1\u00b6"),
+        DFA.unpack(u"\1\u00b7"),
+        DFA.unpack(u"\1\u00b8"),
         DFA.unpack(u"\1\u00b9"),
-        DFA.unpack(u"\1\u00ba"),
-        DFA.unpack(u"\1\u00bb"),
-        DFA.unpack(u"\1\u00bc"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
@@ -4562,10 +4472,10 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00bd"),
+        DFA.unpack(u"\1\u00ba"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00bf"),
+        DFA.unpack(u"\1\u00bc"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
@@ -4574,19 +4484,22 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00c1"),
-        DFA.unpack(u"\1\u00c2"),
-        DFA.unpack(u"\1\u00c3"),
+        DFA.unpack(u"\1\u00be"),
+        DFA.unpack(u"\1\u00bf"),
+        DFA.unpack(u"\1\u00c0"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\152\1\uffff\10\u0090\2\152\12\uffff\3\152\35\uffff"
-        u"\3\152"),
+        DFA.unpack(u"\1\150\1\uffff\10\u008f\2\150\12\uffff\3\150\35\uffff"
+        u"\3\150"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\152\1\uffff\12\u0092\12\uffff\3\152\35\uffff\3\152"),
+        DFA.unpack(u"\1\150\1\uffff\12\u0091\12\uffff\3\150\35\uffff\3\150"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u00c2"),
+        DFA.unpack(u"\1\u00c3"),
+        DFA.unpack(u"\1\u00c4"),
         DFA.unpack(u"\1\u00c5"),
         DFA.unpack(u"\1\u00c6"),
         DFA.unpack(u"\1\u00c7"),
@@ -4601,141 +4514,131 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\u00d0"),
         DFA.unpack(u"\1\u00d1"),
         DFA.unpack(u"\1\u00d2"),
-        DFA.unpack(u"\1\u00d3"),
-        DFA.unpack(u"\1\u00d4"),
-        DFA.unpack(u"\1\u00d5\1\u00d6"),
-        DFA.unpack(u"\1\u00d7"),
-        DFA.unpack(u"\1\u00d8"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u00d4\1\u00d3"),
+        DFA.unpack(u"\1\u00d5"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u00da"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u00d7"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u00d9"),
+        DFA.unpack(u"\1\u00da"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u00db"),
         DFA.unpack(u"\1\u00dc"),
         DFA.unpack(u"\1\u00dd"),
-        DFA.unpack(u"\1\u00de"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
+        u"\32\74"),
         DFA.unpack(u"\1\u00df"),
         DFA.unpack(u"\1\u00e0"),
         DFA.unpack(u"\1\u00e1"),
         DFA.unpack(u"\1\u00e2"),
         DFA.unpack(u"\1\u00e3"),
-        DFA.unpack(u"\1\u00e4"),
-        DFA.unpack(u"\1\u00e5"),
+        DFA.unpack(u"\1\u00e5\35\uffff\1\u00e4"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\u00e7"),
-        DFA.unpack(u"\1\u00e8"),
-        DFA.unpack(u"\1\u00ea\35\uffff\1\u00e9"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u00e6"),
+        DFA.unpack(u"\1\u00e7"),
+        DFA.unpack(u"\1\u00e8"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u00e9"),
+        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
+        u"\32\74"),
         DFA.unpack(u"\1\u00eb"),
-        DFA.unpack(u"\1\u00ec"),
-        DFA.unpack(u"\1\u00ed"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u00ee"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u00ed"),
+        DFA.unpack(u"\1\u00ee"),
+        DFA.unpack(u"\1\u00ef"),
         DFA.unpack(u"\1\u00f0"),
+        DFA.unpack(u"\1\u00f1"),
+        DFA.unpack(u"\1\u00f2"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u00f2"),
-        DFA.unpack(u"\1\u00f3"),
         DFA.unpack(u"\1\u00f4"),
         DFA.unpack(u"\1\u00f5"),
         DFA.unpack(u"\1\u00f6"),
-        DFA.unpack(u"\1\u00f7"),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\u00f9"),
-        DFA.unpack(u"\1\u00fa"),
-        DFA.unpack(u"\1\u00fb"),
-        DFA.unpack(u"\1\u00fc"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u00fe"),
-        DFA.unpack(u"\1\u00ff"),
+        DFA.unpack(u"\1\u00f8"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u00fa"),
+        DFA.unpack(u"\1\u00fb"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u00fe"),
+        DFA.unpack(u"\1\u00ff"),
+        DFA.unpack(u"\1\u0100"),
+        DFA.unpack(u"\1\u0101"),
+        DFA.unpack(u"\1\u0102"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0103"),
         DFA.unpack(u"\1\u0104"),
         DFA.unpack(u"\1\u0105"),
         DFA.unpack(u"\1\u0106"),
         DFA.unpack(u"\1\u0107"),
-        DFA.unpack(u"\1\u0108"),
-        DFA.unpack(u"\1\u0109"),
-        DFA.unpack(u"\1\u010b\6\uffff\1\u010a"),
+        DFA.unpack(u"\1\u0108\17\uffff\1\u0109"),
+        DFA.unpack(u"\1\u010a"),
+        DFA.unpack(u"\1\u010b"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u"\1\u010d"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u010e"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u010f"),
-        DFA.unpack(u"\1\u0111\17\uffff\1\u0110"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u0110"),
+        DFA.unpack(u"\1\u0111"),
         DFA.unpack(u"\1\u0112"),
         DFA.unpack(u"\1\u0113"),
+        DFA.unpack(u"\1\u0114"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0115"),
-        DFA.unpack(u"\1\u0116"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0116"),
         DFA.unpack(u"\1\u0117"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u0118"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0119"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u011a"),
-        DFA.unpack(u"\1\u011b"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u011d"),
         DFA.unpack(u""),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
+        u"\32\74"),
+        DFA.unpack(u"\1\u011d"),
         DFA.unpack(u"\1\u011e"),
         DFA.unpack(u"\1\u011f"),
-        DFA.unpack(u"\1\u0120"),
-        DFA.unpack(u"\1\u0121"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0123"),
-        DFA.unpack(u""),
-        DFA.unpack(u""),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u0121"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u0123"),
+        DFA.unpack(u"\1\u0124"),
         DFA.unpack(u"\1\u0125"),
         DFA.unpack(u"\1\u0126"),
         DFA.unpack(u"\1\u0127"),
+        DFA.unpack(u"\1\u0128"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0129"),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\u012c"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u012d"),
-        DFA.unpack(u"\1\u012e"),
-        DFA.unpack(u"\1\u012f"),
-        DFA.unpack(u"\1\u0130"),
-        DFA.unpack(u"\1\u0131"),
-        DFA.unpack(u"\1\u0132"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u012b"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0135"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
@@ -4747,32 +4650,27 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0132"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u013d"),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\u013f"),
+        DFA.unpack(u"\1\u0135"),
+        DFA.unpack(u"\1\u0136"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0140"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0141"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0143"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u0144"),
+        DFA.unpack(u"\1\u0138"),
+        DFA.unpack(u"\1\u0139"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u013a"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
-        DFA.unpack(u"\1\u0146"),
-        DFA.unpack(u"\1\u0147"),
-        DFA.unpack(u"\1\u0148"),
-        DFA.unpack(u"\1\u0149"),
-        DFA.unpack(u"\1\u014a"),
+        DFA.unpack(u"\1\u013b"),
+        DFA.unpack(u"\1\u013c"),
+        DFA.unpack(u"\1\u013d"),
+        DFA.unpack(u"\1\u013e"),
+        DFA.unpack(u"\1\u013f"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u""),
@@ -4785,23 +4683,21 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0142"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u014d"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u014e"),
-        DFA.unpack(u"\1\u014f"),
-        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
-        u"\32\74"),
+        DFA.unpack(u"\1\u0143"),
+        DFA.unpack(u"\1\u0144"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0151"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u0153"),
-        DFA.unpack(u"\1\u0154"),
-        DFA.unpack(u"\1\u0155"),
-        DFA.unpack(u"\1\u0156"),
-        DFA.unpack(u"\1\u0157"),
+        DFA.unpack(u"\1\u0146"),
+        DFA.unpack(u"\1\u0147"),
+        DFA.unpack(u"\1\u0148"),
+        DFA.unpack(u"\1\u0149"),
+        DFA.unpack(u"\1\u014a"),
+        DFA.unpack(u"\1\u014b"),
+        DFA.unpack(u"\1\u014c"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
@@ -4813,15 +4709,14 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u"\1\u0152"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u015e"),
-        DFA.unpack(u"\1\u015f"),
-        DFA.unpack(u"\1\u0160"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u0154"),
+        DFA.unpack(u"\1\u0155"),
+        DFA.unpack(u"\1\u0156"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
@@ -4829,9 +4724,20 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u0158"),
+        DFA.unpack(u"\1\u0159"),
+        DFA.unpack(u"\1\u015a"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u015b"),
+        DFA.unpack(u"\1\u015c"),
+        DFA.unpack(u"\1\u015d"),
+        DFA.unpack(u"\1\u015e"),
+        DFA.unpack(u"\1\u015f"),
+        DFA.unpack(u"\1\u0160"),
+        DFA.unpack(u"\1\u0161"),
         DFA.unpack(u"\1\u0162"),
         DFA.unpack(u"\1\u0163"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u0164"),
         DFA.unpack(u"\1\u0165"),
         DFA.unpack(u"\1\u0166"),
@@ -4839,22 +4745,35 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\u0168"),
         DFA.unpack(u"\1\u0169"),
         DFA.unpack(u"\1\u016a"),
-        DFA.unpack(u"\1\u016b"),
+        DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
+        u"\32\74"),
         DFA.unpack(u"\1\u016c"),
         DFA.unpack(u"\1\u016d"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u016e"),
+        DFA.unpack(u"\1\u016f"),
+        DFA.unpack(u"\1\u0170"),
+        DFA.unpack(u"\1\u0171"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
-        DFA.unpack(u"\1\u0170"),
+        DFA.unpack(u"\1\u0173"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0171"),
+        DFA.unpack(u"\1\u0174"),
+        DFA.unpack(u"\1\u0175"),
+        DFA.unpack(u"\1\u0176"),
+        DFA.unpack(u"\1\u0177"),
+        DFA.unpack(u"\1\u0178"),
+        DFA.unpack(u"\1\u0179"),
+        DFA.unpack(u"\1\u017a"),
+        DFA.unpack(u"\1\u017b"),
+        DFA.unpack(u"\1\u017c"),
         DFA.unpack(u"\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff"
         u"\32\74"),
         DFA.unpack(u"")
     ]
 
-    # class definition for DFA #37
+    # class definition for DFA #35
 
-    DFA37 = DFA
+    DFA35 = DFA
  
 
index 470917b..874d6f4 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2008-01-29 14:19:13
+# $ANTLR 3.0.1 C.g 2008-01-29 19:00:49
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -44,17 +44,16 @@ tokenNames = [
     "UnicodeEscape", "WS", "BS", "UnicodeVocabulary", "COMMENT", "LINE_COMMENT", 
     "LINE_COMMAND", "';'", "'typedef'", "','", "'='", "'extern'", "'static'", 
     "'auto'", "'register'", "'STATIC'", "'void'", "'char'", "'short'", "'int'", 
-    "'long'", "'float'", "'double'", "'signed'", "'unsigned'", "'BOOLEAN'", 
-    "'CHAR8'", "'CHAR16'", "'VOID'", "'{'", "'}'", "'struct'", "'union'", 
-    "':'", "'enum'", "'const'", "'volatile'", "'IN'", "'OUT'", "'OPTIONAL'", 
-    "'CONST'", "'UNALIGNED'", "'VOLATILE'", "'EFIAPI'", "'EFI_BOOTSERVICE'", 
-    "'EFI_RUNTIMESERVICE'", "'('", "')'", "'['", "']'", "'*'", "'...'", 
-    "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'sizeof'", "'.'", "'->'", 
-    "'&'", "'~'", "'!'", "'*='", "'/='", "'%='", "'+='", "'-='", "'<<='", 
-    "'>>='", "'&='", "'^='", "'|='", "'?'", "'||'", "'&&'", "'|'", "'^'", 
-    "'=='", "'!='", "'<'", "'>'", "'<='", "'>='", "'<<'", "'>>'", "'case'", 
-    "'default'", "'if'", "'else'", "'switch'", "'while'", "'do'", "'for'", 
-    "'goto'", "'continue'", "'break'", "'return'"
+    "'long'", "'float'", "'double'", "'signed'", "'unsigned'", "'{'", "'}'", 
+    "'struct'", "'union'", "':'", "'enum'", "'const'", "'volatile'", "'IN'", 
+    "'OUT'", "'OPTIONAL'", "'CONST'", "'UNALIGNED'", "'VOLATILE'", "'GLOBAL_REMOVE_IF_UNREFERENCED'", 
+    "'EFIAPI'", "'EFI_BOOTSERVICE'", "'EFI_RUNTIMESERVICE'", "'('", "')'", 
+    "'['", "']'", "'*'", "'...'", "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", 
+    "'sizeof'", "'.'", "'->'", "'&'", "'~'", "'!'", "'*='", "'/='", "'%='", 
+    "'+='", "'-='", "'<<='", "'>>='", "'&='", "'^='", "'|='", "'?'", "'||'", 
+    "'&&'", "'|'", "'^'", "'=='", "'!='", "'<'", "'>'", "'<='", "'>='", 
+    "'<<'", "'>>'", "'case'", "'default'", "'if'", "'else'", "'switch'", 
+    "'while'", "'do'", "'for'", "'goto'", "'continue'", "'break'", "'return'"
 ]
 
 
@@ -120,7 +119,7 @@ class CParser(Parser):
 
 
     # $ANTLR start translation_unit
-    # C.g:50:1: translation_unit : ( external_declaration )+ ;
+    # C.g:50:1: translation_unit : ( external_declaration )* ;
     def translation_unit(self, ):
 
         translation_unit_StartIndex = self.input.index()
@@ -129,15 +128,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 1):
                     return 
 
-                # C.g:51:2: ( ( external_declaration )+ )
-                # C.g:51:4: ( external_declaration )+
-                # C.g:51:4: ( external_declaration )+
-                cnt1 = 0
+                # C.g:51:2: ( ( external_declaration )* )
+                # C.g:51:4: ( external_declaration )*
+                # C.g:51:4: ( external_declaration )*
                 while True: #loop1
                     alt1 = 2
                     LA1_0 = self.input.LA(1)
 
-                    if (LA1_0 == IDENTIFIER or LA1_0 == 26 or (29 <= LA1_0 <= 46) or (49 <= LA1_0 <= 50) or (52 <= LA1_0 <= 64) or LA1_0 == 68) :
+                    if (LA1_0 == IDENTIFIER or LA1_0 == 26 or (29 <= LA1_0 <= 42) or (45 <= LA1_0 <= 46) or (48 <= LA1_0 <= 61) or LA1_0 == 65) :
                         alt1 = 1
 
 
@@ -151,17 +149,7 @@ class CParser(Parser):
 
 
                     else:
-                        if cnt1 >= 1:
-                            break #loop1
-
-                        if self.backtracking > 0:
-                            self.failed = True
-                            return 
-
-                        eee = EarlyExitException(1, self.input)
-                        raise eee
-
-                    cnt1 += 1
+                        break #loop1
 
 
 
@@ -356,7 +344,7 @@ class CParser(Parser):
 
                         raise nvae
 
-                elif (LA3_0 == 43) :
+                elif ((45 <= LA3_0 <= 46)) :
                     LA3_11 = self.input.LA(2)
 
                     if (self.synpred4()) :
@@ -372,7 +360,7 @@ class CParser(Parser):
 
                         raise nvae
 
-                elif (LA3_0 == 44) :
+                elif (LA3_0 == 48) :
                     LA3_12 = self.input.LA(2)
 
                     if (self.synpred4()) :
@@ -388,13 +376,15 @@ class CParser(Parser):
 
                         raise nvae
 
-                elif (LA3_0 == 45) :
+                elif (LA3_0 == IDENTIFIER) :
                     LA3_13 = self.input.LA(2)
 
                     if (self.synpred4()) :
                         alt3 = 1
                     elif (self.synpred5()) :
                         alt3 = 2
+                    elif (True) :
+                        alt3 = 3
                     else:
                         if self.backtracking > 0:
                             self.failed = True
@@ -404,7 +394,7 @@ class CParser(Parser):
 
                         raise nvae
 
-                elif (LA3_0 == 46) :
+                elif ((49 <= LA3_0 <= 57)) :
                     LA3_14 = self.input.LA(2)
 
                     if (self.synpred4()) :
@@ -420,81 +410,15 @@ class CParser(Parser):
 
                         raise nvae
 
-                elif ((49 <= LA3_0 <= 50)) :
-                    LA3_15 = self.input.LA(2)
-
-                    if (self.synpred4()) :
-                        alt3 = 1
-                    elif (self.synpred5()) :
-                        alt3 = 2
-                    else:
-                        if self.backtracking > 0:
-                            self.failed = True
-                            return 
-
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 15, self.input)
-
-                        raise nvae
-
-                elif (LA3_0 == 52) :
-                    LA3_16 = self.input.LA(2)
-
-                    if (self.synpred4()) :
-                        alt3 = 1
-                    elif (self.synpred5()) :
-                        alt3 = 2
-                    else:
-                        if self.backtracking > 0:
-                            self.failed = True
-                            return 
-
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 16, self.input)
-
-                        raise nvae
-
-                elif (LA3_0 == IDENTIFIER) :
-                    LA3_17 = self.input.LA(2)
-
-                    if (self.synpred4()) :
-                        alt3 = 1
-                    elif (self.synpred5()) :
-                        alt3 = 2
-                    elif (True) :
-                        alt3 = 3
-                    else:
-                        if self.backtracking > 0:
-                            self.failed = True
-                            return 
-
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 17, self.input)
-
-                        raise nvae
-
-                elif ((53 <= LA3_0 <= 60)) :
-                    LA3_18 = self.input.LA(2)
-
-                    if (self.synpred4()) :
-                        alt3 = 1
-                    elif (self.synpred5()) :
-                        alt3 = 2
-                    else:
-                        if self.backtracking > 0:
-                            self.failed = True
-                            return 
-
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 18, self.input)
-
-                        raise nvae
-
-                elif (LA3_0 == 68) and (self.synpred4()):
+                elif (LA3_0 == 65) and (self.synpred4()):
                     alt3 = 1
-                elif (LA3_0 == 61) and (self.synpred4()):
+                elif (LA3_0 == 58) and (self.synpred4()):
                     alt3 = 1
-                elif (LA3_0 == 62) and (self.synpred4()):
+                elif (LA3_0 == 59) and (self.synpred4()):
                     alt3 = 1
-                elif (LA3_0 == 63) and (self.synpred4()):
+                elif (LA3_0 == 60) and (self.synpred4()):
                     alt3 = 1
-                elif (LA3_0 == 64) and (self.synpred4()):
+                elif (LA3_0 == 61) and (self.synpred4()):
                     alt3 = 1
                 elif (LA3_0 == 26) :
                     alt3 = 2
@@ -604,107 +528,87 @@ class CParser(Parser):
                 alt4 = 2
                 LA4_0 = self.input.LA(1)
 
-                if ((29 <= LA4_0 <= 46) or (49 <= LA4_0 <= 50) or (52 <= LA4_0 <= 60)) :
+                if ((29 <= LA4_0 <= 42) or (45 <= LA4_0 <= 46) or (48 <= LA4_0 <= 57)) :
                     alt4 = 1
                 elif (LA4_0 == IDENTIFIER) :
                     LA4 = self.input.LA(2)
-                    if LA4 == 61 or LA4 == 62 or LA4 == 63 or LA4 == 68:
-                        alt4 = 1
-                    elif LA4 == IDENTIFIER:
-                        LA4_28 = self.input.LA(3)
-
-                        if (self.synpred7()) :
-                            alt4 = 1
-                    elif LA4 == 64:
-                        LA4_29 = self.input.LA(3)
+                    if LA4 == 61:
+                        LA4_21 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 29 or LA4 == 30 or LA4 == 31 or LA4 == 32 or LA4 == 33:
-                        LA4_30 = self.input.LA(3)
+                        LA4_23 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 34:
-                        LA4_31 = self.input.LA(3)
+                        LA4_24 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 35:
-                        LA4_32 = self.input.LA(3)
+                        LA4_25 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 36:
-                        LA4_33 = self.input.LA(3)
+                        LA4_26 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 37:
-                        LA4_34 = self.input.LA(3)
+                        LA4_27 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 38:
-                        LA4_35 = self.input.LA(3)
+                        LA4_28 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 39:
-                        LA4_36 = self.input.LA(3)
+                        LA4_29 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 40:
-                        LA4_37 = self.input.LA(3)
+                        LA4_30 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 41:
-                        LA4_38 = self.input.LA(3)
+                        LA4_31 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
                     elif LA4 == 42:
-                        LA4_39 = self.input.LA(3)
-
-                        if (self.synpred7()) :
-                            alt4 = 1
-                    elif LA4 == 43:
-                        LA4_40 = self.input.LA(3)
-
-                        if (self.synpred7()) :
-                            alt4 = 1
-                    elif LA4 == 44:
-                        LA4_41 = self.input.LA(3)
-
-                        if (self.synpred7()) :
-                            alt4 = 1
-                    elif LA4 == 45:
-                        LA4_42 = self.input.LA(3)
+                        LA4_32 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
-                    elif LA4 == 46:
-                        LA4_43 = self.input.LA(3)
+                    elif LA4 == 45 or LA4 == 46:
+                        LA4_33 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
-                    elif LA4 == 49 or LA4 == 50:
-                        LA4_44 = self.input.LA(3)
+                    elif LA4 == 48:
+                        LA4_34 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
-                    elif LA4 == 52:
-                        LA4_45 = self.input.LA(3)
+                    elif LA4 == IDENTIFIER:
+                        LA4_35 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
-                    elif LA4 == 53 or LA4 == 54 or LA4 == 55 or LA4 == 56 or LA4 == 57 or LA4 == 58 or LA4 == 59 or LA4 == 60:
-                        LA4_46 = self.input.LA(3)
+                    elif LA4 == 49 or LA4 == 50 or LA4 == 51 or LA4 == 52 or LA4 == 53 or LA4 == 54 or LA4 == 55 or LA4 == 56 or LA4 == 57:
+                        LA4_36 = self.input.LA(3)
 
                         if (self.synpred7()) :
                             alt4 = 1
+                    elif LA4 == 58 or LA4 == 59 or LA4 == 60 or LA4 == 65:
+                        alt4 = 1
                 if alt4 == 1:
                     # C.g:0:0: d= declaration_specifiers
                     self.following.append(self.FOLLOW_declaration_specifiers_in_function_definition147)
@@ -724,9 +628,9 @@ class CParser(Parser):
                 alt6 = 2
                 LA6_0 = self.input.LA(1)
 
-                if (LA6_0 == IDENTIFIER or LA6_0 == 26 or (29 <= LA6_0 <= 46) or (49 <= LA6_0 <= 50) or (52 <= LA6_0 <= 60)) :
+                if (LA6_0 == IDENTIFIER or LA6_0 == 26 or (29 <= LA6_0 <= 42) or (45 <= LA6_0 <= 46) or (48 <= LA6_0 <= 57)) :
                     alt6 = 1
-                elif (LA6_0 == 47) :
+                elif (LA6_0 == 43) :
                     alt6 = 2
                 else:
                     if self.backtracking > 0:
@@ -745,7 +649,7 @@ class CParser(Parser):
                         alt5 = 2
                         LA5_0 = self.input.LA(1)
 
-                        if (LA5_0 == IDENTIFIER or LA5_0 == 26 or (29 <= LA5_0 <= 46) or (49 <= LA5_0 <= 50) or (52 <= LA5_0 <= 60)) :
+                        if (LA5_0 == IDENTIFIER or LA5_0 == 26 or (29 <= LA5_0 <= 42) or (45 <= LA5_0 <= 46) or (48 <= LA5_0 <= 57)) :
                             alt5 = 1
 
 
@@ -860,7 +764,7 @@ class CParser(Parser):
 
                 if (LA9_0 == 26) :
                     alt9 = 1
-                elif (LA9_0 == IDENTIFIER or (29 <= LA9_0 <= 46) or (49 <= LA9_0 <= 50) or (52 <= LA9_0 <= 60)) :
+                elif (LA9_0 == IDENTIFIER or (29 <= LA9_0 <= 42) or (45 <= LA9_0 <= 46) or (48 <= LA9_0 <= 57)) :
                     alt9 = 2
                 else:
                     if self.backtracking > 0:
@@ -881,17 +785,17 @@ class CParser(Parser):
                     alt7 = 2
                     LA7_0 = self.input.LA(1)
 
-                    if ((29 <= LA7_0 <= 46) or (49 <= LA7_0 <= 50) or (52 <= LA7_0 <= 60)) :
+                    if ((29 <= LA7_0 <= 42) or (45 <= LA7_0 <= 46) or (48 <= LA7_0 <= 57)) :
                         alt7 = 1
                     elif (LA7_0 == IDENTIFIER) :
-                        LA7_17 = self.input.LA(2)
+                        LA7_13 = self.input.LA(2)
 
-                        if (LA7_17 == 64) :
-                            LA7_25 = self.input.LA(3)
+                        if (LA7_13 == 61) :
+                            LA7_21 = self.input.LA(3)
 
                             if (self.synpred10()) :
                                 alt7 = 1
-                        elif (LA7_17 == IDENTIFIER or (29 <= LA7_17 <= 46) or (49 <= LA7_17 <= 50) or (52 <= LA7_17 <= 63) or LA7_17 == 68) :
+                        elif (LA7_13 == IDENTIFIER or (29 <= LA7_13 <= 42) or (45 <= LA7_13 <= 46) or (48 <= LA7_13 <= 60) or LA7_13 == 65) :
                             alt7 = 1
                     if alt7 == 1:
                         # C.g:0:0: b= declaration_specifiers
@@ -933,7 +837,7 @@ class CParser(Parser):
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
 
-                    if (LA8_0 == IDENTIFIER or (61 <= LA8_0 <= 64) or LA8_0 == 68) :
+                    if (LA8_0 == IDENTIFIER or (58 <= LA8_0 <= 61) or LA8_0 == 65) :
                         alt8 = 1
                     if alt8 == 1:
                         # C.g:0:0: t= init_declarator_list
@@ -1004,7 +908,7 @@ class CParser(Parser):
                             alt10 = 2
 
 
-                    elif LA10 == 57:
+                    elif LA10 == 53:
                         LA10_9 = self.input.LA(2)
 
                         if (self.synpred15()) :
@@ -1013,9 +917,9 @@ class CParser(Parser):
 
                     elif LA10 == 29 or LA10 == 30 or LA10 == 31 or LA10 == 32 or LA10 == 33:
                         alt10 = 1
-                    elif LA10 == 34 or LA10 == 35 or LA10 == 36 or LA10 == 37 or LA10 == 38 or LA10 == 39 or LA10 == 40 or LA10 == 41 or LA10 == 42 or LA10 == 43 or LA10 == 44 or LA10 == 45 or LA10 == 46 or LA10 == 49 or LA10 == 50 or LA10 == 52:
+                    elif LA10 == 34 or LA10 == 35 or LA10 == 36 or LA10 == 37 or LA10 == 38 or LA10 == 39 or LA10 == 40 or LA10 == 41 or LA10 == 42 or LA10 == 45 or LA10 == 46 or LA10 == 48:
                         alt10 = 2
-                    elif LA10 == 53 or LA10 == 54 or LA10 == 55 or LA10 == 56 or LA10 == 58 or LA10 == 59 or LA10 == 60:
+                    elif LA10 == 49 or LA10 == 50 or LA10 == 51 or LA10 == 52 or LA10 == 54 or LA10 == 55 or LA10 == 56 or LA10 == 57:
                         alt10 = 3
 
                     if alt10 == 1:
@@ -1251,7 +1155,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_specifier
-    # C.g:153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | 'BOOLEAN' | 'CHAR8' | 'CHAR16' | 'VOID' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );
+    # C.g:153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );
     def type_specifier(self, ):
 
         type_specifier_StartIndex = self.input.index()
@@ -1265,8 +1169,8 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):
                     return 
 
-                # C.g:154:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | 'BOOLEAN' | 'CHAR8' | 'CHAR16' | 'VOID' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id )
-                alt13 = 16
+                # C.g:154:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id )
+                alt13 = 12
                 LA13_0 = self.input.LA(1)
 
                 if (LA13_0 == 34) :
@@ -1287,26 +1191,18 @@ class CParser(Parser):
                     alt13 = 8
                 elif (LA13_0 == 42) :
                     alt13 = 9
-                elif (LA13_0 == 43) :
+                elif ((45 <= LA13_0 <= 46)) :
                     alt13 = 10
-                elif (LA13_0 == 44) :
+                elif (LA13_0 == 48) :
                     alt13 = 11
-                elif (LA13_0 == 45) :
+                elif (LA13_0 == IDENTIFIER) and (self.synpred34()):
                     alt13 = 12
-                elif (LA13_0 == 46) :
-                    alt13 = 13
-                elif ((49 <= LA13_0 <= 50)) :
-                    alt13 = 14
-                elif (LA13_0 == 52) :
-                    alt13 = 15
-                elif (LA13_0 == IDENTIFIER) and (self.synpred38()):
-                    alt13 = 16
                 else:
                     if self.backtracking > 0:
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | 'BOOLEAN' | 'CHAR8' | 'CHAR16' | 'VOID' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );", 13, 0, self.input)
+                    nvae = NoViableAltException("153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );", 13, 0, self.input)
 
                     raise nvae
 
@@ -1374,36 +1270,8 @@ class CParser(Parser):
 
 
                 elif alt13 == 10:
-                    # C.g:163:4: 'BOOLEAN'
-                    self.match(self.input, 43, self.FOLLOW_43_in_type_specifier411)
-                    if self.failed:
-                        return 
-
-
-                elif alt13 == 11:
-                    # C.g:164:4: 'CHAR8'
-                    self.match(self.input, 44, self.FOLLOW_44_in_type_specifier416)
-                    if self.failed:
-                        return 
-
-
-                elif alt13 == 12:
-                    # C.g:165:4: 'CHAR16'
-                    self.match(self.input, 45, self.FOLLOW_45_in_type_specifier421)
-                    if self.failed:
-                        return 
-
-
-                elif alt13 == 13:
-                    # C.g:166:4: 'VOID'
-                    self.match(self.input, 46, self.FOLLOW_46_in_type_specifier426)
-                    if self.failed:
-                        return 
-
-
-                elif alt13 == 14:
-                    # C.g:167:4: s= struct_or_union_specifier
-                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier433)
+                    # C.g:163:4: s= struct_or_union_specifier
+                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier413)
                     s = self.struct_or_union_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1413,9 +1281,9 @@ class CParser(Parser):
 
 
 
-                elif alt13 == 15:
-                    # C.g:168:4: e= enum_specifier
-                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier442)
+                elif alt13 == 11:
+                    # C.g:164:4: e= enum_specifier
+                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier422)
                     e = self.enum_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1425,9 +1293,9 @@ class CParser(Parser):
 
 
 
-                elif alt13 == 16:
-                    # C.g:169:4: ( IDENTIFIER ( type_qualifier )* declarator )=> type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_specifier459)
+                elif alt13 == 12:
+                    # C.g:165:4: ( IDENTIFIER ( type_qualifier )* declarator )=> type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_specifier439)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -1450,7 +1318,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_id
-    # C.g:172:1: type_id : IDENTIFIER ;
+    # C.g:168:1: type_id : IDENTIFIER ;
     def type_id(self, ):
 
         type_id_StartIndex = self.input.index()
@@ -1459,9 +1327,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):
                     return 
 
-                # C.g:173:5: ( IDENTIFIER )
-                # C.g:173:9: IDENTIFIER
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id475)
+                # C.g:169:5: ( IDENTIFIER )
+                # C.g:169:9: IDENTIFIER
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id455)
                 if self.failed:
                     return 
 
@@ -1489,7 +1357,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union_specifier
-    # C.g:177:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
+    # C.g:173:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
     def struct_or_union_specifier(self, ):
 
         retval = self.struct_or_union_specifier_return()
@@ -1500,37 +1368,37 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):
                     return retval
 
-                # C.g:179:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
+                # C.g:175:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
                 alt15 = 2
                 LA15_0 = self.input.LA(1)
 
-                if ((49 <= LA15_0 <= 50)) :
+                if ((45 <= LA15_0 <= 46)) :
                     LA15_1 = self.input.LA(2)
 
                     if (LA15_1 == IDENTIFIER) :
                         LA15_2 = self.input.LA(3)
 
-                        if (LA15_2 == 47) :
+                        if (LA15_2 == 43) :
                             alt15 = 1
-                        elif (LA15_2 == EOF or LA15_2 == IDENTIFIER or LA15_2 == 25 or LA15_2 == 27 or (29 <= LA15_2 <= 46) or (49 <= LA15_2 <= 66) or LA15_2 == 68) :
+                        elif (LA15_2 == EOF or LA15_2 == IDENTIFIER or LA15_2 == 25 or LA15_2 == 27 or (29 <= LA15_2 <= 42) or (45 <= LA15_2 <= 63) or LA15_2 == 65) :
                             alt15 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("177:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 2, self.input)
+                            nvae = NoViableAltException("173:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 2, self.input)
 
                             raise nvae
 
-                    elif (LA15_1 == 47) :
+                    elif (LA15_1 == 43) :
                         alt15 = 1
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("177:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 1, self.input)
+                        nvae = NoViableAltException("173:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 1, self.input)
 
                         raise nvae
 
@@ -1539,18 +1407,18 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("177:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 0, self.input)
+                    nvae = NoViableAltException("173:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 0, self.input)
 
                     raise nvae
 
                 if alt15 == 1:
-                    # C.g:179:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier502)
+                    # C.g:175:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier482)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    # C.g:179:20: ( IDENTIFIER )?
+                    # C.g:175:20: ( IDENTIFIER )?
                     alt14 = 2
                     LA14_0 = self.input.LA(1)
 
@@ -1558,33 +1426,33 @@ class CParser(Parser):
                         alt14 = 1
                     if alt14 == 1:
                         # C.g:0:0: IDENTIFIER
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier504)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier484)
                         if self.failed:
                             return retval
 
 
 
-                    self.match(self.input, 47, self.FOLLOW_47_in_struct_or_union_specifier507)
+                    self.match(self.input, 43, self.FOLLOW_43_in_struct_or_union_specifier487)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier509)
+                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier489)
                     self.struct_declaration_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 48, self.FOLLOW_48_in_struct_or_union_specifier511)
+                    self.match(self.input, 44, self.FOLLOW_44_in_struct_or_union_specifier491)
                     if self.failed:
                         return retval
 
 
                 elif alt15 == 2:
-                    # C.g:180:4: struct_or_union IDENTIFIER
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier516)
+                    # C.g:176:4: struct_or_union IDENTIFIER
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier496)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier518)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier498)
                     if self.failed:
                         return retval
 
@@ -1607,7 +1475,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union
-    # C.g:183:1: struct_or_union : ( 'struct' | 'union' );
+    # C.g:179:1: struct_or_union : ( 'struct' | 'union' );
     def struct_or_union(self, ):
 
         struct_or_union_StartIndex = self.input.index()
@@ -1616,9 +1484,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):
                     return 
 
-                # C.g:184:2: ( 'struct' | 'union' )
+                # C.g:180:2: ( 'struct' | 'union' )
                 # C.g:
-                if (49 <= self.input.LA(1) <= 50):
+                if (45 <= self.input.LA(1) <= 46):
                     self.input.consume();
                     self.errorRecovery = False
                     self.failed = False
@@ -1654,7 +1522,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration_list
-    # C.g:188:1: struct_declaration_list : ( struct_declaration )+ ;
+    # C.g:184:1: struct_declaration_list : ( struct_declaration )+ ;
     def struct_declaration_list(self, ):
 
         struct_declaration_list_StartIndex = self.input.index()
@@ -1663,21 +1531,21 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):
                     return 
 
-                # C.g:189:2: ( ( struct_declaration )+ )
-                # C.g:189:4: ( struct_declaration )+
-                # C.g:189:4: ( struct_declaration )+
+                # C.g:185:2: ( ( struct_declaration )+ )
+                # C.g:185:4: ( struct_declaration )+
+                # C.g:185:4: ( struct_declaration )+
                 cnt16 = 0
                 while True: #loop16
                     alt16 = 2
                     LA16_0 = self.input.LA(1)
 
-                    if (LA16_0 == IDENTIFIER or (34 <= LA16_0 <= 46) or (49 <= LA16_0 <= 50) or (52 <= LA16_0 <= 60)) :
+                    if (LA16_0 == IDENTIFIER or (34 <= LA16_0 <= 42) or (45 <= LA16_0 <= 46) or (48 <= LA16_0 <= 57)) :
                         alt16 = 1
 
 
                     if alt16 == 1:
                         # C.g:0:0: struct_declaration
-                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list545)
+                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list525)
                         self.struct_declaration()
                         self.following.pop()
                         if self.failed:
@@ -1717,7 +1585,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration
-    # C.g:192:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
+    # C.g:188:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
     def struct_declaration(self, ):
 
         struct_declaration_StartIndex = self.input.index()
@@ -1726,19 +1594,19 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):
                     return 
 
-                # C.g:193:2: ( specifier_qualifier_list struct_declarator_list ';' )
-                # C.g:193:4: specifier_qualifier_list struct_declarator_list ';'
-                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration557)
+                # C.g:189:2: ( specifier_qualifier_list struct_declarator_list ';' )
+                # C.g:189:4: specifier_qualifier_list struct_declarator_list ';'
+                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration537)
                 self.specifier_qualifier_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration559)
+                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration539)
                 self.struct_declarator_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration561)
+                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration541)
                 if self.failed:
                     return 
 
@@ -1760,7 +1628,7 @@ class CParser(Parser):
 
 
     # $ANTLR start specifier_qualifier_list
-    # C.g:196:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
+    # C.g:192:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
     def specifier_qualifier_list(self, ):
 
         specifier_qualifier_list_StartIndex = self.input.index()
@@ -1769,47 +1637,47 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):
                     return 
 
-                # C.g:197:2: ( ( type_qualifier | type_specifier )+ )
-                # C.g:197:4: ( type_qualifier | type_specifier )+
-                # C.g:197:4: ( type_qualifier | type_specifier )+
+                # C.g:193:2: ( ( type_qualifier | type_specifier )+ )
+                # C.g:193:4: ( type_qualifier | type_specifier )+
+                # C.g:193:4: ( type_qualifier | type_specifier )+
                 cnt17 = 0
                 while True: #loop17
                     alt17 = 3
                     LA17 = self.input.LA(1)
                     if LA17 == IDENTIFIER:
                         LA17 = self.input.LA(2)
-                        if LA17 == 66:
-                            LA17_27 = self.input.LA(3)
+                        if LA17 == 63:
+                            LA17_23 = self.input.LA(3)
 
-                            if (self.synpred44()) :
+                            if (self.synpred40()) :
                                 alt17 = 2
 
 
-                        elif LA17 == 64:
-                            LA17_28 = self.input.LA(3)
+                        elif LA17 == 61:
+                            LA17_24 = self.input.LA(3)
 
-                            if (self.synpred44()) :
+                            if (self.synpred40()) :
                                 alt17 = 2
 
 
-                        elif LA17 == 51:
-                            LA17_29 = self.input.LA(3)
+                        elif LA17 == 47:
+                            LA17_25 = self.input.LA(3)
 
-                            if (self.synpred44()) :
+                            if (self.synpred40()) :
                                 alt17 = 2
 
 
-                        elif LA17 == EOF or LA17 == IDENTIFIER or LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 43 or LA17 == 44 or LA17 == 45 or LA17 == 46 or LA17 == 49 or LA17 == 50 or LA17 == 52 or LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57 or LA17 == 58 or LA17 == 59 or LA17 == 60 or LA17 == 61 or LA17 == 62 or LA17 == 63 or LA17 == 65 or LA17 == 68:
+                        elif LA17 == EOF or LA17 == IDENTIFIER or LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 45 or LA17 == 46 or LA17 == 48 or LA17 == 49 or LA17 == 50 or LA17 == 51 or LA17 == 52 or LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57 or LA17 == 58 or LA17 == 59 or LA17 == 60 or LA17 == 62 or LA17 == 65:
                             alt17 = 2
 
-                    elif LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57 or LA17 == 58 or LA17 == 59 or LA17 == 60:
+                    elif LA17 == 49 or LA17 == 50 or LA17 == 51 or LA17 == 52 or LA17 == 53 or LA17 == 54 or LA17 == 55 or LA17 == 56 or LA17 == 57:
                         alt17 = 1
-                    elif LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 43 or LA17 == 44 or LA17 == 45 or LA17 == 46 or LA17 == 49 or LA17 == 50 or LA17 == 52:
+                    elif LA17 == 34 or LA17 == 35 or LA17 == 36 or LA17 == 37 or LA17 == 38 or LA17 == 39 or LA17 == 40 or LA17 == 41 or LA17 == 42 or LA17 == 45 or LA17 == 46 or LA17 == 48:
                         alt17 = 2
 
                     if alt17 == 1:
-                        # C.g:197:6: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list574)
+                        # C.g:193:6: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list554)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -1817,8 +1685,8 @@ class CParser(Parser):
 
 
                     elif alt17 == 2:
-                        # C.g:197:23: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list578)
+                        # C.g:193:23: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list558)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1858,7 +1726,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator_list
-    # C.g:200:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
+    # C.g:196:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
     def struct_declarator_list(self, ):
 
         struct_declarator_list_StartIndex = self.input.index()
@@ -1867,14 +1735,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):
                     return 
 
-                # C.g:201:2: ( struct_declarator ( ',' struct_declarator )* )
-                # C.g:201:4: struct_declarator ( ',' struct_declarator )*
-                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list592)
+                # C.g:197:2: ( struct_declarator ( ',' struct_declarator )* )
+                # C.g:197:4: struct_declarator ( ',' struct_declarator )*
+                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list572)
                 self.struct_declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:201:22: ( ',' struct_declarator )*
+                # C.g:197:22: ( ',' struct_declarator )*
                 while True: #loop18
                     alt18 = 2
                     LA18_0 = self.input.LA(1)
@@ -1884,11 +1752,11 @@ class CParser(Parser):
 
 
                     if alt18 == 1:
-                        # C.g:201:23: ',' struct_declarator
-                        self.match(self.input, 27, self.FOLLOW_27_in_struct_declarator_list595)
+                        # C.g:197:23: ',' struct_declarator
+                        self.match(self.input, 27, self.FOLLOW_27_in_struct_declarator_list575)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list597)
+                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list577)
                         self.struct_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1918,7 +1786,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator
-    # C.g:204:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
+    # C.g:200:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
     def struct_declarator(self, ):
 
         struct_declarator_StartIndex = self.input.index()
@@ -1927,42 +1795,42 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):
                     return 
 
-                # C.g:205:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
+                # C.g:201:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
-                if (LA20_0 == IDENTIFIER or (61 <= LA20_0 <= 64) or LA20_0 == 68) :
+                if (LA20_0 == IDENTIFIER or (58 <= LA20_0 <= 61) or LA20_0 == 65) :
                     alt20 = 1
-                elif (LA20_0 == 51) :
+                elif (LA20_0 == 47) :
                     alt20 = 2
                 else:
                     if self.backtracking > 0:
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("204:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
+                    nvae = NoViableAltException("200:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
 
                     raise nvae
 
                 if alt20 == 1:
-                    # C.g:205:4: declarator ( ':' constant_expression )?
-                    self.following.append(self.FOLLOW_declarator_in_struct_declarator610)
+                    # C.g:201:4: declarator ( ':' constant_expression )?
+                    self.following.append(self.FOLLOW_declarator_in_struct_declarator590)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:205:15: ( ':' constant_expression )?
+                    # C.g:201:15: ( ':' constant_expression )?
                     alt19 = 2
                     LA19_0 = self.input.LA(1)
 
-                    if (LA19_0 == 51) :
+                    if (LA19_0 == 47) :
                         alt19 = 1
                     if alt19 == 1:
-                        # C.g:205:16: ':' constant_expression
-                        self.match(self.input, 51, self.FOLLOW_51_in_struct_declarator613)
+                        # C.g:201:16: ':' constant_expression
+                        self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator593)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator615)
+                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator595)
                         self.constant_expression()
                         self.following.pop()
                         if self.failed:
@@ -1973,11 +1841,11 @@ class CParser(Parser):
 
 
                 elif alt20 == 2:
-                    # C.g:206:4: ':' constant_expression
-                    self.match(self.input, 51, self.FOLLOW_51_in_struct_declarator622)
+                    # C.g:202:4: ':' constant_expression
+                    self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator602)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator624)
+                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator604)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -2006,7 +1874,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enum_specifier
-    # C.g:209:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
+    # C.g:205:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );
     def enum_specifier(self, ):
 
         retval = self.enum_specifier_return()
@@ -2017,37 +1885,37 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):
                     return retval
 
-                # C.g:211:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
-                alt21 = 3
-                LA21_0 = self.input.LA(1)
+                # C.g:207:2: ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER )
+                alt23 = 3
+                LA23_0 = self.input.LA(1)
 
-                if (LA21_0 == 52) :
-                    LA21_1 = self.input.LA(2)
+                if (LA23_0 == 48) :
+                    LA23_1 = self.input.LA(2)
 
-                    if (LA21_1 == IDENTIFIER) :
-                        LA21_2 = self.input.LA(3)
+                    if (LA23_1 == IDENTIFIER) :
+                        LA23_2 = self.input.LA(3)
 
-                        if (LA21_2 == 47) :
-                            alt21 = 2
-                        elif (LA21_2 == EOF or LA21_2 == IDENTIFIER or LA21_2 == 25 or LA21_2 == 27 or (29 <= LA21_2 <= 46) or (49 <= LA21_2 <= 66) or LA21_2 == 68) :
-                            alt21 = 3
+                        if (LA23_2 == 43) :
+                            alt23 = 2
+                        elif (LA23_2 == EOF or LA23_2 == IDENTIFIER or LA23_2 == 25 or LA23_2 == 27 or (29 <= LA23_2 <= 42) or (45 <= LA23_2 <= 63) or LA23_2 == 65) :
+                            alt23 = 3
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("209:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 2, self.input)
+                            nvae = NoViableAltException("205:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 2, self.input)
 
                             raise nvae
 
-                    elif (LA21_1 == 47) :
-                        alt21 = 1
+                    elif (LA23_1 == 43) :
+                        alt23 = 1
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("209:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 1, self.input)
+                        nvae = NoViableAltException("205:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 1, self.input)
 
                         raise nvae
 
@@ -2056,55 +1924,83 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("209:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 0, self.input)
+                    nvae = NoViableAltException("205:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 0, self.input)
 
                     raise nvae
 
-                if alt21 == 1:
-                    # C.g:211:4: 'enum' '{' enumerator_list '}'
-                    self.match(self.input, 52, self.FOLLOW_52_in_enum_specifier642)
+                if alt23 == 1:
+                    # C.g:207:4: 'enum' '{' enumerator_list ( ',' )? '}'
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier622)
                     if self.failed:
                         return retval
-                    self.match(self.input, 47, self.FOLLOW_47_in_enum_specifier644)
+                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier624)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier646)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier626)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier648)
+                    # C.g:207:31: ( ',' )?
+                    alt21 = 2
+                    LA21_0 = self.input.LA(1)
+
+                    if (LA21_0 == 27) :
+                        alt21 = 1
+                    if alt21 == 1:
+                        # C.g:0:0: ','
+                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier628)
+                        if self.failed:
+                            return retval
+
+
+
+                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier631)
                     if self.failed:
                         return retval
 
 
-                elif alt21 == 2:
-                    # C.g:212:4: 'enum' IDENTIFIER '{' enumerator_list '}'
-                    self.match(self.input, 52, self.FOLLOW_52_in_enum_specifier653)
+                elif alt23 == 2:
+                    # C.g:208:4: 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}'
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier636)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier655)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier638)
                     if self.failed:
                         return retval
-                    self.match(self.input, 47, self.FOLLOW_47_in_enum_specifier657)
+                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier640)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier659)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier642)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier661)
+                    # C.g:208:42: ( ',' )?
+                    alt22 = 2
+                    LA22_0 = self.input.LA(1)
+
+                    if (LA22_0 == 27) :
+                        alt22 = 1
+                    if alt22 == 1:
+                        # C.g:0:0: ','
+                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier644)
+                        if self.failed:
+                            return retval
+
+
+
+                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier647)
                     if self.failed:
                         return retval
 
 
-                elif alt21 == 3:
-                    # C.g:213:4: 'enum' IDENTIFIER
-                    self.match(self.input, 52, self.FOLLOW_52_in_enum_specifier666)
+                elif alt23 == 3:
+                    # C.g:209:4: 'enum' IDENTIFIER
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier652)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier668)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier654)
                     if self.failed:
                         return retval
 
@@ -2127,7 +2023,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator_list
-    # C.g:216:1: enumerator_list : enumerator ( ',' enumerator )* ;
+    # C.g:212:1: enumerator_list : enumerator ( ',' enumerator )* ;
     def enumerator_list(self, ):
 
         enumerator_list_StartIndex = self.input.index()
@@ -2136,28 +2032,33 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):
                     return 
 
-                # C.g:217:2: ( enumerator ( ',' enumerator )* )
-                # C.g:217:4: enumerator ( ',' enumerator )*
-                self.following.append(self.FOLLOW_enumerator_in_enumerator_list679)
+                # C.g:213:2: ( enumerator ( ',' enumerator )* )
+                # C.g:213:4: enumerator ( ',' enumerator )*
+                self.following.append(self.FOLLOW_enumerator_in_enumerator_list665)
                 self.enumerator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:217:15: ( ',' enumerator )*
-                while True: #loop22
-                    alt22 = 2
-                    LA22_0 = self.input.LA(1)
+                # C.g:213:15: ( ',' enumerator )*
+                while True: #loop24
+                    alt24 = 2
+                    LA24_0 = self.input.LA(1)
 
-                    if (LA22_0 == 27) :
-                        alt22 = 1
+                    if (LA24_0 == 27) :
+                        LA24_1 = self.input.LA(2)
 
+                        if (LA24_1 == IDENTIFIER) :
+                            alt24 = 1
 
-                    if alt22 == 1:
-                        # C.g:217:16: ',' enumerator
-                        self.match(self.input, 27, self.FOLLOW_27_in_enumerator_list682)
+
+
+
+                    if alt24 == 1:
+                        # C.g:213:16: ',' enumerator
+                        self.match(self.input, 27, self.FOLLOW_27_in_enumerator_list668)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list684)
+                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list670)
                         self.enumerator()
                         self.following.pop()
                         if self.failed:
@@ -2165,7 +2066,7 @@ class CParser(Parser):
 
 
                     else:
-                        break #loop22
+                        break #loop24
 
 
 
@@ -2187,7 +2088,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator
-    # C.g:220:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
+    # C.g:216:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
     def enumerator(self, ):
 
         enumerator_StartIndex = self.input.index()
@@ -2196,23 +2097,23 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):
                     return 
 
-                # C.g:221:2: ( IDENTIFIER ( '=' constant_expression )? )
-                # C.g:221:4: IDENTIFIER ( '=' constant_expression )?
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator697)
+                # C.g:217:2: ( IDENTIFIER ( '=' constant_expression )? )
+                # C.g:217:4: IDENTIFIER ( '=' constant_expression )?
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator683)
                 if self.failed:
                     return 
-                # C.g:221:15: ( '=' constant_expression )?
-                alt23 = 2
-                LA23_0 = self.input.LA(1)
-
-                if (LA23_0 == 28) :
-                    alt23 = 1
-                if alt23 == 1:
-                    # C.g:221:16: '=' constant_expression
-                    self.match(self.input, 28, self.FOLLOW_28_in_enumerator700)
+                # C.g:217:15: ( '=' constant_expression )?
+                alt25 = 2
+                LA25_0 = self.input.LA(1)
+
+                if (LA25_0 == 28) :
+                    alt25 = 1
+                if alt25 == 1:
+                    # C.g:217:16: '=' constant_expression
+                    self.match(self.input, 28, self.FOLLOW_28_in_enumerator686)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_enumerator702)
+                    self.following.append(self.FOLLOW_constant_expression_in_enumerator688)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -2239,7 +2140,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_qualifier
-    # C.g:224:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' );
+    # C.g:220:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' );
     def type_qualifier(self, ):
 
         type_qualifier_StartIndex = self.input.index()
@@ -2248,9 +2149,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):
                     return 
 
-                # C.g:225:2: ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' )
+                # C.g:221:2: ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' )
                 # C.g:
-                if (53 <= self.input.LA(1) <= 60):
+                if (49 <= self.input.LA(1) <= 57):
                     self.input.consume();
                     self.errorRecovery = False
                     self.failed = False
@@ -2292,7 +2193,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator
-    # C.g:235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );
+    # C.g:232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );
     def declarator(self, ):
 
         retval = self.declarator_return()
@@ -2303,321 +2204,321 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):
                     return retval
 
-                # C.g:236:2: ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer )
-                alt32 = 3
-                LA32 = self.input.LA(1)
-                if LA32 == 68:
-                    LA32_1 = self.input.LA(2)
+                # C.g:233:2: ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer )
+                alt34 = 3
+                LA34 = self.input.LA(1)
+                if LA34 == 65:
+                    LA34_1 = self.input.LA(2)
 
-                    if (self.synpred63()) :
-                        alt32 = 1
-                    elif (self.synpred68()) :
-                        alt32 = 2
+                    if (self.synpred62()) :
+                        alt34 = 1
+                    elif (self.synpred67()) :
+                        alt34 = 2
                     elif (True) :
-                        alt32 = 3
+                        alt34 = 3
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 1, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 1, self.input)
 
                         raise nvae
 
-                elif LA32 == 61:
-                    LA32 = self.input.LA(2)
-                    if LA32 == 62:
-                        LA32_43 = self.input.LA(3)
+                elif LA34 == 58:
+                    LA34 = self.input.LA(2)
+                    if LA34 == 59:
+                        LA34_39 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 43, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 39, self.input)
 
                             raise nvae
 
-                    elif LA32 == 63:
-                        LA32_44 = self.input.LA(3)
+                    elif LA34 == 60:
+                        LA34_40 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 44, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 40, self.input)
 
                             raise nvae
 
-                    elif LA32 == IDENTIFIER:
-                        LA32_45 = self.input.LA(3)
+                    elif LA34 == 65:
+                        alt34 = 2
+                    elif LA34 == IDENTIFIER:
+                        LA34_42 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 45, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 42, self.input)
 
                             raise nvae
 
-                    elif LA32 == 64:
-                        LA32_46 = self.input.LA(3)
+                    elif LA34 == 61:
+                        LA34_43 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 46, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 43, self.input)
 
                             raise nvae
 
-                    elif LA32 == 68:
-                        alt32 = 2
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 2, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 2, self.input)
 
                         raise nvae
 
-                elif LA32 == 62:
-                    LA32 = self.input.LA(2)
-                    if LA32 == 63:
-                        LA32_48 = self.input.LA(3)
+                elif LA34 == 59:
+                    LA34 = self.input.LA(2)
+                    if LA34 == 60:
+                        LA34_44 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 48, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 44, self.input)
 
                             raise nvae
 
-                    elif LA32 == IDENTIFIER:
-                        LA32_49 = self.input.LA(3)
+                    elif LA34 == IDENTIFIER:
+                        LA34_45 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 49, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 45, self.input)
 
                             raise nvae
 
-                    elif LA32 == 64:
-                        LA32_50 = self.input.LA(3)
+                    elif LA34 == 61:
+                        LA34_46 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 50, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 46, self.input)
 
                             raise nvae
 
-                    elif LA32 == 68:
-                        alt32 = 2
+                    elif LA34 == 65:
+                        alt34 = 2
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 3, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 3, self.input)
 
                         raise nvae
 
-                elif LA32 == 63:
-                    LA32 = self.input.LA(2)
-                    if LA32 == 68:
-                        alt32 = 2
-                    elif LA32 == IDENTIFIER:
-                        LA32_53 = self.input.LA(3)
-
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                elif LA34 == 60:
+                    LA34 = self.input.LA(2)
+                    if LA34 == IDENTIFIER:
+                        LA34_48 = self.input.LA(3)
+
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 53, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 48, self.input)
 
                             raise nvae
 
-                    elif LA32 == 64:
-                        LA32_54 = self.input.LA(3)
+                    elif LA34 == 61:
+                        LA34_49 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 54, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 49, self.input)
 
                             raise nvae
 
+                    elif LA34 == 65:
+                        alt34 = 2
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 4, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 4, self.input)
 
                         raise nvae
 
-                elif LA32 == IDENTIFIER:
-                    LA32_5 = self.input.LA(2)
+                elif LA34 == IDENTIFIER:
+                    LA34_5 = self.input.LA(2)
 
-                    if (self.synpred63()) :
-                        alt32 = 1
-                    elif (self.synpred68()) :
-                        alt32 = 2
+                    if (self.synpred62()) :
+                        alt34 = 1
+                    elif (self.synpred67()) :
+                        alt34 = 2
                     else:
                         if self.backtracking > 0:
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 5, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 5, self.input)
 
                         raise nvae
 
-                elif LA32 == 64:
-                    LA32 = self.input.LA(2)
-                    if LA32 == 68:
-                        LA32_89 = self.input.LA(3)
+                elif LA34 == 61:
+                    LA34 = self.input.LA(2)
+                    if LA34 == 65:
+                        LA34_81 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 89, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 81, self.input)
 
                             raise nvae
 
-                    elif LA32 == 61:
-                        LA32_90 = self.input.LA(3)
+                    elif LA34 == 58:
+                        LA34_82 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 90, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 82, self.input)
 
                             raise nvae
 
-                    elif LA32 == 62:
-                        LA32_91 = self.input.LA(3)
+                    elif LA34 == 59:
+                        LA34_83 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 91, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 83, self.input)
 
                             raise nvae
 
-                    elif LA32 == 63:
-                        LA32_92 = self.input.LA(3)
+                    elif LA34 == 60:
+                        LA34_84 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 92, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 84, self.input)
 
                             raise nvae
 
-                    elif LA32 == IDENTIFIER:
-                        LA32_93 = self.input.LA(3)
+                    elif LA34 == IDENTIFIER:
+                        LA34_85 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 93, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 85, self.input)
 
                             raise nvae
 
-                    elif LA32 == 64:
-                        LA32_94 = self.input.LA(3)
+                    elif LA34 == 61:
+                        LA34_86 = self.input.LA(3)
 
-                        if (self.synpred63()) :
-                            alt32 = 1
-                        elif (self.synpred68()) :
-                            alt32 = 2
+                        if (self.synpred62()) :
+                            alt34 = 1
+                        elif (self.synpred67()) :
+                            alt34 = 2
                         else:
                             if self.backtracking > 0:
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 94, self.input)
+                            nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 86, self.input)
 
                             raise nvae
 
@@ -2626,7 +2527,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 6, self.input)
+                        nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 6, self.input)
 
                         raise nvae
 
@@ -2635,130 +2536,130 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("235:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 32, 0, self.input)
+                    nvae = NoViableAltException("232:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator | pointer );", 34, 0, self.input)
 
                     raise nvae
 
-                if alt32 == 1:
-                    # C.g:236:4: ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator
-                    # C.g:236:4: ( pointer )?
-                    alt24 = 2
-                    LA24_0 = self.input.LA(1)
-
-                    if (LA24_0 == 68) :
-                        alt24 = 1
-                    if alt24 == 1:
-                        # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_declarator761)
-                        self.pointer()
-                        self.following.pop()
-                        if self.failed:
-                            return retval
-
-
-
-                    # C.g:236:13: ( 'EFIAPI' )?
-                    alt25 = 2
-                    LA25_0 = self.input.LA(1)
-
-                    if (LA25_0 == 61) :
-                        alt25 = 1
-                    if alt25 == 1:
-                        # C.g:236:14: 'EFIAPI'
-                        self.match(self.input, 61, self.FOLLOW_61_in_declarator765)
-                        if self.failed:
-                            return retval
-
-
-
-                    # C.g:236:25: ( 'EFI_BOOTSERVICE' )?
+                if alt34 == 1:
+                    # C.g:233:4: ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator
+                    # C.g:233:4: ( pointer )?
                     alt26 = 2
                     LA26_0 = self.input.LA(1)
 
-                    if (LA26_0 == 62) :
+                    if (LA26_0 == 65) :
                         alt26 = 1
                     if alt26 == 1:
-                        # C.g:236:26: 'EFI_BOOTSERVICE'
-                        self.match(self.input, 62, self.FOLLOW_62_in_declarator770)
+                        # C.g:0:0: pointer
+                        self.following.append(self.FOLLOW_pointer_in_declarator752)
+                        self.pointer()
+                        self.following.pop()
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:236:46: ( 'EFI_RUNTIMESERVICE' )?
+                    # C.g:233:13: ( 'EFIAPI' )?
                     alt27 = 2
                     LA27_0 = self.input.LA(1)
 
-                    if (LA27_0 == 63) :
+                    if (LA27_0 == 58) :
                         alt27 = 1
                     if alt27 == 1:
-                        # C.g:236:47: 'EFI_RUNTIMESERVICE'
-                        self.match(self.input, 63, self.FOLLOW_63_in_declarator775)
+                        # C.g:233:14: 'EFIAPI'
+                        self.match(self.input, 58, self.FOLLOW_58_in_declarator756)
                         if self.failed:
                             return retval
 
 
 
-                    self.following.append(self.FOLLOW_direct_declarator_in_declarator779)
-                    self.direct_declarator()
-                    self.following.pop()
-                    if self.failed:
-                        return retval
-
-
-                elif alt32 == 2:
-                    # C.g:237:4: ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator
-                    # C.g:237:4: ( 'EFIAPI' )?
+                    # C.g:233:25: ( 'EFI_BOOTSERVICE' )?
                     alt28 = 2
                     LA28_0 = self.input.LA(1)
 
-                    if (LA28_0 == 61) :
+                    if (LA28_0 == 59) :
                         alt28 = 1
                     if alt28 == 1:
-                        # C.g:237:5: 'EFIAPI'
-                        self.match(self.input, 61, self.FOLLOW_61_in_declarator785)
+                        # C.g:233:26: 'EFI_BOOTSERVICE'
+                        self.match(self.input, 59, self.FOLLOW_59_in_declarator761)
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:237:16: ( 'EFI_BOOTSERVICE' )?
+                    # C.g:233:46: ( 'EFI_RUNTIMESERVICE' )?
                     alt29 = 2
                     LA29_0 = self.input.LA(1)
 
-                    if (LA29_0 == 62) :
+                    if (LA29_0 == 60) :
                         alt29 = 1
                     if alt29 == 1:
-                        # C.g:237:17: 'EFI_BOOTSERVICE'
-                        self.match(self.input, 62, self.FOLLOW_62_in_declarator790)
+                        # C.g:233:47: 'EFI_RUNTIMESERVICE'
+                        self.match(self.input, 60, self.FOLLOW_60_in_declarator766)
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:237:37: ( 'EFI_RUNTIMESERVICE' )?
+                    self.following.append(self.FOLLOW_direct_declarator_in_declarator770)
+                    self.direct_declarator()
+                    self.following.pop()
+                    if self.failed:
+                        return retval
+
+
+                elif alt34 == 2:
+                    # C.g:234:4: ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? ( pointer )? direct_declarator
+                    # C.g:234:4: ( 'EFIAPI' )?
                     alt30 = 2
                     LA30_0 = self.input.LA(1)
 
-                    if (LA30_0 == 63) :
+                    if (LA30_0 == 58) :
                         alt30 = 1
                     if alt30 == 1:
-                        # C.g:237:38: 'EFI_RUNTIMESERVICE'
-                        self.match(self.input, 63, self.FOLLOW_63_in_declarator795)
+                        # C.g:234:5: 'EFIAPI'
+                        self.match(self.input, 58, self.FOLLOW_58_in_declarator776)
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:237:61: ( pointer )?
+                    # C.g:234:16: ( 'EFI_BOOTSERVICE' )?
                     alt31 = 2
                     LA31_0 = self.input.LA(1)
 
-                    if (LA31_0 == 68) :
+                    if (LA31_0 == 59) :
                         alt31 = 1
                     if alt31 == 1:
+                        # C.g:234:17: 'EFI_BOOTSERVICE'
+                        self.match(self.input, 59, self.FOLLOW_59_in_declarator781)
+                        if self.failed:
+                            return retval
+
+
+
+                    # C.g:234:37: ( 'EFI_RUNTIMESERVICE' )?
+                    alt32 = 2
+                    LA32_0 = self.input.LA(1)
+
+                    if (LA32_0 == 60) :
+                        alt32 = 1
+                    if alt32 == 1:
+                        # C.g:234:38: 'EFI_RUNTIMESERVICE'
+                        self.match(self.input, 60, self.FOLLOW_60_in_declarator786)
+                        if self.failed:
+                            return retval
+
+
+
+                    # C.g:234:61: ( pointer )?
+                    alt33 = 2
+                    LA33_0 = self.input.LA(1)
+
+                    if (LA33_0 == 65) :
+                        alt33 = 1
+                    if alt33 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_declarator799)
+                        self.following.append(self.FOLLOW_pointer_in_declarator790)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -2766,16 +2667,16 @@ class CParser(Parser):
 
 
 
-                    self.following.append(self.FOLLOW_direct_declarator_in_declarator802)
+                    self.following.append(self.FOLLOW_direct_declarator_in_declarator793)
                     self.direct_declarator()
                     self.following.pop()
                     if self.failed:
                         return retval
 
 
-                elif alt32 == 3:
-                    # C.g:238:4: pointer
-                    self.following.append(self.FOLLOW_pointer_in_declarator807)
+                elif alt34 == 3:
+                    # C.g:235:4: pointer
+                    self.following.append(self.FOLLOW_pointer_in_declarator798)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -2800,7 +2701,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_declarator
-    # C.g:241:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
+    # C.g:238:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
     def direct_declarator(self, ):
 
         direct_declarator_StartIndex = self.input.index()
@@ -2809,268 +2710,247 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
                     return 
 
-                # C.g:242:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
-                alt35 = 2
-                LA35_0 = self.input.LA(1)
+                # C.g:239:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
+                alt37 = 2
+                LA37_0 = self.input.LA(1)
 
-                if (LA35_0 == IDENTIFIER) :
-                    alt35 = 1
-                elif (LA35_0 == 64) :
-                    alt35 = 2
+                if (LA37_0 == IDENTIFIER) :
+                    alt37 = 1
+                elif (LA37_0 == 61) :
+                    alt37 = 2
                 else:
                     if self.backtracking > 0:
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("241:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 35, 0, self.input)
+                    nvae = NoViableAltException("238:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 37, 0, self.input)
 
                     raise nvae
 
-                if alt35 == 1:
-                    # C.g:242:4: IDENTIFIER ( declarator_suffix )*
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator818)
+                if alt37 == 1:
+                    # C.g:239:4: IDENTIFIER ( declarator_suffix )*
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator809)
                     if self.failed:
                         return 
-                    # C.g:242:15: ( declarator_suffix )*
-                    while True: #loop33
-                        alt33 = 2
-                        LA33_0 = self.input.LA(1)
-
-                        if (LA33_0 == 64) :
-                            LA33 = self.input.LA(2)
-                            if LA33 == 65:
-                                LA33_34 = self.input.LA(3)
-
-                                if (self.synpred69()) :
-                                    alt33 = 1
-
-
-                            elif LA33 == IDENTIFIER:
-                                LA33_41 = self.input.LA(3)
+                    # C.g:239:15: ( declarator_suffix )*
+                    while True: #loop35
+                        alt35 = 2
+                        LA35_0 = self.input.LA(1)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                        if (LA35_0 == 61) :
+                            LA35 = self.input.LA(2)
+                            if LA35 == 62:
+                                LA35_30 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 29 or LA33 == 30 or LA33 == 31 or LA33 == 32 or LA33 == 33:
-                                LA33_42 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 65:
+                                LA35_31 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 34:
-                                LA33_43 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 29 or LA35 == 30 or LA35 == 31 or LA35 == 32 or LA35 == 33:
+                                LA35_34 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 35:
-                                LA33_44 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 34:
+                                LA35_35 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 36:
-                                LA33_45 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 35:
+                                LA35_36 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 37:
-                                LA33_46 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 36:
+                                LA35_37 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 38:
-                                LA33_47 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 37:
+                                LA35_38 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 39:
-                                LA33_48 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 38:
+                                LA35_39 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 40:
-                                LA33_49 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 39:
+                                LA35_40 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 41:
-                                LA33_50 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 40:
+                                LA35_41 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 42:
-                                LA33_51 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 41:
+                                LA35_42 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 43:
-                                LA33_52 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 42:
+                                LA35_43 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 44:
-                                LA33_53 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 45 or LA35 == 46:
+                                LA35_44 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 45:
-                                LA33_54 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 48:
+                                LA35_45 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 46:
-                                LA33_55 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == IDENTIFIER:
+                                LA35_46 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 49 or LA33 == 50:
-                                LA33_56 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == 49 or LA35 == 50 or LA35 == 51 or LA35 == 52 or LA35 == 53 or LA35 == 54 or LA35 == 55 or LA35 == 56 or LA35 == 57:
+                                LA35_47 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 52:
-                                LA33_57 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
 
+                        elif (LA35_0 == 63) :
+                            LA35 = self.input.LA(2)
+                            if LA35 == 64:
+                                LA35_51 = self.input.LA(3)
 
-                            elif LA33 == 53 or LA33 == 54 or LA33 == 55 or LA33 == 56 or LA33 == 57 or LA33 == 58 or LA33 == 59 or LA33 == 60:
-                                LA33_58 = self.input.LA(3)
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
 
+                            elif LA35 == 61:
+                                LA35_52 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                        elif (LA33_0 == 66) :
-                            LA33 = self.input.LA(2)
-                            if LA33 == 67:
-                                LA33_59 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == IDENTIFIER:
+                                LA35_53 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == 64:
-                                LA33_60 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == HEX_LITERAL:
+                                LA35_54 = self.input.LA(3)
 
+                                if (self.synpred68()) :
+                                    alt35 = 1
 
-                            elif LA33 == IDENTIFIER:
-                                LA33_61 = self.input.LA(3)
 
-                                if (self.synpred69()) :
-                                    alt33 = 1
+                            elif LA35 == OCTAL_LITERAL:
+                              &