git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@930 7335b...
authorjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 25 Dec 2007 05:52:35 +0000 (05:52 +0000)
committerjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Tue, 25 Dec 2007 05:52:35 +0000 (05:52 +0000)
Source/Python/Ecc/C.g
Source/Python/Ecc/C.tokens [deleted file]
Source/Python/Ecc/CLexer.py
Source/Python/Ecc/CParser.py
Source/Python/Ecc/C__.g [deleted file]

index aea7b2b..8caea3e 100644 (file)
@@ -53,7 +53,6 @@ options {k=1;}
        : ( declaration_specifiers? declarator declaration* '{' )=> function_definition\r
        | declaration\r
        | macro_statement\r
-//     | 'EFI_PEI_CORE_ENTRY_POINT' '(' IDENTIFIER ')'\r
        ;\r
        \r
 \r
@@ -62,10 +61,11 @@ function_definition
 scope Symbols;\r
 @init{\r
   $Symbols::inFunc = True\r
-}\r
+}/*\r
 @after{\r
+  print str($function_definition.start.line) + ',' + str($function_definition.start.charPositionInLine)\r
   print str($function_definition.stop.line) + ',' + str($function_definition.stop.charPositionInLine)\r
-}\r
+}*/\r
        :       declaration_specifiers? declarator\r
                (       declaration+ compound_statement // K&R style\r
                |       compound_statement                              // ANSI style\r
@@ -98,7 +98,7 @@ init_declarator_list
 \r
 init_declarator\r
        : declarator ('=' initializer)? \r
-       //{if not $Symbols::inFunc: self.printTokenInfo($declarator.start.line, $declarator.start.charPositionInLine, $declarator.text)}\r
+       //{self.printTokenInfo($declarator.start.line, $declarator.start.charPositionInLine, $declarator.text)}\r
        ;\r
 \r
 storage_class_specifier\r
@@ -226,8 +226,8 @@ parameter_declaration
        ;\r
 \r
 identifier_list\r
-       : i=IDENTIFIER //{print str($i.line) + ":" + $i.text + " is a type"}\r
-       (',' d=IDENTIFIER /*{print str($d.line) + ":" + $d.text + " is a type"}*/)*\r
+       : IDENTIFIER\r
+       (',' IDENTIFIER)*\r
        ;\r
 \r
 type_name\r
@@ -290,10 +290,10 @@ unary_expression
        ;\r
 \r
 postfix_expression\r
-       :   primary_expression\r
+       :   p=primary_expression\r
         (   '[' expression ']'\r
-        |   '(' ')'\r
-        |   '(' argument_expression_list ')'\r
+        |   '(' ')'//{self.printTokenInfo($p.start.line, $p.start.charPositionInLine, $p.text)}\r
+        |   a='(' c=argument_expression_list b=')' //{self.printTokenInfo($p.start.line, $p.start.charPositionInLine, $p.text)}\r
         |   '.' IDENTIFIER\r
         |   '*' IDENTIFIER\r
         |   '->' IDENTIFIER\r
@@ -360,7 +360,7 @@ assignment_operator
        ;\r
 \r
 conditional_expression\r
-       : logical_or_expression ('?' expression ':' conditional_expression)?\r
+       : e=logical_or_expression ('?' expression ':' conditional_expression {self.printTokenInfo($e.start.line, $e.start.charPositionInLine, $e.text)})?\r
        ;\r
 \r
 logical_or_expression\r
@@ -383,7 +383,7 @@ and_expression
        : equality_expression ('&' equality_expression)*\r
        ;\r
 equality_expression\r
-       : relational_expression (('=='|'!=') relational_expression)*\r
+       : relational_expression (('=='|'!=') relational_expression )*\r
        ;\r
 \r
 relational_expression\r
@@ -434,14 +434,14 @@ expression_statement
        ;\r
 \r
 selection_statement\r
-       : 'if' '(' expression ')' statement (options {k=1; backtrack=false;}:'else' statement)?\r
+       : 'if' '(' e=expression ')' {self.printTokenInfo($e.start.line, $e.start.charPositionInLine, $e.text)} statement (options {k=1; backtrack=false;}:'else' statement)?\r
        | 'switch' '(' expression ')' statement\r
        ;\r
 \r
 iteration_statement\r
-       : 'while' '(' expression ')' statement\r
-       | 'do' statement 'while' '(' expression ')' ';'\r
-       | 'for' '(' expression_statement expression_statement expression? ')' statement\r
+       : 'while' '(' e=expression ')' statement {self.printTokenInfo($e.start.line, $e.start.charPositionInLine, $e.text)}\r
+       | 'do' statement 'while' '(' e=expression ')' ';' {self.printTokenInfo($e.start.line, $e.start.charPositionInLine, $e.text)}\r
+       | 'for' '(' expression_statement e=expression_statement expression? ')' statement {self.printTokenInfo($e.start.line, $e.start.charPositionInLine, $e.text)}\r
        ;\r
 \r
 jump_statement\r
diff --git a/Source/Python/Ecc/C.tokens b/Source/Python/Ecc/C.tokens
deleted file mode 100644 (file)
index 804d6d1..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-CHARACTER_LITERAL=8
-LETTER=11
-Exponent=15
-DECIMAL_LITERAL=7
-IntegerTypeSuffix=14
-UnicodeVocabulary=20
-HexDigit=13
-WS=19
-LINE_COMMAND=23
-COMMENT=21
-LINE_COMMENT=22
-OCTAL_LITERAL=6
-HEX_LITERAL=5
-FLOATING_POINT_LITERAL=10
-UnicodeEscape=18
-EscapeSequence=12
-STRING_LITERAL=9
-OctalEscape=17
-IDENTIFIER=4
-FloatTypeSuffix=16
-'<'=86
-'goto'=100
-'-='=73
-'>'=87
-'case'=92
-'else'=95
-'/='=70
-'-'=58
-'?'=79
-'!='=85
-'%='=71
-'>='=89
-'do'=98
-'<<'=90
-'signed'=39
-'auto'=30
-'register'=31
-'sizeof'=63
-'<='=88
-'||'=80
-'double'=38
-'typedef'=24
-'='=27
-'volatile'=48
-'*='=69
-'OUT'=50
-'|='=78
-'struct'=43
-'++'=61
-'union'=44
-'{'=41
-'void'=32
-'float'=37
-':'=45
-'for'=99
-'.'=64
-'short'=34
-'*'=55
-'}'=42
-'~'=67
-'->'=65
-'break'=102
-'<<='=74
-'unsigned'=40
-'extern'=28
-'%'=60
-';'=25
-'default'=93
-']'=54
-','=26
-'&'=66
-'&&'=81
-'int'=35
-'&='=76
-'while'=97
-'continue'=101
-'const'=47
-'['=53
-'^'=83
-'long'=36
-'/'=59
-'return'=103
-'|'=82
-'enum'=46
-')'=52
-'>>='=75
-'IN'=49
-'=='=84
-'static'=29
-'if'=94
-'char'=33
-'!'=68
-'+='=72
-'switch'=96
-'('=51
-'>>'=91
-'--'=62
-'^='=77
-'+'=57
-'...'=56
index b6fa7b7..1127c26 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2007-11-30 17:29:47
+# $ANTLR 3.0.1 C.g 2007-12-12 15:55:53
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -1965,11 +1965,11 @@ class CLexer(Lexer):
         try:
             self.type = IDENTIFIER
 
-            # C.g:456:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:456:4: LETTER ( LETTER | '0' .. '9' )*
+            # C.g:457:2: ( LETTER ( LETTER | '0' .. '9' )* )
+            # C.g:457:4: LETTER ( LETTER | '0' .. '9' )*
             self.mLETTER()
 
-            # C.g:456:11: ( LETTER | '0' .. '9' )*
+            # C.g:457:11: ( LETTER | '0' .. '9' )*
             while True: #loop1
                 alt1 = 2
                 LA1_0 = self.input.LA(1)
@@ -2011,7 +2011,7 @@ class CLexer(Lexer):
     def mLETTER(self, ):
 
         try:
-            # C.g:461:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
+            # C.g:462: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();
@@ -2040,11 +2040,11 @@ class CLexer(Lexer):
         try:
             self.type = CHARACTER_LITERAL
 
-            # C.g:468:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:468:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            # C.g:469:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            # C.g:469:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
             self.match(u'\'')
 
-            # C.g:468:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:469:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             alt2 = 2
             LA2_0 = self.input.LA(1)
 
@@ -2053,18 +2053,18 @@ class CLexer(Lexer):
             elif ((u'\u0000' <= LA2_0 <= u'&') or (u'(' <= LA2_0 <= u'[') or (u']' <= LA2_0 <= u'\uFFFE')) :
                 alt2 = 2
             else:
-                nvae = NoViableAltException("468:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
+                nvae = NoViableAltException("469:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
 
                 raise nvae
 
             if alt2 == 1:
-                # C.g:468:16: EscapeSequence
+                # C.g:469:16: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt2 == 2:
-                # C.g:468:33: ~ ( '\\'' | '\\\\' )
+                # C.g:469:33: ~ ( '\\'' | '\\\\' )
                 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();
 
@@ -2097,16 +2097,16 @@ class CLexer(Lexer):
         try:
             self.type = STRING_LITERAL
 
-            # C.g:472:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:472:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:472:8: ( 'L' )?
+            # C.g:473:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            # C.g:473:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            # C.g:473:8: ( 'L' )?
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
             if (LA3_0 == u'L') :
                 alt3 = 1
             if alt3 == 1:
-                # C.g:472:9: 'L'
+                # C.g:473:9: 'L'
                 self.match(u'L')
 
 
@@ -2114,7 +2114,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:472:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:473:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             while True: #loop4
                 alt4 = 3
                 LA4_0 = self.input.LA(1)
@@ -2126,13 +2126,13 @@ class CLexer(Lexer):
 
 
                 if alt4 == 1:
-                    # C.g:472:21: EscapeSequence
+                    # C.g:473:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt4 == 2:
-                    # C.g:472:38: ~ ( '\\\\' | '\"' )
+                    # C.g:473: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();
 
@@ -2168,8 +2168,8 @@ class CLexer(Lexer):
         try:
             self.type = HEX_LITERAL
 
-            # C.g:475:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:475:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            # C.g:476:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            # C.g:476:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
             if self.input.LA(1) == u'X' or self.input.LA(1) == u'x':
@@ -2181,7 +2181,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:475:29: ( HexDigit )+
+            # C.g:476:29: ( HexDigit )+
             cnt5 = 0
             while True: #loop5
                 alt5 = 2
@@ -2192,7 +2192,7 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:475:29: HexDigit
+                    # C.g:476:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2207,14 +2207,14 @@ class CLexer(Lexer):
                 cnt5 += 1
 
 
-            # C.g:475:39: ( IntegerTypeSuffix )?
+            # C.g:476:39: ( IntegerTypeSuffix )?
             alt6 = 2
             LA6_0 = self.input.LA(1)
 
             if (LA6_0 == u'L' or LA6_0 == u'U' or LA6_0 == u'l' or LA6_0 == u'u') :
                 alt6 = 1
             if alt6 == 1:
-                # C.g:475:39: IntegerTypeSuffix
+                # C.g:476:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2238,9 +2238,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:477:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:477:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:477:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            # C.g:478:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            # C.g:478:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            # C.g:478:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             alt8 = 2
             LA8_0 = self.input.LA(1)
 
@@ -2249,21 +2249,21 @@ class CLexer(Lexer):
             elif ((u'1' <= LA8_0 <= u'9')) :
                 alt8 = 2
             else:
-                nvae = NoViableAltException("477:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
+                nvae = NoViableAltException("478:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
 
                 raise nvae
 
             if alt8 == 1:
-                # C.g:477:20: '0'
+                # C.g:478:20: '0'
                 self.match(u'0')
 
 
 
             elif alt8 == 2:
-                # C.g:477:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:478:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:477:35: ( '0' .. '9' )*
+                # C.g:478:35: ( '0' .. '9' )*
                 while True: #loop7
                     alt7 = 2
                     LA7_0 = self.input.LA(1)
@@ -2273,7 +2273,7 @@ class CLexer(Lexer):
 
 
                     if alt7 == 1:
-                        # C.g:477:35: '0' .. '9'
+                        # C.g:478:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2285,14 +2285,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:477:46: ( IntegerTypeSuffix )?
+            # C.g:478:46: ( IntegerTypeSuffix )?
             alt9 = 2
             LA9_0 = self.input.LA(1)
 
             if (LA9_0 == u'L' or LA9_0 == u'U' or LA9_0 == u'l' or LA9_0 == u'u') :
                 alt9 = 1
             if alt9 == 1:
-                # C.g:477:46: IntegerTypeSuffix
+                # C.g:478:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2316,11 +2316,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:479:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:479:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            # C.g:480:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            # C.g:480:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
-            # C.g:479:21: ( '0' .. '7' )+
+            # C.g:480:21: ( '0' .. '7' )+
             cnt10 = 0
             while True: #loop10
                 alt10 = 2
@@ -2331,7 +2331,7 @@ class CLexer(Lexer):
 
 
                 if alt10 == 1:
-                    # C.g:479:22: '0' .. '7'
+                    # C.g:480:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2346,14 +2346,14 @@ class CLexer(Lexer):
                 cnt10 += 1
 
 
-            # C.g:479:33: ( IntegerTypeSuffix )?
+            # C.g:480:33: ( IntegerTypeSuffix )?
             alt11 = 2
             LA11_0 = self.input.LA(1)
 
             if (LA11_0 == u'L' or LA11_0 == u'U' or LA11_0 == u'l' or LA11_0 == u'u') :
                 alt11 = 1
             if alt11 == 1:
-                # C.g:479:33: IntegerTypeSuffix
+                # C.g:480:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2375,8 +2375,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:482:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:482:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            # C.g:483:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            # C.g:483: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();
 
@@ -2402,7 +2402,7 @@ class CLexer(Lexer):
     def mIntegerTypeSuffix(self, ):
 
         try:
-            # C.g:486:2: ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? )
+            # C.g:487:2: ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? )
             alt14 = 2
             LA14_0 = self.input.LA(1)
 
@@ -2416,13 +2416,13 @@ class CLexer(Lexer):
             elif (LA14_0 == u'L' or LA14_0 == u'l') :
                 alt14 = 1
             else:
-                nvae = NoViableAltException("484:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
+                nvae = NoViableAltException("485:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
 
                 raise nvae
 
             if alt14 == 1:
-                # C.g:486:4: ( 'u' | 'U' )? ( 'l' | 'L' )
-                # C.g:486:4: ( 'u' | 'U' )?
+                # C.g:487:4: ( 'u' | 'U' )? ( 'l' | 'L' )
+                # C.g:487:4: ( 'u' | 'U' )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
@@ -2454,7 +2454,7 @@ class CLexer(Lexer):
 
 
             elif alt14 == 2:
-                # C.g:487:4: ( 'u' | 'U' ) ( 'l' | 'L' )?
+                # C.g:488:4: ( 'u' | 'U' ) ( 'l' | 'L' )?
                 if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
                     self.input.consume();
 
@@ -2464,7 +2464,7 @@ class CLexer(Lexer):
                     raise mse
 
 
-                # C.g:487:15: ( 'l' | 'L' )?
+                # C.g:488:15: ( 'l' | 'L' )?
                 alt13 = 2
                 LA13_0 = self.input.LA(1)
 
@@ -2501,12 +2501,12 @@ class CLexer(Lexer):
         try:
             self.type = FLOATING_POINT_LITERAL
 
-            # C.g:491:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            # C.g:492:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
             alt26 = 4
             alt26 = self.dfa26.predict(self.input)
             if alt26 == 1:
-                # C.g:491:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:491:9: ( '0' .. '9' )+
+                # C.g:492:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:492:9: ( '0' .. '9' )+
                 cnt15 = 0
                 while True: #loop15
                     alt15 = 2
@@ -2517,7 +2517,7 @@ class CLexer(Lexer):
 
 
                     if alt15 == 1:
-                        # C.g:491:10: '0' .. '9'
+                        # C.g:492:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2534,7 +2534,7 @@ class CLexer(Lexer):
 
                 self.match(u'.')
 
-                # C.g:491:25: ( '0' .. '9' )*
+                # C.g:492:25: ( '0' .. '9' )*
                 while True: #loop16
                     alt16 = 2
                     LA16_0 = self.input.LA(1)
@@ -2544,7 +2544,7 @@ class CLexer(Lexer):
 
 
                     if alt16 == 1:
-                        # C.g:491:26: '0' .. '9'
+                        # C.g:492:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2553,27 +2553,27 @@ class CLexer(Lexer):
                         break #loop16
 
 
-                # C.g:491:37: ( Exponent )?
+                # C.g:492:37: ( Exponent )?
                 alt17 = 2
                 LA17_0 = self.input.LA(1)
 
                 if (LA17_0 == u'E' or LA17_0 == u'e') :
                     alt17 = 1
                 if alt17 == 1:
-                    # C.g:491:37: Exponent
+                    # C.g:492:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:491:47: ( FloatTypeSuffix )?
+                # C.g:492:47: ( FloatTypeSuffix )?
                 alt18 = 2
                 LA18_0 = self.input.LA(1)
 
                 if (LA18_0 == u'D' or LA18_0 == u'F' or LA18_0 == u'd' or LA18_0 == u'f') :
                     alt18 = 1
                 if alt18 == 1:
-                    # C.g:491:47: FloatTypeSuffix
+                    # C.g:492:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2582,10 +2582,10 @@ class CLexer(Lexer):
 
 
             elif alt26 == 2:
-                # C.g:492:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:493:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:492:13: ( '0' .. '9' )+
+                # C.g:493:13: ( '0' .. '9' )+
                 cnt19 = 0
                 while True: #loop19
                     alt19 = 2
@@ -2596,7 +2596,7 @@ class CLexer(Lexer):
 
 
                     if alt19 == 1:
-                        # C.g:492:14: '0' .. '9'
+                        # C.g:493:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2611,27 +2611,27 @@ class CLexer(Lexer):
                     cnt19 += 1
 
 
-                # C.g:492:25: ( Exponent )?
+                # C.g:493:25: ( Exponent )?
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
                 if (LA20_0 == u'E' or LA20_0 == u'e') :
                     alt20 = 1
                 if alt20 == 1:
-                    # C.g:492:25: Exponent
+                    # C.g:493:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:492:35: ( FloatTypeSuffix )?
+                # C.g:493:35: ( FloatTypeSuffix )?
                 alt21 = 2
                 LA21_0 = self.input.LA(1)
 
                 if (LA21_0 == u'D' or LA21_0 == u'F' or LA21_0 == u'd' or LA21_0 == u'f') :
                     alt21 = 1
                 if alt21 == 1:
-                    # C.g:492:35: FloatTypeSuffix
+                    # C.g:493:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2640,8 +2640,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 3:
-                # C.g:493:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:493:9: ( '0' .. '9' )+
+                # C.g:494:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:494:9: ( '0' .. '9' )+
                 cnt22 = 0
                 while True: #loop22
                     alt22 = 2
@@ -2652,7 +2652,7 @@ class CLexer(Lexer):
 
 
                     if alt22 == 1:
-                        # C.g:493:10: '0' .. '9'
+                        # C.g:494:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2669,14 +2669,14 @@ class CLexer(Lexer):
 
                 self.mExponent()
 
-                # C.g:493:30: ( FloatTypeSuffix )?
+                # C.g:494:30: ( FloatTypeSuffix )?
                 alt23 = 2
                 LA23_0 = self.input.LA(1)
 
                 if (LA23_0 == u'D' or LA23_0 == u'F' or LA23_0 == u'd' or LA23_0 == u'f') :
                     alt23 = 1
                 if alt23 == 1:
-                    # C.g:493:30: FloatTypeSuffix
+                    # C.g:494:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2685,8 +2685,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 4:
-                # C.g:494:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:494:9: ( '0' .. '9' )+
+                # C.g:495:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:495:9: ( '0' .. '9' )+
                 cnt24 = 0
                 while True: #loop24
                     alt24 = 2
@@ -2697,7 +2697,7 @@ class CLexer(Lexer):
 
 
                     if alt24 == 1:
-                        # C.g:494:10: '0' .. '9'
+                        # C.g:495:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2712,14 +2712,14 @@ class CLexer(Lexer):
                     cnt24 += 1
 
 
-                # C.g:494:21: ( Exponent )?
+                # C.g:495:21: ( Exponent )?
                 alt25 = 2
                 LA25_0 = self.input.LA(1)
 
                 if (LA25_0 == u'E' or LA25_0 == u'e') :
                     alt25 = 1
                 if alt25 == 1:
-                    # C.g:494:21: Exponent
+                    # C.g:495:21: Exponent
                     self.mExponent()
 
 
@@ -2742,8 +2742,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:498:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:498:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            # C.g:499:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            # C.g:499:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
             if self.input.LA(1) == u'E' or self.input.LA(1) == u'e':
                 self.input.consume();
 
@@ -2753,7 +2753,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:498:22: ( '+' | '-' )?
+            # C.g:499:22: ( '+' | '-' )?
             alt27 = 2
             LA27_0 = self.input.LA(1)
 
@@ -2773,7 +2773,7 @@ class CLexer(Lexer):
 
 
 
-            # C.g:498:33: ( '0' .. '9' )+
+            # C.g:499:33: ( '0' .. '9' )+
             cnt28 = 0
             while True: #loop28
                 alt28 = 2
@@ -2784,7 +2784,7 @@ class CLexer(Lexer):
 
 
                 if alt28 == 1:
-                    # C.g:498:34: '0' .. '9'
+                    # C.g:499:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
@@ -2815,8 +2815,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:501:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:501:19: ( 'f' | 'F' | 'd' | 'D' )
+            # C.g:502:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            # C.g:502: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();
 
@@ -2842,7 +2842,7 @@ class CLexer(Lexer):
     def mEscapeSequence(self, ):
 
         try:
-            # C.g:505:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
+            # C.g:506:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
             alt29 = 2
             LA29_0 = self.input.LA(1)
 
@@ -2854,17 +2854,17 @@ class CLexer(Lexer):
                 elif ((u'0' <= LA29_1 <= u'7')) :
                     alt29 = 2
                 else:
-                    nvae = NoViableAltException("503:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
+                    nvae = NoViableAltException("504:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("503:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
+                nvae = NoViableAltException("504:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
 
                 raise nvae
 
             if alt29 == 1:
-                # C.g:505:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                # C.g:506:9: '\\\\' ( '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':
@@ -2879,7 +2879,7 @@ class CLexer(Lexer):
 
 
             elif alt29 == 2:
-                # C.g:506:9: OctalEscape
+                # C.g:507:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -2897,7 +2897,7 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:511:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            # C.g:512:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             alt30 = 3
             LA30_0 = self.input.LA(1)
 
@@ -2924,35 +2924,35 @@ class CLexer(Lexer):
                     else:
                         alt30 = 3
                 else:
-                    nvae = NoViableAltException("509:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
+                    nvae = NoViableAltException("510:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("509:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 0, self.input)
+                nvae = NoViableAltException("510:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 0, self.input)
 
                 raise nvae
 
             if alt30 == 1:
-                # C.g:511:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:512:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:511:14: ( '0' .. '3' )
-                # C.g:511:15: '0' .. '3'
+                # C.g:512:14: ( '0' .. '3' )
+                # C.g:512:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:511:25: ( '0' .. '7' )
-                # C.g:511:26: '0' .. '7'
+                # C.g:512:25: ( '0' .. '7' )
+                # C.g:512:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:511:36: ( '0' .. '7' )
-                # C.g:511:37: '0' .. '7'
+                # C.g:512:36: ( '0' .. '7' )
+                # C.g:512:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2961,18 +2961,18 @@ class CLexer(Lexer):
 
 
             elif alt30 == 2:
-                # C.g:512:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:513:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:512:14: ( '0' .. '7' )
-                # C.g:512:15: '0' .. '7'
+                # C.g:513:14: ( '0' .. '7' )
+                # C.g:513:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:512:25: ( '0' .. '7' )
-                # C.g:512:26: '0' .. '7'
+                # C.g:513:25: ( '0' .. '7' )
+                # C.g:513:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2981,11 +2981,11 @@ class CLexer(Lexer):
 
 
             elif alt30 == 3:
-                # C.g:513:9: '\\\\' ( '0' .. '7' )
+                # C.g:514:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:513:14: ( '0' .. '7' )
-                # C.g:513:15: '0' .. '7'
+                # C.g:514:14: ( '0' .. '7' )
+                # C.g:514:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3006,8 +3006,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:518:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:518:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            # C.g:519:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            # C.g:519:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             self.match(u'\\')
 
             self.match(u'u')
@@ -3038,8 +3038,8 @@ class CLexer(Lexer):
         try:
             self.type = WS
 
-            # C.g:521:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:521:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            # C.g:522:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            # C.g:522: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();
 
@@ -3070,8 +3070,8 @@ class CLexer(Lexer):
         try:
             self.type = UnicodeVocabulary
 
-            # C.g:529:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:529:7: '\\u0003' .. '\\uFFFE'
+            # C.g:530:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:530:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3092,12 +3092,12 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:532:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:532:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:533:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:533:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:532:14: ( options {greedy=false; } : . )*
+            # C.g:533:14: ( options {greedy=false; } : . )*
             while True: #loop31
                 alt31 = 2
                 LA31_0 = self.input.LA(1)
@@ -3116,7 +3116,7 @@ class CLexer(Lexer):
 
 
                 if alt31 == 1:
-                    # C.g:532:42: .
+                    # C.g:533:42: .
                     self.matchAny()
 
 
@@ -3149,12 +3149,12 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:537:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:537:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:538:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:538:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match("//")
 
 
-            # C.g:537:12: (~ ( '\\n' | '\\r' ) )*
+            # C.g:538:12: (~ ( '\\n' | '\\r' ) )*
             while True: #loop32
                 alt32 = 2
                 LA32_0 = self.input.LA(1)
@@ -3164,7 +3164,7 @@ class CLexer(Lexer):
 
 
                 if alt32 == 1:
-                    # C.g:537:12: ~ ( '\\n' | '\\r' )
+                    # C.g:538: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();
 
@@ -3180,14 +3180,14 @@ class CLexer(Lexer):
                     break #loop32
 
 
-            # C.g:537:26: ( '\\r' )?
+            # C.g:538:26: ( '\\r' )?
             alt33 = 2
             LA33_0 = self.input.LA(1)
 
             if (LA33_0 == u'\r') :
                 alt33 = 1
             if alt33 == 1:
-                # C.g:537:26: '\\r'
+                # C.g:538:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3216,11 +3216,11 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:542:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:542:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:543:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:543:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match(u'#')
 
-            # C.g:542:11: (~ ( '\\n' | '\\r' ) )*
+            # C.g:543:11: (~ ( '\\n' | '\\r' ) )*
             while True: #loop34
                 alt34 = 2
                 LA34_0 = self.input.LA(1)
@@ -3230,7 +3230,7 @@ class CLexer(Lexer):
 
 
                 if alt34 == 1:
-                    # C.g:542:11: ~ ( '\\n' | '\\r' )
+                    # C.g:543: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();
 
@@ -3246,14 +3246,14 @@ class CLexer(Lexer):
                     break #loop34
 
 
-            # C.g:542:25: ( '\\r' )?
+            # C.g:543:25: ( '\\r' )?
             alt35 = 2
             LA35_0 = self.input.LA(1)
 
             if (LA35_0 == u'\r') :
                 alt35 = 1
             if alt35 == 1:
-                # C.g:542:25: '\\r'
+                # C.g:543:25: '\\r'
                 self.match(u'\r')
 
 
index 6fcbe11..1d911af 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2007-11-30 17:29:46
+# $ANTLR 3.0.1 C.g 2007-12-12 15:55:52
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -475,6 +475,9 @@ class CParser(Parser):
         retval = self.function_definition_return()
         retval.start = self.input.LT(1)
         function_definition_StartIndex = self.input.index()
+        declarator1 = None
+
+
               \r
         self.Symbols_stack[-1].inFunc = True\r
 
@@ -483,9 +486,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 3):
                     return retval
 
-                # C.g:69:2: ( ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement ) )
-                # C.g:69:4: ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement )
-                # C.g:69:4: ( declaration_specifiers )?
+                # C.g:70:2: ( ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement ) )
+                # C.g:70:4: ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement )
+                # C.g:70:4: ( declaration_specifiers )?
                 alt3 = 2
                 LA3_0 = self.input.LA(1)
 
@@ -581,11 +584,11 @@ class CParser(Parser):
 
 
                 self.following.append(self.FOLLOW_declarator_in_function_definition156)
-                self.declarator()
+                declarator1 = self.declarator()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:70:3: ( ( declaration )+ compound_statement | compound_statement )
+                # C.g:71:3: ( ( declaration )+ compound_statement | compound_statement )
                 alt5 = 2
                 LA5_0 = self.input.LA(1)
 
@@ -598,13 +601,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("70:3: ( ( declaration )+ compound_statement | compound_statement )", 5, 0, self.input)
+                    nvae = NoViableAltException("71:3: ( ( declaration )+ compound_statement | compound_statement )", 5, 0, self.input)
 
                     raise nvae
 
                 if alt5 == 1:
-                    # C.g:70:5: ( declaration )+ compound_statement
-                    # C.g:70:5: ( declaration )+
+                    # C.g:71:5: ( declaration )+ compound_statement
+                    # C.g:71:5: ( declaration )+
                     cnt4 = 0
                     while True: #loop4
                         alt4 = 2
@@ -645,7 +648,7 @@ class CParser(Parser):
 
 
                 elif alt5 == 2:
-                    # C.g:71:5: compound_statement
+                    # C.g:72:5: compound_statement
                     self.following.append(self.FOLLOW_compound_statement_in_function_definition172)
                     self.compound_statement()
                     self.following.pop()
@@ -654,6 +657,9 @@ class CParser(Parser):
 
 
 
+                if self.backtracking == 0:
+                    self.printFuncHeader(declarator1.start.line, declarator1.start.charPositionInLine, self.input.toString(declarator1.start,declarator1.stop))
+
 
 
 
@@ -661,6 +667,7 @@ class CParser(Parser):
 
                 if self.backtracking == 0:
                            \r
+                    print str(retval.start.line) + ',' + str(retval.start.charPositionInLine)\r
                     print str(retval.stop.line) + ',' + str(retval.stop.charPositionInLine)\r
 
 
@@ -682,7 +689,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration
-    # C.g:75:1: declaration : (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' );
+    # C.g:76:1: declaration : (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' );
     def declaration(self, ):
         self.declaration_stack.append(declaration_scope())
         declaration_StartIndex = self.input.index()
@@ -696,7 +703,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 4):
                     return 
 
-                # C.g:82:2: (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' )
+                # C.g:83:2: (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' )
                 alt8 = 2
                 LA8_0 = self.input.LA(1)
 
@@ -709,17 +716,17 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("75:1: declaration : (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' );", 8, 0, self.input)
+                    nvae = NoViableAltException("76:1: declaration : (a= 'typedef' ( declaration_specifiers )? init_declarator_list ';' | declaration_specifiers ( init_declarator_list )? ';' );", 8, 0, self.input)
 
                     raise nvae
 
                 if alt8 == 1:
-                    # C.g:82:4: a= 'typedef' ( declaration_specifiers )? init_declarator_list ';'
+                    # C.g:83:4: a= 'typedef' ( declaration_specifiers )? init_declarator_list ';'
                     a = self.input.LT(1)
-                    self.match(self.input, 24, self.FOLLOW_24_in_declaration203)
+                    self.match(self.input, 24, self.FOLLOW_24_in_declaration204)
                     if self.failed:
                         return 
-                    # C.g:82:16: ( declaration_specifiers )?
+                    # C.g:83:16: ( declaration_specifiers )?
                     alt6 = 2
                     LA6_0 = self.input.LA(1)
 
@@ -737,7 +744,7 @@ class CParser(Parser):
                             alt6 = 1
                     if alt6 == 1:
                         # C.g:0:0: declaration_specifiers
-                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration205)
+                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration206)
                         self.declaration_specifiers()
                         self.following.pop()
                         if self.failed:
@@ -745,24 +752,24 @@ class CParser(Parser):
 
 
 
-                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration212)
+                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration213)
                     self.init_declarator_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 25, self.FOLLOW_25_in_declaration214)
+                    self.match(self.input, 25, self.FOLLOW_25_in_declaration215)
                     if self.failed:
                         return 
 
 
                 elif alt8 == 2:
-                    # C.g:84:4: declaration_specifiers ( init_declarator_list )? ';'
-                    self.following.append(self.FOLLOW_declaration_specifiers_in_declaration220)
+                    # C.g:85:4: declaration_specifiers ( init_declarator_list )? ';'
+                    self.following.append(self.FOLLOW_declaration_specifiers_in_declaration221)
                     self.declaration_specifiers()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:84:27: ( init_declarator_list )?
+                    # C.g:85:27: ( init_declarator_list )?
                     alt7 = 2
                     LA7_0 = self.input.LA(1)
 
@@ -770,7 +777,7 @@ class CParser(Parser):
                         alt7 = 1
                     if alt7 == 1:
                         # C.g:0:0: init_declarator_list
-                        self.following.append(self.FOLLOW_init_declarator_list_in_declaration222)
+                        self.following.append(self.FOLLOW_init_declarator_list_in_declaration223)
                         self.init_declarator_list()
                         self.following.pop()
                         if self.failed:
@@ -778,7 +785,7 @@ class CParser(Parser):
 
 
 
-                    self.match(self.input, 25, self.FOLLOW_25_in_declaration225)
+                    self.match(self.input, 25, self.FOLLOW_25_in_declaration226)
                     if self.failed:
                         return 
 
@@ -800,7 +807,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration_specifiers
-    # C.g:88:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
+    # C.g:89:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
     def declaration_specifiers(self, ):
 
         declaration_specifiers_StartIndex = self.input.index()
@@ -809,9 +816,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 5):
                     return 
 
-                # C.g:89:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
-                # C.g:89:6: ( storage_class_specifier | type_specifier | type_qualifier )+
-                # C.g:89:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:90:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
+                # C.g:90:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:90:6: ( storage_class_specifier | type_specifier | type_qualifier )+
                 cnt9 = 0
                 while True: #loop9
                     alt9 = 4
@@ -831,8 +838,8 @@ class CParser(Parser):
                         alt9 = 3
 
                     if alt9 == 1:
-                        # C.g:89:10: storage_class_specifier
-                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers244)
+                        # C.g:90:10: storage_class_specifier
+                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers245)
                         self.storage_class_specifier()
                         self.following.pop()
                         if self.failed:
@@ -840,8 +847,8 @@ class CParser(Parser):
 
 
                     elif alt9 == 2:
-                        # C.g:90:7: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers252)
+                        # C.g:91:7: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers253)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -849,8 +856,8 @@ class CParser(Parser):
 
 
                     elif alt9 == 3:
-                        # C.g:91:13: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers266)
+                        # C.g:92:13: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers267)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -890,7 +897,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator_list
-    # C.g:95:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
+    # C.g:96:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
     def init_declarator_list(self, ):
 
         init_declarator_list_StartIndex = self.input.index()
@@ -899,14 +906,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 6):
                     return 
 
-                # C.g:96:2: ( init_declarator ( ',' init_declarator )* )
-                # C.g:96:4: init_declarator ( ',' init_declarator )*
-                self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list288)
+                # C.g:97:2: ( init_declarator ( ',' init_declarator )* )
+                # C.g:97:4: init_declarator ( ',' init_declarator )*
+                self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list289)
                 self.init_declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:96:20: ( ',' init_declarator )*
+                # C.g:97:20: ( ',' init_declarator )*
                 while True: #loop10
                     alt10 = 2
                     LA10_0 = self.input.LA(1)
@@ -916,11 +923,11 @@ class CParser(Parser):
 
 
                     if alt10 == 1:
-                        # C.g:96:21: ',' init_declarator
-                        self.match(self.input, 26, self.FOLLOW_26_in_init_declarator_list291)
+                        # C.g:97:21: ',' init_declarator
+                        self.match(self.input, 26, self.FOLLOW_26_in_init_declarator_list292)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list293)
+                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list294)
                         self.init_declarator()
                         self.following.pop()
                         if self.failed:
@@ -950,7 +957,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator
-    # C.g:99:1: init_declarator : declarator ( '=' initializer )? ;
+    # C.g:100:1: init_declarator : declarator ( '=' initializer )? ;
     def init_declarator(self, ):
 
         init_declarator_StartIndex = self.input.index()
@@ -959,25 +966,25 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 7):
                     return 
 
-                # C.g:100:2: ( declarator ( '=' initializer )? )
-                # C.g:100:4: declarator ( '=' initializer )?
-                self.following.append(self.FOLLOW_declarator_in_init_declarator306)
+                # C.g:101:2: ( declarator ( '=' initializer )? )
+                # C.g:101:4: declarator ( '=' initializer )?
+                self.following.append(self.FOLLOW_declarator_in_init_declarator307)
                 self.declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:100:15: ( '=' initializer )?
+                # C.g:101:15: ( '=' initializer )?
                 alt11 = 2
                 LA11_0 = self.input.LA(1)
 
                 if (LA11_0 == 27) :
                     alt11 = 1
                 if alt11 == 1:
-                    # C.g:100:16: '=' initializer
-                    self.match(self.input, 27, self.FOLLOW_27_in_init_declarator309)
+                    # C.g:101:16: '=' initializer
+                    self.match(self.input, 27, self.FOLLOW_27_in_init_declarator310)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_in_init_declarator311)
+                    self.following.append(self.FOLLOW_initializer_in_init_declarator312)
                     self.initializer()
                     self.following.pop()
                     if self.failed:
@@ -1004,7 +1011,7 @@ class CParser(Parser):
 
 
     # $ANTLR start storage_class_specifier
-    # C.g:104:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
+    # C.g:105:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
     def storage_class_specifier(self, ):
 
         storage_class_specifier_StartIndex = self.input.index()
@@ -1013,7 +1020,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 8):
                     return 
 
-                # C.g:105:2: ( 'extern' | 'static' | 'auto' | 'register' )
+                # C.g:106:2: ( 'extern' | 'static' | 'auto' | 'register' )
                 # C.g:
                 if (28 <= self.input.LA(1) <= 31):
                     self.input.consume();
@@ -1051,7 +1058,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_specifier
-    # C.g:111:1: type_specifier options {k=3; } : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id );
+    # C.g:112:1: type_specifier options {k=3; } : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id );
     def type_specifier(self, ):
 
         type_specifier_StartIndex = self.input.index()
@@ -1060,7 +1067,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):
                     return 
 
-                # C.g:113:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id )
+                # C.g:114:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id )
                 alt12 = 12
                 LA12_0 = self.input.LA(1)
 
@@ -1093,76 +1100,76 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("111:1: type_specifier options {k=3; } : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id );", 12, 0, self.input)
+                    nvae = NoViableAltException("112:1: type_specifier options {k=3; } : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | struct_or_union_specifier | enum_specifier | ( IDENTIFIER declarator )=> type_id );", 12, 0, self.input)
 
                     raise nvae
 
                 if alt12 == 1:
-                    # C.g:113:4: 'void'
-                    self.match(self.input, 32, self.FOLLOW_32_in_type_specifier360)
+                    # C.g:114:4: 'void'
+                    self.match(self.input, 32, self.FOLLOW_32_in_type_specifier361)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 2:
-                    # C.g:114:4: 'char'
-                    self.match(self.input, 33, self.FOLLOW_33_in_type_specifier365)
+                    # C.g:115:4: 'char'
+                    self.match(self.input, 33, self.FOLLOW_33_in_type_specifier366)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 3:
-                    # C.g:115:4: 'short'
-                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier370)
+                    # C.g:116:4: 'short'
+                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier371)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 4:
-                    # C.g:116:4: 'int'
-                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier375)
+                    # C.g:117:4: 'int'
+                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier376)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 5:
-                    # C.g:117:4: 'long'
-                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier380)
+                    # C.g:118:4: 'long'
+                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier381)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 6:
-                    # C.g:118:4: 'float'
-                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier385)
+                    # C.g:119:4: 'float'
+                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier386)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 7:
-                    # C.g:119:4: 'double'
-                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier390)
+                    # C.g:120:4: 'double'
+                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier391)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 8:
-                    # C.g:120:4: 'signed'
-                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier395)
+                    # C.g:121:4: 'signed'
+                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier396)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 9:
-                    # C.g:121:4: 'unsigned'
-                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier400)
+                    # C.g:122:4: 'unsigned'
+                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier401)
                     if self.failed:
                         return 
 
 
                 elif alt12 == 10:
-                    # C.g:122:4: struct_or_union_specifier
-                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier405)
+                    # C.g:123:4: struct_or_union_specifier
+                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier406)
                     self.struct_or_union_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1170,8 +1177,8 @@ class CParser(Parser):
 
 
                 elif alt12 == 11:
-                    # C.g:123:4: enum_specifier
-                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier410)
+                    # C.g:124:4: enum_specifier
+                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier411)
                     self.enum_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1179,8 +1186,8 @@ class CParser(Parser):
 
 
                 elif alt12 == 12:
-                    # C.g:124:4: ( IDENTIFIER declarator )=> type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_specifier422)
+                    # C.g:125:4: ( IDENTIFIER declarator )=> type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_specifier423)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -1203,7 +1210,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_id
-    # C.g:127:1: type_id : IDENTIFIER ;
+    # C.g:128:1: type_id : IDENTIFIER ;
     def type_id(self, ):
 
         type_id_StartIndex = self.input.index()
@@ -1212,9 +1219,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):
                     return 
 
-                # C.g:128:5: ( IDENTIFIER )
-                # C.g:128:9: IDENTIFIER
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id438)
+                # C.g:129:5: ( IDENTIFIER )
+                # C.g:129:9: IDENTIFIER
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id439)
                 if self.failed:
                     return 
 
@@ -1236,7 +1243,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union_specifier
-    # C.g:132:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
+    # C.g:133: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, ):
         self.Symbols_stack.append(Symbols_scope())
 
@@ -1249,7 +1256,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):
                     return 
 
-                # C.g:138:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
+                # C.g:139:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
                 alt14 = 2
                 LA14_0 = self.input.LA(1)
 
@@ -1268,7 +1275,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("132:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 2, self.input)
+                            nvae = NoViableAltException("133:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 2, self.input)
 
                             raise nvae
 
@@ -1279,7 +1286,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("132:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 1, self.input)
+                        nvae = NoViableAltException("133:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 1, self.input)
 
                         raise nvae
 
@@ -1288,18 +1295,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("132:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 0, self.input)
+                    nvae = NoViableAltException("133:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 14, 0, self.input)
 
                     raise nvae
 
                 if alt14 == 1:
-                    # C.g:138:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier477)
+                    # C.g:139:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier478)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:138:20: ( IDENTIFIER )?
+                    # C.g:139:20: ( IDENTIFIER )?
                     alt13 = 2
                     LA13_0 = self.input.LA(1)
 
@@ -1307,33 +1314,33 @@ class CParser(Parser):
                         alt13 = 1
                     if alt13 == 1:
                         # C.g:0:0: IDENTIFIER
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier479)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier480)
                         if self.failed:
                             return 
 
 
 
-                    self.match(self.input, 41, self.FOLLOW_41_in_struct_or_union_specifier482)
+                    self.match(self.input, 41, self.FOLLOW_41_in_struct_or_union_specifier483)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier484)
+                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier485)
                     self.struct_declaration_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 42, self.FOLLOW_42_in_struct_or_union_specifier486)
+                    self.match(self.input, 42, self.FOLLOW_42_in_struct_or_union_specifier487)
                     if self.failed:
                         return 
 
 
                 elif alt14 == 2:
-                    # C.g:139:4: struct_or_union IDENTIFIER
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier491)
+                    # C.g:140:4: struct_or_union IDENTIFIER
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier492)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier493)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier494)
                     if self.failed:
                         return 
 
@@ -1356,7 +1363,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union
-    # C.g:142:1: struct_or_union : ( 'struct' | 'union' );
+    # C.g:143:1: struct_or_union : ( 'struct' | 'union' );
     def struct_or_union(self, ):
 
         struct_or_union_StartIndex = self.input.index()
@@ -1365,7 +1372,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):
                     return 
 
-                # C.g:143:2: ( 'struct' | 'union' )
+                # C.g:144:2: ( 'struct' | 'union' )
                 # C.g:
                 if (43 <= self.input.LA(1) <= 44):
                     self.input.consume();
@@ -1403,7 +1410,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration_list
-    # C.g:147:1: struct_declaration_list : ( struct_declaration )+ ;
+    # C.g:148:1: struct_declaration_list : ( struct_declaration )+ ;
     def struct_declaration_list(self, ):
 
         struct_declaration_list_StartIndex = self.input.index()
@@ -1412,9 +1419,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):
                     return 
 
-                # C.g:148:2: ( ( struct_declaration )+ )
-                # C.g:148:4: ( struct_declaration )+
-                # C.g:148:4: ( struct_declaration )+
+                # C.g:149:2: ( ( struct_declaration )+ )
+                # C.g:149:4: ( struct_declaration )+
+                # C.g:149:4: ( struct_declaration )+
                 cnt15 = 0
                 while True: #loop15
                     alt15 = 2
@@ -1426,7 +1433,7 @@ class CParser(Parser):
 
                     if alt15 == 1:
                         # C.g:0:0: struct_declaration
-                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list520)
+                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list521)
                         self.struct_declaration()
                         self.following.pop()
                         if self.failed:
@@ -1466,7 +1473,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration
-    # C.g:151:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
+    # C.g:152:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
     def struct_declaration(self, ):
 
         struct_declaration_StartIndex = self.input.index()
@@ -1475,19 +1482,19 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):
                     return 
 
-                # C.g:152:2: ( specifier_qualifier_list struct_declarator_list ';' )
-                # C.g:152:4: specifier_qualifier_list struct_declarator_list ';'
-                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration532)
+                # C.g:153:2: ( specifier_qualifier_list struct_declarator_list ';' )
+                # C.g:153:4: specifier_qualifier_list struct_declarator_list ';'
+                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration533)
                 self.specifier_qualifier_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration534)
+                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration535)
                 self.struct_declarator_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration536)
+                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration537)
                 if self.failed:
                     return 
 
@@ -1509,7 +1516,7 @@ class CParser(Parser):
 
 
     # $ANTLR start specifier_qualifier_list
-    # C.g:155:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
+    # C.g:156:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
     def specifier_qualifier_list(self, ):
 
         specifier_qualifier_list_StartIndex = self.input.index()
@@ -1518,9 +1525,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):
                     return 
 
-                # C.g:156:2: ( ( type_qualifier | type_specifier )+ )
-                # C.g:156:4: ( type_qualifier | type_specifier )+
-                # C.g:156:4: ( type_qualifier | type_specifier )+
+                # C.g:157:2: ( ( type_qualifier | type_specifier )+ )
+                # C.g:157:4: ( type_qualifier | type_specifier )+
+                # C.g:157:4: ( type_qualifier | type_specifier )+
                 cnt16 = 0
                 while True: #loop16
                     alt16 = 3
@@ -1557,8 +1564,8 @@ class CParser(Parser):
                         alt16 = 2
 
                     if alt16 == 1:
-                        # C.g:156:6: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list549)
+                        # C.g:157:6: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list550)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -1566,8 +1573,8 @@ class CParser(Parser):
 
 
                     elif alt16 == 2:
-                        # C.g:156:23: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list553)
+                        # C.g:157:23: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list554)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1607,7 +1614,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator_list
-    # C.g:159:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
+    # C.g:160:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
     def struct_declarator_list(self, ):
 
         struct_declarator_list_StartIndex = self.input.index()
@@ -1616,14 +1623,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):
                     return 
 
-                # C.g:160:2: ( struct_declarator ( ',' struct_declarator )* )
-                # C.g:160:4: struct_declarator ( ',' struct_declarator )*
-                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list567)
+                # C.g:161:2: ( struct_declarator ( ',' struct_declarator )* )
+                # C.g:161:4: struct_declarator ( ',' struct_declarator )*
+                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list568)
                 self.struct_declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:160:22: ( ',' struct_declarator )*
+                # C.g:161:22: ( ',' struct_declarator )*
                 while True: #loop17
                     alt17 = 2
                     LA17_0 = self.input.LA(1)
@@ -1633,11 +1640,11 @@ class CParser(Parser):
 
 
                     if alt17 == 1:
-                        # C.g:160:23: ',' struct_declarator
-                        self.match(self.input, 26, self.FOLLOW_26_in_struct_declarator_list570)
+                        # C.g:161:23: ',' struct_declarator
+                        self.match(self.input, 26, self.FOLLOW_26_in_struct_declarator_list571)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list572)
+                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list573)
                         self.struct_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1667,7 +1674,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator
-    # C.g:163:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
+    # C.g:164:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
     def struct_declarator(self, ):
 
         struct_declarator_StartIndex = self.input.index()
@@ -1676,7 +1683,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):
                     return 
 
-                # C.g:164:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
+                # C.g:165:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
                 alt19 = 2
                 LA19_0 = self.input.LA(1)
 
@@ -1689,29 +1696,29 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("163:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 19, 0, self.input)
+                    nvae = NoViableAltException("164:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 19, 0, self.input)
 
                     raise nvae
 
                 if alt19 == 1:
-                    # C.g:164:4: declarator ( ':' constant_expression )?
-                    self.following.append(self.FOLLOW_declarator_in_struct_declarator585)
+                    # C.g:165:4: declarator ( ':' constant_expression )?
+                    self.following.append(self.FOLLOW_declarator_in_struct_declarator586)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:164:15: ( ':' constant_expression )?
+                    # C.g:165:15: ( ':' constant_expression )?
                     alt18 = 2
                     LA18_0 = self.input.LA(1)
 
                     if (LA18_0 == 45) :
                         alt18 = 1
                     if alt18 == 1:
-                        # C.g:164:16: ':' constant_expression
-                        self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator588)
+                        # C.g:165:16: ':' constant_expression
+                        self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator589)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator590)
+                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator591)
                         self.constant_expression()
                         self.following.pop()
                         if self.failed:
@@ -1722,11 +1729,11 @@ class CParser(Parser):
 
 
                 elif alt19 == 2:
-                    # C.g:165:4: ':' constant_expression
-                    self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator597)
+                    # C.g:166:4: ':' constant_expression
+                    self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator598)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator599)
+                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator600)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -1749,7 +1756,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enum_specifier
-    # C.g:168:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
+    # C.g:169:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
     def enum_specifier(self, ):
 
         enum_specifier_StartIndex = self.input.index()
@@ -1758,7 +1765,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):
                     return 
 
-                # C.g:170:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
+                # C.g:171:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
                 alt20 = 3
                 LA20_0 = self.input.LA(1)
 
@@ -1777,7 +1784,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("168:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 2, self.input)
+                            nvae = NoViableAltException("169:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 2, self.input)
 
                             raise nvae
 
@@ -1788,7 +1795,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("168:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 1, self.input)
+                        nvae = NoViableAltException("169:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 1, self.input)
 
                         raise nvae
 
@@ -1797,55 +1804,55 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("168:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 0, self.input)
+                    nvae = NoViableAltException("169:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 20, 0, self.input)
 
                     raise nvae
 
                 if alt20 == 1:
-                    # C.g:170:4: 'enum' '{' enumerator_list '}'
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier617)
+                    # C.g:171:4: 'enum' '{' enumerator_list '}'
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier618)
                     if self.failed:
                         return 
-                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier619)
+                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier620)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier621)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier622)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier623)
+                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier624)
                     if self.failed:
                         return 
 
 
                 elif alt20 == 2:
-                    # C.g:171:4: 'enum' IDENTIFIER '{' enumerator_list '}'
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier628)
+                    # C.g:172:4: 'enum' IDENTIFIER '{' enumerator_list '}'
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier629)
                     if self.failed:
                         return 
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier630)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier631)
                     if self.failed:
                         return 
-                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier632)
+                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier633)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier634)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier635)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier636)
+                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier637)
                     if self.failed:
                         return 
 
 
                 elif alt20 == 3:
-                    # C.g:172:4: 'enum' IDENTIFIER
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier641)
+                    # C.g:173:4: 'enum' IDENTIFIER
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier642)
                     if self.failed:
                         return 
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier643)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier644)
                     if self.failed:
                         return 
 
@@ -1866,7 +1873,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator_list
-    # C.g:175:1: enumerator_list : enumerator ( ',' enumerator )* ;
+    # C.g:176:1: enumerator_list : enumerator ( ',' enumerator )* ;
     def enumerator_list(self, ):
 
         enumerator_list_StartIndex = self.input.index()
@@ -1875,14 +1882,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):
                     return 
 
-                # C.g:176:2: ( enumerator ( ',' enumerator )* )
-                # C.g:176:4: enumerator ( ',' enumerator )*
-                self.following.append(self.FOLLOW_enumerator_in_enumerator_list654)
+                # C.g:177:2: ( enumerator ( ',' enumerator )* )
+                # C.g:177:4: enumerator ( ',' enumerator )*
+                self.following.append(self.FOLLOW_enumerator_in_enumerator_list655)
                 self.enumerator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:176:15: ( ',' enumerator )*
+                # C.g:177:15: ( ',' enumerator )*
                 while True: #loop21
                     alt21 = 2
                     LA21_0 = self.input.LA(1)
@@ -1892,11 +1899,11 @@ class CParser(Parser):
 
 
                     if alt21 == 1:
-                        # C.g:176:16: ',' enumerator
-                        self.match(self.input, 26, self.FOLLOW_26_in_enumerator_list657)
+                        # C.g:177:16: ',' enumerator
+                        self.match(self.input, 26, self.FOLLOW_26_in_enumerator_list658)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list659)
+                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list660)
                         self.enumerator()
                         self.following.pop()
                         if self.failed:
@@ -1926,7 +1933,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator
-    # C.g:179:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
+    # C.g:180:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
     def enumerator(self, ):
 
         enumerator_StartIndex = self.input.index()
@@ -1935,23 +1942,23 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):
                     return 
 
-                # C.g:180:2: ( IDENTIFIER ( '=' constant_expression )? )
-                # C.g:180:4: IDENTIFIER ( '=' constant_expression )?
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator672)
+                # C.g:181:2: ( IDENTIFIER ( '=' constant_expression )? )
+                # C.g:181:4: IDENTIFIER ( '=' constant_expression )?
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator673)
                 if self.failed:
                     return 
-                # C.g:180:15: ( '=' constant_expression )?
+                # C.g:181:15: ( '=' constant_expression )?
                 alt22 = 2
                 LA22_0 = self.input.LA(1)
 
                 if (LA22_0 == 27) :
                     alt22 = 1
                 if alt22 == 1:
-                    # C.g:180:16: '=' constant_expression
-                    self.match(self.input, 27, self.FOLLOW_27_in_enumerator675)
+                    # C.g:181:16: '=' constant_expression
+                    self.match(self.input, 27, self.FOLLOW_27_in_enumerator676)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_enumerator677)
+                    self.following.append(self.FOLLOW_constant_expression_in_enumerator678)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -1978,7 +1985,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_qualifier
-    # C.g:183:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
+    # C.g:184:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
     def type_qualifier(self, ):
 
         type_qualifier_StartIndex = self.input.index()
@@ -1987,7 +1994,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):
                     return 
 
-                # C.g:184:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
+                # C.g:185:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
                 # C.g:
                 if (47 <= self.input.LA(1) <= 50):
                     self.input.consume();
@@ -2023,18 +2030,26 @@ class CParser(Parser):
 
     # $ANTLR end type_qualifier
 
+    class declarator_return(object):
+        def __init__(self):
+            self.start = None
+            self.stop = None
+
+
 
     # $ANTLR start declarator
-    # C.g:190:1: declarator : ( ( pointer )? direct_declarator | pointer );
+    # C.g:191:1: declarator : ( ( pointer )? direct_declarator | pointer );
     def declarator(self, ):
 
+        retval = self.declarator_return()
+        retval.start = self.input.LT(1)
         declarator_StartIndex = self.input.index()
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):
-                    return 
+                    return retval
 
-                # C.g:191:2: ( ( pointer )? direct_declarator | pointer )
+                # C.g:192:2: ( ( pointer )? direct_declarator | pointer )
                 alt24 = 2
                 LA24_0 = self.input.LA(1)
 
@@ -2048,9 +2063,9 @@ class CParser(Parser):
                     else:
                         if self.backtracking > 0:
                             self.failed = True
-                            return 
+                            return retval
 
-                        nvae = NoViableAltException("190:1: declarator : ( ( pointer )? direct_declarator | pointer );", 24, 1, self.input)
+                        nvae = NoViableAltException("191:1: declarator : ( ( pointer )? direct_declarator | pointer );", 24, 1, self.input)
 
                         raise nvae
 
@@ -2059,15 +2074,15 @@ class CParser(Parser):
                 else:
                     if self.backtracking > 0:
                         self.failed = True
-                        return 
+                        return retval
 
-                    nvae = NoViableAltException("190:1: declarator : ( ( pointer )? direct_declarator | pointer );", 24, 0, self.input)
+                    nvae = NoViableAltException("191:1: declarator : ( ( pointer )? direct_declarator | pointer );", 24, 0, self.input)
 
                     raise nvae
 
                 if alt24 == 1:
-                    # C.g:191:4: ( pointer )? direct_declarator
-                    # C.g:191:4: ( pointer )?
+                    # C.g:192:4: ( pointer )? direct_declarator
+                    # C.g:192:4: ( pointer )?
                     alt23 = 2
                     LA23_0 = self.input.LA(1)
 
@@ -2075,29 +2090,31 @@ class CParser(Parser):
                         alt23 = 1
                     if alt23 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_declarator716)
+                        self.following.append(self.FOLLOW_pointer_in_declarator717)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
-                            return 
+                            return retval
 
 
 
-                    self.following.append(self.FOLLOW_direct_declarator_in_declarator719)
+                    self.following.append(self.FOLLOW_direct_declarator_in_declarator720)
                     self.direct_declarator()
                     self.following.pop()
                     if self.failed:
-                        return 
+                        return retval
 
 
                 elif alt24 == 2:
-                    # C.g:192:4: pointer
-                    self.following.append(self.FOLLOW_pointer_in_declarator724)
+                    # C.g:193:4: pointer
+                    self.following.append(self.FOLLOW_pointer_in_declarator725)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
-                        return 
+                        return retval
+
 
+                retval.stop = self.input.LT(-1)
 
 
             except RecognitionException, re:
@@ -2109,13 +2126,13 @@ class CParser(Parser):
 
             pass
 
-        return 
+        return retval
 
     # $ANTLR end declarator
 
 
     # $ANTLR start direct_declarator
-    # C.g:195:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
+    # C.g:196:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
     def direct_declarator(self, ):
         self.Symbols_stack.append(Symbols_scope())
 
@@ -2125,7 +2142,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
                     return 
 
-                # C.g:197:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
+                # C.g:198:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
                 alt27 = 2
                 LA27_0 = self.input.LA(1)
 
@@ -2138,16 +2155,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("195:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 27, 0, self.input)
+                    nvae = NoViableAltException("196:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 27, 0, self.input)
 
                     raise nvae
 
                 if alt27 == 1:
-                    # C.g:197:4: IDENTIFIER ( declarator_suffix )*
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator740)
+                    # C.g:198:4: IDENTIFIER ( declarator_suffix )*
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator741)
                     if self.failed:
                         return 
-                    # C.g:197:15: ( declarator_suffix )*
+                    # C.g:198:15: ( declarator_suffix )*
                     while True: #loop25
                         alt25 = 2
                         LA25_0 = self.input.LA(1)
@@ -2323,7 +2340,7 @@ class CParser(Parser):
 
                         if alt25 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator742)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator743)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -2337,19 +2354,19 @@ class CParser(Parser):
 
 
                 elif alt27 == 2:
-                    # C.g:199:4: '(' declarator ')' ( declarator_suffix )+
-                    self.match(self.input, 51, self.FOLLOW_51_in_direct_declarator752)
+                    # C.g:200:4: '(' declarator ')' ( declarator_suffix )+
+                    self.match(self.input, 51, self.FOLLOW_51_in_direct_declarator753)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_declarator_in_direct_declarator754)
+                    self.following.append(self.FOLLOW_declarator_in_direct_declarator755)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_direct_declarator756)
+                    self.match(self.input, 52, self.FOLLOW_52_in_direct_declarator757)
                     if self.failed:
                         return 
-                    # C.g:199:23: ( declarator_suffix )+
+                    # C.g:200:23: ( declarator_suffix )+
                     cnt26 = 0
                     while True: #loop26
                         alt26 = 2
@@ -2526,7 +2543,7 @@ class CParser(Parser):
 
                         if alt26 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator758)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator759)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -2567,7 +2584,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator_suffix
-    # C.g:202:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
+    # C.g:203:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
     def declarator_suffix(self, ):
 
         declarator_suffix_StartIndex = self.input.index()
@@ -2576,7 +2593,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 24):
                     return 
 
-                # C.g:203:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
+                # C.g:204:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
                 alt28 = 5
                 LA28_0 = self.input.LA(1)
 
@@ -2592,7 +2609,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("202:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 1, self.input)
+                        nvae = NoViableAltException("203:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 1, self.input)
 
                         raise nvae
 
@@ -2614,7 +2631,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("202:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 24, self.input)
+                            nvae = NoViableAltException("203:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 24, self.input)
 
                             raise nvae
 
@@ -2623,7 +2640,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("202:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 2, self.input)
+                        nvae = NoViableAltException("203:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 2, self.input)
 
                         raise nvae
 
@@ -2632,71 +2649,71 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("202:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 0, self.input)
+                    nvae = NoViableAltException("203:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 28, 0, self.input)
 
                     raise nvae
 
                 if alt28 == 1:
-                    # C.g:203:6: '[' constant_expression ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix772)
+                    # C.g:204:6: '[' constant_expression ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix773)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix774)
+                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix775)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix776)
+                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix777)
                     if self.failed:
                         return 
 
 
                 elif alt28 == 2:
-                    # C.g:204:9: '[' ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix786)
+                    # C.g:205:9: '[' ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix787)
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix788)
+                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix789)
                     if self.failed:
                         return 
 
 
                 elif alt28 == 3:
-                    # C.g:205:9: '(' parameter_type_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix798)
+                    # C.g:206:9: '(' parameter_type_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix799)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix800)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix801)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix802)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix803)
                     if self.failed:
                         return 
 
 
                 elif alt28 == 4:
-                    # C.g:206:9: '(' identifier_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix812)
+                    # C.g:207:9: '(' identifier_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix813)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix814)
+                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix815)
                     self.identifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix816)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix817)
                     if self.failed:
                         return 
 
 
                 elif alt28 == 5:
-                    # C.g:207:9: '(' ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix826)
+                    # C.g:208:9: '(' ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix827)
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix828)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix829)
                     if self.failed:
                         return 
 
@@ -2717,7 +2734,7 @@ class CParser(Parser):
 
 
     # $ANTLR start pointer
-    # C.g:210:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );
+    # C.g:211:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );
     def pointer(self, ):
 
         pointer_StartIndex = self.input.index()
@@ -2728,7 +2745,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 25):
                     return 
 
-                # C.g:211:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' )
+                # C.g:212:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' )
                 alt31 = 3
                 LA31_0 = self.input.LA(1)
 
@@ -2746,7 +2763,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("210:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 2, self.input)
+                            nvae = NoViableAltException("211:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 2, self.input)
 
                             raise nvae
 
@@ -2764,7 +2781,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("210:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 18, self.input)
+                            nvae = NoViableAltException("211:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 18, self.input)
 
                             raise nvae
 
@@ -2773,7 +2790,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("210:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 1, self.input)
+                        nvae = NoViableAltException("211:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 1, self.input)
 
                         raise nvae
 
@@ -2782,16 +2799,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("210:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 0, self.input)
+                    nvae = NoViableAltException("211:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | s= '*' );", 31, 0, self.input)
 
                     raise nvae
 
                 if alt31 == 1:
-                    # C.g:211:4: '*' ( type_qualifier )+ ( pointer )?
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer839)
+                    # C.g:212:4: '*' ( type_qualifier )+ ( pointer )?
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer840)
                     if self.failed:
                         return 
-                    # C.g:211:8: ( type_qualifier )+
+                    # C.g:212:8: ( type_qualifier )+
                     cnt29 = 0
                     while True: #loop29
                         alt29 = 2
@@ -2808,7 +2825,7 @@ class CParser(Parser):
 
                         if alt29 == 1:
                             # C.g:0:0: type_qualifier
-                            self.following.append(self.FOLLOW_type_qualifier_in_pointer841)
+                            self.following.append(self.FOLLOW_type_qualifier_in_pointer842)
                             self.type_qualifier()
                             self.following.pop()
                             if self.failed:
@@ -2829,7 +2846,7 @@ class CParser(Parser):
                         cnt29 += 1
 
 
-                    # C.g:211:24: ( pointer )?
+                    # C.g:212:24: ( pointer )?
                     alt30 = 2
                     LA30_0 = self.input.LA(1)
 
@@ -2840,7 +2857,7 @@ class CParser(Parser):
                             alt30 = 1
                     if alt30 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_pointer844)
+                        self.following.append(self.FOLLOW_pointer_in_pointer845)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -2851,11 +2868,11 @@ class CParser(Parser):
 
 
                 elif alt31 == 2:
-                    # C.g:212:4: '*' pointer
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer850)
+                    # C.g:213:4: '*' pointer
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer851)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_pointer_in_pointer852)
+                    self.following.append(self.FOLLOW_pointer_in_pointer853)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -2863,9 +2880,9 @@ class CParser(Parser):
 
 
                 elif alt31 == 3:
-                    # C.g:213:4: s= '*'
+                    # C.g:214:4: s= '*'
                     s = self.input.LT(1)
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer859)
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer860)
                     if self.failed:
                         return 
 
@@ -2886,7 +2903,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_type_list
-    # C.g:216:1: parameter_type_list : parameter_list ( ',' '...' )? ;
+    # C.g:217:1: parameter_type_list : parameter_list ( ',' '...' )? ;
     def parameter_type_list(self, ):
 
         parameter_type_list_StartIndex = self.input.index()
@@ -2895,25 +2912,25 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 26):
                     return 
 
-                # C.g:217:2: ( parameter_list ( ',' '...' )? )
-                # C.g:217:4: parameter_list ( ',' '...' )?
-                self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list870)
+                # C.g:218:2: ( parameter_list ( ',' '...' )? )
+                # C.g:218:4: parameter_list ( ',' '...' )?
+                self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list871)
                 self.parameter_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:217:19: ( ',' '...' )?
+                # C.g:218:19: ( ',' '...' )?
                 alt32 = 2
                 LA32_0 = self.input.LA(1)
 
                 if (LA32_0 == 26) :
                     alt32 = 1
                 if alt32 == 1:
-                    # C.g:217:20: ',' '...'
-                    self.match(self.input, 26, self.FOLLOW_26_in_parameter_type_list873)
+                    # C.g:218:20: ',' '...'
+                    self.match(self.input, 26, self.FOLLOW_26_in_parameter_type_list874)
                     if self.failed:
                         return 
-                    self.match(self.input, 56, self.FOLLOW_56_in_parameter_type_list875)
+                    self.match(self.input, 56, self.FOLLOW_56_in_parameter_type_list876)
                     if self.failed:
                         return 
 
@@ -2938,7 +2955,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_list
-    # C.g:220:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
+    # C.g:221:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
     def parameter_list(self, ):
 
         parameter_list_StartIndex = self.input.index()
@@ -2947,14 +2964,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 27):
                     return 
 
-                # C.g:221:2: ( parameter_declaration ( ',' parameter_declaration )* )
-                # C.g:221:4: parameter_declaration ( ',' parameter_declaration )*
-                self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list888)
+                # C.g:222:2: ( parameter_declaration ( ',' parameter_declaration )* )
+                # C.g:222:4: parameter_declaration ( ',' parameter_declaration )*
+                self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list889)
                 self.parameter_declaration()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:221:26: ( ',' parameter_declaration )*
+                # C.g:222:26: ( ',' parameter_declaration )*
                 while True: #loop33
                     alt33 = 2
                     LA33_0 = self.input.LA(1)
@@ -2969,11 +2986,11 @@ class CParser(Parser):
 
 
                     if alt33 == 1:
-                        # C.g:221:27: ',' parameter_declaration
-                        self.match(self.input, 26, self.FOLLOW_26_in_parameter_list891)
+                        # C.g:222:27: ',' parameter_declaration
+                        self.match(self.input, 26, self.FOLLOW_26_in_parameter_list892)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list893)
+                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list894)
                         self.parameter_declaration()
                         self.following.pop()
                         if self.failed:
@@ -3003,7 +3020,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_declaration
-    # C.g:224:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
+    # C.g:225:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
     def parameter_declaration(self, ):
 
         parameter_declaration_StartIndex = self.input.index()
@@ -3012,14 +3029,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 28):
                     return 
 
-                # C.g:225:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
-                # C.g:225:4: declaration_specifiers ( declarator | abstract_declarator )+
-                self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration906)
+                # C.g:226:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
+                # C.g:226:4: declaration_specifiers ( declarator | abstract_declarator )+
+                self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration907)
                 self.declaration_specifiers()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:225:27: ( declarator | abstract_declarator )+
+                # C.g:226:27: ( declarator | abstract_declarator )+
                 cnt34 = 0
                 while True: #loop34
                     alt34 = 3
@@ -3071,8 +3088,8 @@ class CParser(Parser):
                         alt34 = 2
 
                     if alt34 == 1:
-                        # C.g:225:28: declarator
-                        self.following.append(self.FOLLOW_declarator_in_parameter_declaration909)
+                        # C.g:226:28: declarator
+                        self.following.append(self.FOLLOW_declarator_in_parameter_declaration910)
                         self.declarator()
                         self.following.pop()
                         if self.failed:
@@ -3080,8 +3097,8 @@ class CParser(Parser):
 
 
                     elif alt34 == 2:
-                        # C.g:225:39: abstract_declarator
-                        self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration911)
+                        # C.g:226:39: abstract_declarator
+                        self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration912)
                         self.abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3121,7 +3138,7 @@ class CParser(Parser):
 
 
     # $ANTLR start identifier_list
-    # C.g:228:1: identifier_list : i= IDENTIFIER ( ',' d= IDENTIFIER )* ;
+    # C.g:229:1: identifier_list : i= IDENTIFIER ( ',' d= IDENTIFIER )* ;
     def identifier_list(self, ):
 
         identifier_list_StartIndex = self.input.index()
@@ -3133,13 +3150,13 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 29):
                     return 
 
-                # C.g:229:2: (i= IDENTIFIER ( ',' d= IDENTIFIER )* )
-                # C.g:229:4: i= IDENTIFIER ( ',' d= IDENTIFIER )*
+                # C.g:230:2: (i= IDENTIFIER ( ',' d= IDENTIFIER )* )
+                # C.g:230:4: i= IDENTIFIER ( ',' d= IDENTIFIER )*
                 i = self.input.LT(1)
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list926)
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list927)
                 if self.failed:
                     return 
-                # C.g:230:2: ( ',' d= IDENTIFIER )*
+                # C.g:231:2: ( ',' d= IDENTIFIER )*
                 while True: #loop35
                     alt35 = 2
                     LA35_0 = self.input.LA(1)
@@ -3149,12 +3166,12 @@ class CParser(Parser):
 
 
                     if alt35 == 1:
-                        # C.g:230:3: ',' d= IDENTIFIER
-                        self.match(self.input, 26, self.FOLLOW_26_in_identifier_list931)
+                        # C.g:231:3: ',' d= IDENTIFIER
+                        self.match(self.input, 26, self.FOLLOW_26_in_identifier_list932)
                         if self.failed:
                             return 
                         d = self.input.LT(1)
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list935)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list936)
                         if self.failed:
                             return 
 
@@ -3182,7 +3199,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_name
-    # C.g:233:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
+    # C.g:234:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
     def type_name(self, ):
 
         type_name_StartIndex = self.input.index()
@@ -3191,7 +3208,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 30):
                     return 
 
-                # C.g:234:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
+                # C.g:235:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
                 alt37 = 2
                 LA37_0 = self.input.LA(1)
 
@@ -3209,7 +3226,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("233:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 37, 13, self.input)
+                        nvae = NoViableAltException("234:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 37, 13, self.input)
 
                         raise nvae
 
@@ -3218,18 +3235,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("233:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 37, 0, self.input)
+                    nvae = NoViableAltException("234:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 37, 0, self.input)
 
                     raise nvae
 
                 if alt37 == 1:
-                    # C.g:234:4: specifier_qualifier_list ( abstract_declarator )?
-                    self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name950)
+                    # C.g:235:4: specifier_qualifier_list ( abstract_declarator )?
+                    self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name951)
                     self.specifier_qualifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:234:29: ( abstract_declarator )?
+                    # C.g:235:29: ( abstract_declarator )?
                     alt36 = 2
                     LA36_0 = self.input.LA(1)
 
@@ -3237,7 +3254,7 @@ class CParser(Parser):
                         alt36 = 1
                     if alt36 == 1:
                         # C.g:0:0: abstract_declarator
-                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name952)
+                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name953)
                         self.abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3248,8 +3265,8 @@ class CParser(Parser):
 
 
                 elif alt37 == 2:
-                    # C.g:235:4: type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_name958)
+                    # C.g:236:4: type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_name959)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -3272,7 +3289,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator
-    # C.g:238:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
+    # C.g:239:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
     def abstract_declarator(self, ):
 
         abstract_declarator_StartIndex = self.input.index()
@@ -3281,7 +3298,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 31):
                     return 
 
-                # C.g:239:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
+                # C.g:240:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
                 alt39 = 2
                 LA39_0 = self.input.LA(1)
 
@@ -3294,18 +3311,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("238:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 39, 0, self.input)
+                    nvae = NoViableAltException("239:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 39, 0, self.input)
 
                     raise nvae
 
                 if alt39 == 1:
-                    # C.g:239:4: pointer ( direct_abstract_declarator )?
-                    self.following.append(self.FOLLOW_pointer_in_abstract_declarator969)
+                    # C.g:240:4: pointer ( direct_abstract_declarator )?
+                    self.following.append(self.FOLLOW_pointer_in_abstract_declarator970)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:239:12: ( direct_abstract_declarator )?
+                    # C.g:240:12: ( direct_abstract_declarator )?
                     alt38 = 2
                     LA38_0 = self.input.LA(1)
 
@@ -3445,7 +3462,7 @@ class CParser(Parser):
                                 alt38 = 1
                     if alt38 == 1:
                         # C.g:0:0: direct_abstract_declarator
-                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator971)
+                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator972)
                         self.direct_abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3456,8 +3473,8 @@ class CParser(Parser):
 
 
                 elif alt39 == 2:
-                    # C.g:240:4: direct_abstract_declarator
-                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator977)
+                    # C.g:241:4: direct_abstract_declarator
+                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator978)
                     self.direct_abstract_declarator()
                     self.following.pop()
                     if self.failed:
@@ -3480,7 +3497,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_abstract_declarator
-    # C.g:243:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
+    # C.g:244:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
     def direct_abstract_declarator(self, ):
 
         direct_abstract_declarator_StartIndex = self.input.index()
@@ -3489,9 +3506,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 32):
                     return 
 
-                # C.g:244:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
-                # C.g:244:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
-                # C.g:244:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
+                # C.g:245:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
+                # C.g:245:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
+                # C.g:245:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
                 alt40 = 2
                 LA40_0 = self.input.LA(1)
 
@@ -3507,7 +3524,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("244:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 40, 1, self.input)
+                        nvae = NoViableAltException("245:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 40, 1, self.input)
 
                         raise nvae
 
@@ -3518,28 +3535,28 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("244:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 40, 0, self.input)
+                    nvae = NoViableAltException("245:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 40, 0, self.input)
 
                     raise nvae
 
                 if alt40 == 1:
-                    # C.g:244:6: '(' abstract_declarator ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_direct_abstract_declarator990)
+                    # C.g:245:6: '(' abstract_declarator ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_direct_abstract_declarator991)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator992)
+                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator993)
                     self.abstract_declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_direct_abstract_declarator994)
+                    self.match(self.input, 52, self.FOLLOW_52_in_direct_abstract_declarator995)
                     if self.failed:
                         return 
 
 
                 elif alt40 == 2:
-                    # C.g:244:36: abstract_declarator_suffix
-                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator998)
+                    # C.g:245:36: abstract_declarator_suffix
+                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator999)
                     self.abstract_declarator_suffix()
                     self.following.pop()
                     if self.failed:
@@ -3547,7 +3564,7 @@ class CParser(Parser):
 
 
 
-                # C.g:244:65: ( abstract_declarator_suffix )*
+                # C.g:245:65: ( abstract_declarator_suffix )*
                 while True: #loop41
                     alt41 = 2
                     LA41_0 = self.input.LA(1)
@@ -3723,7 +3740,7 @@ class CParser(Parser):
 
                     if alt41 == 1:
                         # C.g:0:0: abstract_declarator_suffix
-                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1002)
+                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1003)
                         self.abstract_declarator_suffix()
                         self.following.pop()
                         if self.failed:
@@ -3753,7 +3770,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator_suffix
-    # C.g:247:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
+    # C.g:248:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
     def abstract_declarator_suffix(self, ):
 
         abstract_declarator_suffix_StartIndex = self.input.index()
@@ -3762,7 +3779,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 33):
                     return 
 
-                # C.g:248:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
+                # C.g:249:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
                 alt42 = 4
                 LA42_0 = self.input.LA(1)
 
@@ -3778,7 +3795,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("247:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 1, self.input)
+                        nvae = NoViableAltException("248:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 1, self.input)
 
                         raise nvae
 
@@ -3794,7 +3811,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("247:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 2, self.input)
+                        nvae = NoViableAltException("248:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 2, self.input)
 
                         raise nvae
 
@@ -3803,56 +3820,56 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("247:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 0, self.input)
+                    nvae = NoViableAltException("248:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 42, 0, self.input)
 
                     raise nvae
 
                 if alt42 == 1:
-                    # C.g:248:4: '[' ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix1014)
+                    # C.g:249:4: '[' ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix1015)
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix1016)
+                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix1017)
                     if self.failed:
                         return 
 
 
                 elif alt42 == 2:
-                    # C.g:249:4: '[' constant_expression ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix1021)
+                    # C.g:250:4: '[' constant_expression ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix1022)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix1023)
+                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix1024)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix1025)
+                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix1026)
                     if self.failed:
                         return 
 
 
                 elif alt42 == 3:
-                    # C.g:250:4: '(' ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1030)
+                    # C.g:251:4: '(' ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1031)
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1032)
+                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1033)
                     if self.failed:
                         return 
 
 
                 elif alt42 == 4:
-                    # C.g:251:4: '(' parameter_type_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1037)
+                    # C.g:252:4: '(' parameter_type_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1038)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1039)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1040)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1041)
+                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1042)
                     if self.failed:
                         return 
 
@@ -3873,7 +3890,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer
-    # C.g:254:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
+    # C.g:255:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
     def initializer(self, ):
 
         initializer_StartIndex = self.input.index()
@@ -3882,7 +3899,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 34):
                     return 
 
-                # C.g:256:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
+                # C.g:257:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
                 alt44 = 2
                 LA44_0 = self.input.LA(1)
 
@@ -3895,13 +3912,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("254:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 44, 0, self.input)
+                    nvae = NoViableAltException("255:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 44, 0, self.input)
 
                     raise nvae
 
                 if alt44 == 1:
-                    # C.g:256:4: assignment_expression
-                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1054)
+                    # C.g:257:4: assignment_expression
+                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1055)
                     self.assignment_expression()
                     self.following.pop()
                     if self.failed:
@@ -3909,16 +3926,16 @@ class CParser(Parser):
 
 
                 elif alt44 == 2:
-                    # C.g:257:4: '{' initializer_list ( ',' )? '}'
-                    self.match(self.input, 41, self.FOLLOW_41_in_initializer1059)
+                    # C.g:258:4: '{' initializer_list ( ',' )? '}'
+                    self.match(self.input, 41, self.FOLLOW_41_in_initializer1060)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_list_in_initializer1061)
+                    self.following.append(self.FOLLOW_initializer_list_in_initializer1062)
                     self.initializer_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:257:25: ( ',' )?
+                    # C.g:258:25: ( ',' )?
                     alt43 = 2
                     LA43_0 = self.input.LA(1)
 
@@ -3926,13 +3943,13 @@ class CParser(Parser):
                         alt43 = 1
                     if alt43 == 1:
                         # C.g:0:0: ','
-                        self.match(self.input, 26, self.FOLLOW_26_in_initializer1063)
+                        self.match(self.input, 26, self.FOLLOW_26_in_initializer1064)
                         if self.failed:
                             return 
 
 
 
-                    self.match(self.input, 42, self.FOLLOW_42_in_initializer1066)
+                    self.match(self.input, 42, self.FOLLOW_42_in_initializer1067)
                     if self.failed:
                         return 
 
@@ -3953,7 +3970,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer_list
-    # C.g:260:1: initializer_list : initializer ( ',' initializer )* ;
+    # C.g:261:1: initializer_list : initializer ( ',' initializer )* ;
     def initializer_list(self, ):
 
         initializer_list_StartIndex = self.input.index()
@@ -3962,14 +3979,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 35):
                     return 
 
-                # C.g:261:2: ( initializer ( ',' initializer )* )
-                # C.g:261:4: initializer ( ',' initializer )*
-                self.following.append(self.FOLLOW_initializer_in_initializer_list1077)
+                # C.g:262:2: ( initializer ( ',' initializer )* )
+                # C.g:262:4: initializer ( ',' initializer )*
+                self.following.append(self.FOLLOW_initializer_in_initializer_list1078)
                 self.initializer()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:261:16: ( ',' initializer )*
+                # C.g:262:16: ( ',' initializer )*
                 while True: #loop45
                     alt45 = 2
                     LA45_0 = self.input.LA(1)
@@ -3984,11 +4001,11 @@ class CParser(Parser):
 
 
                     if alt45 == 1:
-                        # C.g:261:17: ',' initializer
-                        self.match(self.input, 26, self.FOLLOW_26_in_initializer_list1080)
+                        # C.g:262:17: ',' initializer
+                        self.match(self.input, 26, self.FOLLOW_26_in_initializer_list1081)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_initializer_in_initializer_list1082)
+                        self.following.append(self.FOLLOW_initializer_in_initializer_list1083)
                         self.initializer()
                         self.following.pop()
                         if self.failed:
@@ -4018,7 +4035,7 @@ class CParser(Parser):
 
 
     # $ANTLR start argument_expression_list
-    # C.g:266:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:267:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
     def argument_expression_list(self, ):
 
         argument_expression_list_StartIndex = self.input.index()
@@ -4027,14 +4044,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 36):
                     return 
 
-                # C.g:267:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:267:6: assignment_expression ( ',' assignment_expression )*
-                self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1100)
+                # C.g:268:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:268:6: assignment_expression ( ',' assignment_expression )*
+                self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1101)
                 self.assignment_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:267:28: ( ',' assignment_expression )*
+                # C.g:268:28: ( ',' assignment_expression )*
                 while True: #loop46
                     alt46 = 2
                     LA46_0 = self.input.LA(1)
@@ -4044,11 +4061,11 @@ class CParser(Parser):
 
 
                     if alt46 == 1:
-                        # C.g:267:29: ',' assignment_expression
-                        self.match(self.input, 26, self.FOLLOW_26_in_argument_expression_list1103)
+                        # C.g:268:29: ',' assignment_expression
+                        self.match(self.input, 26, self.FOLLOW_26_in_argument_expression_list1104)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1105)
+                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1106)
                         self.assignment_expression()
                         self.following.pop()
                         if self.failed:
@@ -4078,7 +4095,7 @@ class CParser(Parser):
 
 
     # $ANTLR start additive_expression
-    # C.g:270:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
+    # C.g:271:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
     def additive_expression(self, ):
 
         additive_expression_StartIndex = self.input.index()
@@ -4087,11 +4104,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 37):
                     return 
 
-                # C.g:271:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
-                # C.g:271:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
-                # C.g:271:4: ( multiplicative_expression )
-                # C.g:271:5: multiplicative_expression
-                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1119)
+                # C.g:272:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
+                # C.g:272:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:272:4: ( multiplicative_expression )
+                # C.g:272:5: multiplicative_expression
+                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1120)
                 self.multiplicative_expression()
                 self.following.pop()
                 if self.failed:
@@ -4099,7 +4116,7 @@ class CParser(Parser):
 
 
 
-                # C.g:271:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:272:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
                 while True: #loop47
                     alt47 = 3
                     LA47_0 = self.input.LA(1)
@@ -4111,11 +4128,11 @@ class CParser(Parser):
 
 
                     if alt47 == 1:
-                        # C.g:271:33: '+' multiplicative_expression
-                        self.match(self.input, 57, self.FOLLOW_57_in_additive_expression1123)
+                        # C.g:272:33: '+' multiplicative_expression
+                        self.match(self.input, 57, self.FOLLOW_57_in_additive_expression1124)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1125)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1126)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -4123,11 +4140,11 @@ class CParser(Parser):
 
 
                     elif alt47 == 2:
-                        # C.g:271:65: '-' multiplicative_expression
-                        self.match(self.input, 58, self.FOLLOW_58_in_additive_expression1129)
+                        # C.g:272:65: '-' multiplicative_expression
+                        self.match(self.input, 58, self.FOLLOW_58_in_additive_expression1130)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1131)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1132)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -4157,7 +4174,7 @@ class CParser(Parser):
 
 
     # $ANTLR start multiplicative_expression
-    # C.g:274:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
+    # C.g:275:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
     def multiplicative_expression(self, ):
 
         multiplicative_expression_StartIndex = self.input.index()
@@ -4166,11 +4183,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 38):
                     return 
 
-                # C.g:275:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
-                # C.g:275:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
-                # C.g:275:4: ( cast_expression )
-                # C.g:275:5: cast_expression
-                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1145)
+                # C.g:276:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
+                # C.g:276:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:276:4: ( cast_expression )
+                # C.g:276:5: cast_expression
+                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1146)
                 self.cast_expression()
                 self.following.pop()
                 if self.failed:
@@ -4178,7 +4195,7 @@ class CParser(Parser):
 
 
 
-                # C.g:275:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:276:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
                 while True: #loop48
                     alt48 = 4
                     LA48 = self.input.LA(1)
@@ -4190,11 +4207,11 @@ class CParser(Parser):
                         alt48 = 3
 
                     if alt48 == 1:
-                        # C.g:275:23: '*' cast_expression
-                        self.match(self.input, 55, self.FOLLOW_55_in_multiplicative_expression1149)
+                        # C.g:276:23: '*' cast_expression
+                        self.match(self.input, 55, self.FOLLOW_55_in_multiplicative_expression1150)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1151)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1152)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4202,11 +4219,11 @@ class CParser(Parser):
 
 
                     elif alt48 == 2:
-                        # C.g:275:45: '/' cast_expression
-                        self.match(self.input, 59, self.FOLLOW_59_in_multiplicative_expression1155)
+                        # C.g:276:45: '/' cast_expression
+                        self.match(self.input, 59, self.FOLLOW_59_in_multiplicative_expression1156)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1157)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1158)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4214,11 +4231,11 @@ class CParser(Parser):
 
 
                     elif alt48 == 3:
-                        # C.g:275:67: '%' cast_expression
-                        self.match(self.input, 60, self.FOLLOW_60_in_multiplicative_expression1161)
+                        # C.g:276:67: '%' cast_expression
+                        self.match(self.input, 60, self.FOLLOW_60_in_multiplicative_expression1162)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1163)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1164)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4248,7 +4265,7 @@ class CParser(Parser):
 
 
     # $ANTLR start cast_expression
-    # C.g:278:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
+    # C.g:279:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
     def cast_expression(self, ):
 
         cast_expression_StartIndex = self.input.index()
@@ -4257,7 +4274,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 39):
                     return 
 
-                # C.g:279:2: ( '(' type_name ')' cast_expression | unary_expression )
+                # C.g:280:2: ( '(' type_name ')' cast_expression | unary_expression )
                 alt49 = 2
                 LA49_0 = self.input.LA(1)
 
@@ -4275,7 +4292,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("278:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 8, self.input)
+                            nvae = NoViableAltException("279:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 8, self.input)
 
                             raise nvae
 
@@ -4288,7 +4305,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("278:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 1, self.input)
+                        nvae = NoViableAltException("279:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 1, self.input)
 
                         raise nvae
 
@@ -4299,24 +4316,24 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("278:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 0, self.input)
+                    nvae = NoViableAltException("279:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 49, 0, self.input)
 
                     raise nvae
 
                 if alt49 == 1:
-                    # C.g:279:4: '(' type_name ')' cast_expression
-                    self.match(self.input, 51, self.FOLLOW_51_in_cast_expression1176)
+                    # C.g:280:4: '(' type_name ')' cast_expression
+                    self.match(self.input, 51, self.FOLLOW_51_in_cast_expression1177)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_cast_expression1178)
+                    self.following.append(self.FOLLOW_type_name_in_cast_expression1179)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_cast_expression1180)
+                    self.match(self.input, 52, self.FOLLOW_52_in_cast_expression1181)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1182)
+                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1183)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -4324,8 +4341,8 @@ class CParser(Parser):
 
 
                 elif alt49 == 2:
-                    # C.g:280:4: unary_expression
-                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1187)
+                    # C.g:281:4: unary_expression
+                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1188)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4348,7 +4365,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_expression
-    # C.g:283:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );
+    # C.g:284:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );
     def unary_expression(self, ):
 
         unary_expression_StartIndex = self.input.index()
@@ -4357,7 +4374,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 40):
                     return 
 
-                # C.g:284:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
+                # C.g:285:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
                 alt50 = 6
                 LA50 = self.input.LA(1)
                 if LA50 == IDENTIFIER or LA50 == HEX_LITERAL or LA50 == OCTAL_LITERAL or LA50 == DECIMAL_LITERAL or LA50 == CHARACTER_LITERAL or LA50 == STRING_LITERAL or LA50 == FLOATING_POINT_LITERAL or LA50 == 51:
@@ -4383,7 +4400,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("283:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 8, self.input)
+                            nvae = NoViableAltException("284:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 8, self.input)
 
                             raise nvae
 
@@ -4394,7 +4411,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("283:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 7, self.input)
+                        nvae = NoViableAltException("284:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 7, self.input)
 
                         raise nvae
 
@@ -4403,13 +4420,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("283:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 0, self.input)
+                    nvae = NoViableAltException("284:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 50, 0, self.input)
 
                     raise nvae
 
                 if alt50 == 1:
-                    # C.g:284:4: postfix_expression
-                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1198)
+                    # C.g:285:4: postfix_expression
+                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1199)
                     self.postfix_expression()
                     self.following.pop()
                     if self.failed:
@@ -4417,11 +4434,11 @@ class CParser(Parser):
 
 
                 elif alt50 == 2:
-                    # C.g:285:4: '++' unary_expression
-                    self.match(self.input, 61, self.FOLLOW_61_in_unary_expression1203)
+                    # C.g:286:4: '++' unary_expression
+                    self.match(self.input, 61, self.FOLLOW_61_in_unary_expression1204)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1205)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1206)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4429,11 +4446,11 @@ class CParser(Parser):
 
 
                 elif alt50 == 3:
-                    # C.g:286:4: '--' unary_expression
-                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1210)
+                    # C.g:287:4: '--' unary_expression
+                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1211)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1212)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1213)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4441,13 +4458,13 @@ class CParser(Parser):
 
 
                 elif alt50 == 4:
-                    # C.g:287:4: unary_operator cast_expression
-                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1217)
+                    # C.g:288:4: unary_operator cast_expression
+                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1218)
                     self.unary_operator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1219)
+                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1220)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -4455,11 +4472,11 @@ class CParser(Parser):
 
 
                 elif alt50 == 5:
-                    # C.g:288:4: 'sizeof' unary_expression
-                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1224)
+                    # C.g:289:4: 'sizeof' unary_expression
+                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1225)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1226)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1227)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4467,19 +4484,19 @@ class CParser(Parser):
 
 
                 elif alt50 == 6:
-                    # C.g:289:4: 'sizeof' '(' type_name ')'
-                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1231)
+                    # C.g:290:4: 'sizeof' '(' type_name ')'
+                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1232)
                     if self.failed:
                         return 
-                    self.match(self.input, 51, self.FOLLOW_51_in_unary_expression1233)
+                    self.match(self.input, 51, self.FOLLOW_51_in_unary_expression1234)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_unary_expression1235)
+                    self.following.append(self.FOLLOW_type_name_in_unary_expression1236)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_unary_expression1237)
+                    self.match(self.input, 52, self.FOLLOW_52_in_unary_expression1238)
                     if self.failed:
                         return 
 
@@ -4500,7 +4517,7 @@ class CParser(Parser):
 
 
     # $ANTLR start postfix_expression
-    # C.g:292:1: postfix_expression : primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* ;
+    # C.g:293:1: postfix_expression : primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* ;
     def postfix_expression(self, ):
 
         postfix_expression_StartIndex = self.input.index()
@@ -4509,14 +4526,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 41):
                     return 
 
-                # C.g:293:2: ( primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* )
-                # C.g:293:6: primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
-                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1250)
+                # C.g:294:2: ( primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* )
+                # C.g:294:6: primary_expression ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
+                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1251)
                 self.primary_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:294:9: ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
+                # C.g:295:9: ( '[' expression ']' | '(' ')' | '(' argument_expression_list ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
                 while True: #loop51
                     alt51 = 9
                     LA51 = self.input.LA(1)
@@ -4553,85 +4570,85 @@ class CParser(Parser):
                         alt51 = 8
 
                     if alt51 == 1:
-                        # C.g:294:13: '[' expression ']'
-                        self.match(self.input, 53, self.FOLLOW_53_in_postfix_expression1264)
+                        # C.g:295:13: '[' expression ']'
+                        self.match(self.input, 53, self.FOLLOW_53_in_postfix_expression1265)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_expression_in_postfix_expression1266)
+                        self.following.append(self.FOLLOW_expression_in_postfix_expression1267)
                         self.expression()
                         self.following.pop()
                         if self.failed:
                             return 
-                        self.match(self.input, 54, self.FOLLOW_54_in_postfix_expression1268)
+                        self.match(self.input, 54, self.FOLLOW_54_in_postfix_expression1269)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 2:
-                        # C.g:295:13: '(' ')'
-                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1282)
+                        # C.g:296:13: '(' ')'
+                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1283)
                         if self.failed:
                             return 
-                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1284)
+                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1285)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 3:
-                        # C.g:296:13: '(' argument_expression_list ')'
-                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1298)
+                        # C.g:297:13: '(' argument_expression_list ')'
+                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1299)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1300)
+                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1301)
                         self.argument_expression_list()
                         self.following.pop()
                         if self.failed:
                             return 
-                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1302)
+                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1303)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 4:
-                        # C.g:297:13: '.' IDENTIFIER
-                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1316)
+                        # C.g:298:13: '.' IDENTIFIER
+                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1317)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1318)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1319)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 5:
-                        # C.g:298:13: '*' IDENTIFIER
-                        self.match(self.input, 55, self.FOLLOW_55_in_postfix_expression1332)
+                        # C.g:299:13: '*' IDENTIFIER
+                        self.match(self.input, 55, self.FOLLOW_55_in_postfix_expression1333)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1334)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1335)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 6:
-                        # C.g:299:13: '->' IDENTIFIER
-                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1348)
+                        # C.g:300:13: '->' IDENTIFIER
+                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1349)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1350)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1351)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 7:
-                        # C.g:300:13: '++'
-                        self.match(self.input, 61, self.FOLLOW_61_in_postfix_expression1364)
+                        # C.g:301:13: '++'
+                        self.match(self.input, 61, self.FOLLOW_61_in_postfix_expression1365)
                         if self.failed:
                             return 
 
 
                     elif alt51 == 8:
-                        # C.g:301:13: '--'
-                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1378)
+                        # C.g:302:13: '--'
+                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1379)
                         if self.failed:
                             return 
 
@@ -4659,7 +4676,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_operator
-    # C.g:305:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
+    # C.g:306:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
     def unary_operator(self, ):
 
         unary_operator_StartIndex = self.input.index()
@@ -4668,7 +4685,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 42):
                     return 
 
-                # C.g:306:2: ( '&' | '*' | '+' | '-' | '~' | '!' )
+                # C.g:307:2: ( '&' | '*' | '+' | '-' | '~' | '!' )
                 # C.g:
                 if self.input.LA(1) == 55 or (57 <= self.input.LA(1) <= 58) or (66 <= self.input.LA(1) <= 68):
                     self.input.consume();
@@ -4706,7 +4723,7 @@ class CParser(Parser):
 
 
     # $ANTLR start primary_expression
-    # C.g:314:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
+    # C.g:315:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
     def primary_expression(self, ):
 
         primary_expression_StartIndex = self.input.index()
@@ -4715,7 +4732,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 43):
                     return 
 
-                # C.g:315:2: ( IDENTIFIER | constant | '(' expression ')' )
+                # C.g:316:2: ( IDENTIFIER | constant | '(' expression ')' )
                 alt52 = 3
                 LA52 = self.input.LA(1)
                 if LA52 == IDENTIFIER:
@@ -4729,20 +4746,20 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("314:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 52, 0, self.input)
+                    nvae = NoViableAltException("315:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 52, 0, self.input)
 
                     raise nvae
 
                 if alt52 == 1:
-                    # C.g:315:4: IDENTIFIER
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_primary_expression1436)
+                    # C.g:316:4: IDENTIFIER
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_primary_expression1437)
                     if self.failed:
                         return 
 
 
                 elif alt52 == 2:
-                    # C.g:316:4: constant
-                    self.following.append(self.FOLLOW_constant_in_primary_expression1441)
+                    # C.g:317:4: constant
+                    self.following.append(self.FOLLOW_constant_in_primary_expression1442)
                     self.constant()
                     self.following.pop()
                     if self.failed:
@@ -4750,16 +4767,16 @@ class CParser(Parser):
 
 
                 elif alt52 == 3:
-                    # C.g:317:4: '(' expression ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_primary_expression1446)
+                    # C.g:318:4: '(' expression ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_primary_expression1447)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_expression_in_primary_expression1448)
+                    self.following.append(self.FOLLOW_expression_in_primary_expression1449)
                     self.expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_primary_expression1450)
+                    self.match(self.input, 52, self.FOLLOW_52_in_primary_expression1451)
                     if self.failed:
                         return 
 
@@ -4780,7 +4797,7 @@ class CParser(Parser):
 
 
     # $ANTLR start constant
-    # C.g:320:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
+    # C.g:321:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
     def constant(self, ):
 
         constant_StartIndex = self.input.index()
@@ -4789,7 +4806,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 44):
                     return 
 
-                # C.g:321:5: ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL )
+                # C.g:322:5: ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL )
                 # C.g:
                 if (HEX_LITERAL <= self.input.LA(1) <= FLOATING_POINT_LITERAL):
                     self.input.consume();
@@ -4827,7 +4844,7 @@ class CParser(Parser):
 
 
     # $ANTLR start expression
-    # C.g:331:1: expression : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:332:1: expression : assignment_expression ( ',' assignment_expression )* ;
     def expression(self, ):
 
         expression_StartIndex = self.input.index()
@@ -4836,14 +4853,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 45):
                     return 
 
-                # C.g:332:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:332:4: assignment_expression ( ',' assignment_expression )*
-                self.following.append(self.FOLLOW_assignment_expression_in_expression1528)
+                # C.g:333:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:333:4: assignment_expression ( ',' assignment_expression )*
+                self.following.append(self.FOLLOW_assignment_expression_in_expression1529)
                 self.assignment_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:332:26: ( ',' assignment_expression )*
+                # C.g:333:26: ( ',' assignment_expression )*
                 while True: #loop53
                     alt53 = 2
                     LA53_0 = self.input.LA(1)
@@ -4853,11 +4870,11 @@ class CParser(Parser):
 
 
                     if alt53 == 1:
-                        # C.g:332:27: ',' assignment_expression
-                        self.match(self.input, 26, self.FOLLOW_26_in_expression1531)
+                        # C.g:333:27: ',' assignment_expression
+                        self.match(self.input, 26, self.FOLLOW_26_in_expression1532)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_assignment_expression_in_expression1533)
+                        self.following.append(self.FOLLOW_assignment_expression_in_expression1534)
                         self.assignment_expression()
                         self.following.pop()
                         if self.failed:
@@ -4887,7 +4904,7 @@ class CParser(Parser):
 
 
     # $ANTLR start constant_expression
-    # C.g:335:1: constant_expression : conditional_expression ;
+    # C.g:336:1: constant_expression : conditional_expression ;
     def constant_expression(self, ):
 
         constant_expression_StartIndex = self.input.index()
@@ -4896,9 +4913,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 46):
                     return 
 
-                # C.g:336:2: ( conditional_expression )
-                # C.g:336:4: conditional_expression
-                self.following.append(self.FOLLOW_conditional_expression_in_constant_expression1546)
+                # C.g:337:2: ( conditional_expression )
+                # C.g:337:4: conditional_expression
+                self.following.append(self.FOLLOW_conditional_expression_in_constant_expression1547)
                 self.conditional_expression()
                 self.following.pop()
                 if self.failed:
@@ -4922,7 +4939,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_expression
-    # C.g:339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
+    # C.g:340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
     def assignment_expression(self, ):
 
         assignment_expression_StartIndex = self.input.index()
@@ -4931,7 +4948,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 47):
                     return 
 
-                # C.g:340:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
+                # C.g:341:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
                 alt54 = 2
                 LA54 = self.input.LA(1)
                 if LA54 == IDENTIFIER:
@@ -4948,7 +4965,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 8, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 8, self.input)
 
                             raise nvae
 
@@ -4964,7 +4981,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 9, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 9, self.input)
 
                             raise nvae
 
@@ -4980,7 +4997,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 10, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 10, self.input)
 
                             raise nvae
 
@@ -4996,7 +5013,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 11, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 11, self.input)
 
                             raise nvae
 
@@ -5012,7 +5029,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 12, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 12, self.input)
 
                             raise nvae
 
@@ -5028,7 +5045,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 13, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 13, self.input)
 
                             raise nvae
 
@@ -5044,7 +5061,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 14, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 14, self.input)
 
                             raise nvae
 
@@ -5057,7 +5074,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 1, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 1, self.input)
 
                         raise nvae
 
@@ -5075,7 +5092,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 36, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 36, self.input)
 
                             raise nvae
 
@@ -5091,7 +5108,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 37, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 37, self.input)
 
                             raise nvae
 
@@ -5107,7 +5124,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 38, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 38, self.input)
 
                             raise nvae
 
@@ -5123,7 +5140,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 39, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 39, self.input)
 
                             raise nvae
 
@@ -5139,7 +5156,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 40, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 40, self.input)
 
                             raise nvae
 
@@ -5155,7 +5172,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 41, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 41, self.input)
 
                             raise nvae
 
@@ -5171,7 +5188,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 42, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 42, self.input)
 
                             raise nvae
 
@@ -5184,7 +5201,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 2, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 2, self.input)
 
                         raise nvae
 
@@ -5202,7 +5219,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 64, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 64, self.input)
 
                             raise nvae
 
@@ -5218,7 +5235,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 65, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 65, self.input)
 
                             raise nvae
 
@@ -5234,7 +5251,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 66, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 66, self.input)
 
                             raise nvae
 
@@ -5250,7 +5267,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 67, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 67, self.input)
 
                             raise nvae
 
@@ -5266,7 +5283,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 68, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 68, self.input)
 
                             raise nvae
 
@@ -5282,7 +5299,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 69, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 69, self.input)
 
                             raise nvae
 
@@ -5298,7 +5315,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 70, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 70, self.input)
 
                             raise nvae
 
@@ -5309,7 +5326,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 3, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 3, self.input)
 
                         raise nvae
 
@@ -5327,7 +5344,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 83, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 83, self.input)
 
                             raise nvae
 
@@ -5343,7 +5360,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 84, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 84, self.input)
 
                             raise nvae
 
@@ -5359,7 +5376,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 85, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 85, self.input)
 
                             raise nvae
 
@@ -5375,7 +5392,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 86, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 86, self.input)
 
                             raise nvae
 
@@ -5391,7 +5408,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 87, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 87, self.input)
 
                             raise nvae
 
@@ -5407,7 +5424,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 88, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 88, self.input)
 
                             raise nvae
 
@@ -5423,7 +5440,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 89, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 89, self.input)
 
                             raise nvae
 
@@ -5432,7 +5449,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 4, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 4, self.input)
 
                         raise nvae
 
@@ -5450,7 +5467,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 90, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 90, self.input)
 
                             raise nvae
 
@@ -5466,7 +5483,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 91, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 91, self.input)
 
                             raise nvae
 
@@ -5482,7 +5499,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 92, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 92, self.input)
 
                             raise nvae
 
@@ -5498,7 +5515,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 93, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 93, self.input)
 
                             raise nvae
 
@@ -5514,7 +5531,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 94, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 94, self.input)
 
                             raise nvae
 
@@ -5530,7 +5547,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 95, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 95, self.input)
 
                             raise nvae
 
@@ -5546,7 +5563,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 96, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 96, self.input)
 
                             raise nvae
 
@@ -5555,7 +5572,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 5, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 5, self.input)
 
                         raise nvae
 
@@ -5573,7 +5590,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 97, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 97, self.input)
 
                             raise nvae
 
@@ -5589,7 +5606,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 98, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 98, self.input)
 
                             raise nvae
 
@@ -5605,7 +5622,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 99, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 99, self.input)
 
                             raise nvae
 
@@ -5621,7 +5638,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 100, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 100, self.input)
 
                             raise nvae
 
@@ -5637,7 +5654,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 101, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 101, self.input)
 
                             raise nvae
 
@@ -5653,7 +5670,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 102, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 102, self.input)
 
                             raise nvae
 
@@ -5669,7 +5686,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 103, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 103, self.input)
 
                             raise nvae
 
@@ -5678,7 +5695,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 6, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 6, self.input)
 
                         raise nvae
 
@@ -5696,7 +5713,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 104, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 104, self.input)
 
                             raise nvae
 
@@ -5712,7 +5729,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 105, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 105, self.input)
 
                             raise nvae
 
@@ -5728,7 +5745,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 106, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 106, self.input)
 
                             raise nvae
 
@@ -5744,7 +5761,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 107, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 107, self.input)
 
                             raise nvae
 
@@ -5760,7 +5777,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 108, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 108, self.input)
 
                             raise nvae
 
@@ -5776,7 +5793,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 109, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 109, self.input)
 
                             raise nvae
 
@@ -5792,7 +5809,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 110, self.input)
+                            nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 110, self.input)
 
                             raise nvae
 
@@ -5801,7 +5818,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 7, self.input)
+                        nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 7, self.input)
 
                         raise nvae
 
@@ -5810,23 +5827,23 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("339:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 0, self.input)
+                    nvae = NoViableAltException("340:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 54, 0, self.input)
 
                     raise nvae
 
                 if alt54 == 1:
-                    # C.g:340:4: lvalue assignment_operator assignment_expression
-                    self.following.append(self.FOLLOW_lvalue_in_assignment_expression1557)
+                    # C.g:341:4: lvalue assignment_operator assignment_expression
+                    self.following.append(self.FOLLOW_lvalue_in_assignment_expression1558)
                     self.lvalue()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_assignment_operator_in_assignment_expression1559)
+                    self.following.append(self.FOLLOW_assignment_operator_in_assignment_expression1560)
                     self.assignment_operator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_assignment_expression_in_assignment_expression1561)
+                    self.following.append(self.FOLLOW_assignment_expression_in_assignment_expression1562)
                     self.assignment_expression()
                     self.following.pop()
                     if self.failed:
@@ -5834,8 +5851,8 @@ class CParser(Parser):
 
 
                 elif alt54 == 2:
-                    # C.g:341:4: conditional_expression
-                    self.following.append(self.FOLLOW_conditional_expression_in_assignment_expression1566)
+                    # C.g:342:4: conditional_expression
+                    self.following.append(self.FOLLOW_conditional_expression_in_assignment_expression1567)
                     self.conditional_expression()
                     self.following.pop()
                     if self.failed:
@@ -5858,7 +5875,7 @@ class CParser(Parser):
 
 
     # $ANTLR start lvalue
-    # C.g:344:1: lvalue : unary_expression ;
+    # C.g:345:1: lvalue : unary_expression ;
     def lvalue(self, ):
 
         lvalue_StartIndex = self.input.index()
@@ -5867,9 +5884,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 48):
                     return 
 
-                # C.g:345:2: ( unary_expression )
-                # C.g:345:4: unary_expression
-                self.following.append(self.FOLLOW_unary_expression_in_lvalue1578)
+                # C.g:346:2: ( unary_expression )
+                # C.g:346:4: unary_expression
+                self.following.append(self.FOLLOW_unary_expression_in_lvalue1579)
                 self.unary_expression()
                 self.following.pop()
                 if self.failed:
@@ -5893,7 +5910,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_operator
-    # C.g:348:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
+    # C.g:349:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
     def assignment_operator(self, ):
 
         assignment_operator_StartIndex = self.input.index()
@@ -5902,7 +5919,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 49):
                     return 
 
-                # C.g:349:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
+                # C.g:350:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
                 # C.g:
                 if self.input.LA(1) == 27 or (69 <= self.input.LA(1) <= 78):
                     self.input.consume();
@@ -5940,7 +5957,7 @@ class CParser(Parser):
 
 
     # $ANTLR start conditional_expression
-    # C.g:362:1: conditional_expression : logical_or_expression ( '?' expression ':' conditional_expression )? ;
+    # C.g:363:1: conditional_expression : logical_or_expression ( '?' expression ':' conditional_expression )? ;
     def conditional_expression(self, ):
 
         conditional_expression_StartIndex = self.input.index()
@@ -5949,33 +5966,33 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 50):
                     return 
 
-                # C.g:363:2: ( logical_or_expression ( '?' expression ':' conditional_expression )? )
-                # C.g:363:4: logical_or_expression ( '?' expression ':' conditional_expression )?
-                self.following.append(self.FOLLOW_logical_or_expression_in_conditional_expression1650)
+                # C.g:364:2: ( logical_or_expression ( '?' expression ':' conditional_expression )? )
+                # C.g:364:4: logical_or_expression ( '?' expression ':' conditional_expression )?
+                self.following.append(self.FOLLOW_logical_or_expression_in_conditional_expression1651)
                 self.logical_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:363:26: ( '?' expression ':' conditional_expression )?
+                # C.g:364:26: ( '?' expression ':' conditional_expression )?
                 alt55 = 2
                 LA55_0 = self.input.LA(1)
 
                 if (LA55_0 == 79) :
                     alt55 = 1
                 if alt55 == 1:
-                    # C.g:363:27: '?' expression ':' conditional_expression
-                    self.match(self.input, 79, self.FOLLOW_79_in_conditional_expression1653)
+                    # C.g:364:27: '?' expression ':' conditional_expression
+                    self.match(self.input, 79, self.FOLLOW_79_in_conditional_expression1654)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_expression_in_conditional_expression1655)
+                    self.following.append(self.FOLLOW_expression_in_conditional_expression1656)
                     self.expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 45, self.FOLLOW_45_in_conditional_expression1657)
+                    self.match(self.input, 45, self.FOLLOW_45_in_conditional_expression1658)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_conditional_expression_in_conditional_expression1659)
+                    self.following.append(self.FOLLOW_conditional_expression_in_conditional_expression1660)
                     self.conditional_expression()
                     self.following.pop()
                     if self.failed:
@@ -6002,7 +6019,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_or_expression
-    # C.g:366:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
+    # C.g:367:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
     def logical_or_expression(self, ):
 
         logical_or_expression_StartIndex = self.input.index()
@@ -6011,14 +6028,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 51):
                     return 
 
-                # C.g:367:2: ( logical_and_expression ( '||' logical_and_expression )* )
-                # C.g:367:4: logical_and_expression ( '||' logical_and_expression )*
-                self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1672)
+                # C.g:368:2: ( logical_and_expression ( '||' logical_and_expression )* )
+                # C.g:368:4: logical_and_expression ( '||' logical_and_expression )*
+                self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1673)
                 self.logical_and_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:367:27: ( '||' logical_and_expression )*
+                # C.g:368:27: ( '||' logical_and_expression )*
                 while True: #loop56
                     alt56 = 2
                     LA56_0 = self.input.LA(1)
@@ -6028,11 +6045,11 @@ class CParser(Parser):
 
 
                     if alt56 == 1:
-                        # C.g:367:28: '||' logical_and_expression
-                        self.match(self.input, 80, self.FOLLOW_80_in_logical_or_expression1675)
+                        # C.g:368:28: '||' logical_and_expression
+                        self.match(self.input, 80, self.FOLLOW_80_in_logical_or_expression1676)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1677)
+                        self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1678)
                         self.logical_and_expression()
                         self.following.pop()
                         if self.failed:
@@ -6062,7 +6079,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_and_expression
-    # C.g:370:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
+    # C.g:371:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
     def logical_and_expression(self, ):
 
         logical_and_expression_StartIndex = self.input.index()
@@ -6071,14 +6088,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 52):
                     return 
 
-                # C.g:371:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
-                # C.g:371:4: inclusive_or_expression ( '&&' inclusive_or_expression )*
-                self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1690)
+                # C.g:372:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
+                # C.g:372:4: inclusive_or_expression ( '&&' inclusive_or_expression )*
+                self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1691)
                 self.inclusive_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:371:28: ( '&&' inclusive_or_expression )*
+                # C.g:372:28: ( '&&' inclusive_or_expression )*
                 while True: #loop57
                     alt57 = 2
                     LA57_0 = self.input.LA(1)
@@ -6088,11 +6105,11 @@ class CParser(Parser):
 
 
                     if alt57 == 1:
-                        # C.g:371:29: '&&' inclusive_or_expression
-                        self.match(self.input, 81, self.FOLLOW_81_in_logical_and_expression1693)
+                        # C.g:372:29: '&&' inclusive_or_expression
+                        self.match(self.input, 81, self.FOLLOW_81_in_logical_and_expression1694)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1695)
+                        self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1696)
                         self.inclusive_or_expression()
                         self.following.pop()
                         if self.failed:
@@ -6122,7 +6139,7 @@ class CParser(Parser):
 
 
     # $ANTLR start inclusive_or_expression
-    # C.g:374:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
+    # C.g:375:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
     def inclusive_or_expression(self, ):
 
         inclusive_or_expression_StartIndex = self.input.index()
@@ -6131,14 +6148,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 53):
                     return 
 
-                # C.g:375:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
-                # C.g:375:4: exclusive_or_expression ( '|' exclusive_or_expression )*
-                self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1708)
+                # C.g:376:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
+                # C.g:376:4: exclusive_or_expression ( '|' exclusive_or_expression )*
+                self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1709)
                 self.exclusive_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:375:28: ( '|' exclusive_or_expression )*
+                # C.g:376:28: ( '|' exclusive_or_expression )*
                 while True: #loop58
                     alt58 = 2
                     LA58_0 = self.input.LA(1)
@@ -6148,11 +6165,11 @@ class CParser(Parser):
 
 
                     if alt58 == 1:
-                        # C.g:375:29: '|' exclusive_or_expression
-                        self.match(self.input, 82, self.FOLLOW_82_in_inclusive_or_expression1711)
+                        # C.g:376:29: '|' exclusive_or_expression
+                        self.match(self.input, 82, self.FOLLOW_82_in_inclusive_or_expression1712)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1713)
+                        self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1714)
                         self.exclusive_or_expression()
                         self.following.pop()
                         if self.failed:
@@ -6182,7 +6199,7 @@ class CParser(Parser):
 
 
     # $ANTLR start exclusive_or_expression
-    # C.g:378:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
+    # C.g:379:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
     def exclusive_or_expression(self, ):
 
         exclusive_or_expression_StartIndex = self.input.index()
@@ -6191,14 +6208,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 54):
                     return 
 
-                # C.g:379:2: ( and_expression ( '^' and_expression )* )
-                # C.g:379:4: and_expression ( '^' and_expression )*
-                self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1726)
+                # C.g:380:2: ( and_expression ( '^' and_expression )* )
+                # C.g:380:4: and_expression ( '^' and_expression )*
+                self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1727)
                 self.and_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:379:19: ( '^' and_expression )*
+                # C.g:380:19: ( '^' and_expression )*
                 while True: #loop59
                     alt59 = 2
                     LA59_0 = self.input.LA(1)
@@ -6208,11 +6225,11 @@ class CParser(Parser):
 
 
                     if alt59 == 1:
-                        # C.g:379:20: '^' and_expression
-                        self.match(self.input, 83, self.FOLLOW_83_in_exclusive_or_expression1729)
+                        # C.g:380:20: '^' and_expression
+                        self.match(self.input, 83, self.FOLLOW_83_in_exclusive_or_expression1730)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1731)
+                        self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1732)
                         self.and_expression()
                         self.following.pop()
                         if self.failed:
@@ -6242,7 +6259,7 @@ class CParser(Parser):
 
 
     # $ANTLR start and_expression
-    # C.g:382:1: and_expression : equality_expression ( '&' equality_expression )* ;
+    # C.g:383:1: and_expression : equality_expression ( '&' equality_expression )* ;
     def and_expression(self, ):
 
         and_expression_StartIndex = self.input.index()
@@ -6251,14 +6268,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 55):
                     return 
 
-                # C.g:383:2: ( equality_expression ( '&' equality_expression )* )
-                # C.g:383:4: equality_expression ( '&' equality_expression )*
-                self.following.append(self.FOLLOW_equality_expression_in_and_expression1744)
+                # C.g:384:2: ( equality_expression ( '&' equality_expression )* )
+                # C.g:384:4: equality_expression ( '&' equality_expression )*
+                self.following.append(self.FOLLOW_equality_expression_in_and_expression1745)
                 self.equality_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:383:24: ( '&' equality_expression )*
+                # C.g:384:24: ( '&' equality_expression )*
                 while True: #loop60
                     alt60 = 2
                     LA60_0 = self.input.LA(1)
@@ -6268,11 +6285,11 @@ class CParser(Parser):
 
 
                     if alt60 == 1:
-                        # C.g:383:25: '&' equality_expression
-                        self.match(self.input, 66, self.FOLLOW_66_in_and_expression1747)
+                        # C.g:384:25: '&' equality_expression
+                        self.match(self.input, 66, self.FOLLOW_66_in_and_expression1748)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_equality_expression_in_and_expression1749)
+                        self.following.append(self.FOLLOW_equality_expression_in_and_expression1750)
                         self.equality_expression()
                         self.following.pop()
                         if self.failed:
@@ -6302,7 +6319,7 @@ class CParser(Parser):
 
 
     # $ANTLR start equality_expression
-    # C.g:385:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
+    # C.g:386:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
     def equality_expression(self, ):
 
         equality_expression_StartIndex = self.input.index()
@@ -6311,14 +6328,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 56):
                     return 
 
-                # C.g:386:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
-                # C.g:386:4: relational_expression ( ( '==' | '!=' ) relational_expression )*
-                self.following.append(self.FOLLOW_relational_expression_in_equality_expression1761)
+                # C.g:387:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
+                # C.g:387:4: relational_expression ( ( '==' | '!=' ) relational_expression )*
+                self.following.append(self.FOLLOW_relational_expression_in_equality_expression1762)
                 self.relational_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:386:26: ( ( '==' | '!=' ) relational_expression )*
+                # C.g:387:26: ( ( '==' | '!=' ) relational_expression )*
                 while True: #loop61
                     alt61 = 2
                     LA61_0 = self.input.LA(1)
@@ -6328,7 +6345,7 @@ class CParser(Parser):
 
 
                     if alt61 == 1:
-                        # C.g:386:27: ( '==' | '!=' ) relational_expression
+                        # C.g:387:27: ( '==' | '!=' ) relational_expression
                         if (84 <= self.input.LA(1) <= 85):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6341,12 +6358,12 @@ class CParser(Parser):
 
                             mse = MismatchedSetException(None, self.input)
                             self.recoverFromMismatchedSet(
-                                self.input, mse, self.FOLLOW_set_in_equality_expression1764
+                                self.input, mse, self.FOLLOW_set_in_equality_expression1765
                                 )
                             raise mse
 
 
-                        self.following.append(self.FOLLOW_relational_expression_in_equality_expression1770)
+                        self.following.append(self.FOLLOW_relational_expression_in_equality_expression1771)
                         self.relational_expression()
                         self.following.pop()
                         if self.failed:
@@ -6376,7 +6393,7 @@ class CParser(Parser):
 
 
     # $ANTLR start relational_expression
-    # C.g:389:1: relational_expression : shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* ;
+    # C.g:390:1: relational_expression : shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* ;
     def relational_expression(self, ):
 
         relational_expression_StartIndex = self.input.index()
@@ -6385,14 +6402,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 57):
                     return 
 
-                # C.g:390:2: ( shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* )
-                # C.g:390:4: shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
-                self.following.append(self.FOLLOW_shift_expression_in_relational_expression1783)
+                # C.g:391:2: ( shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* )
+                # C.g:391:4: shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
+                self.following.append(self.FOLLOW_shift_expression_in_relational_expression1784)
                 self.shift_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:390:21: ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
+                # C.g:391:21: ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
                 while True: #loop62
                     alt62 = 2
                     LA62_0 = self.input.LA(1)
@@ -6402,7 +6419,7 @@ class CParser(Parser):
 
 
                     if alt62 == 1:
-                        # C.g:390:22: ( '<' | '>' | '<=' | '>=' ) shift_expression
+                        # C.g:391:22: ( '<' | '>' | '<=' | '>=' ) shift_expression
                         if (86 <= self.input.LA(1) <= 89):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6415,12 +6432,12 @@ class CParser(Parser):
 
                             mse = MismatchedSetException(None, self.input)
                             self.recoverFromMismatchedSet(
-                                self.input, mse, self.FOLLOW_set_in_relational_expression1786
+                                self.input, mse, self.FOLLOW_set_in_relational_expression1787
                                 )
                             raise mse
 
 
-                        self.following.append(self.FOLLOW_shift_expression_in_relational_expression1796)
+                        self.following.append(self.FOLLOW_shift_expression_in_relational_expression1797)
                         self.shift_expression()
                         self.following.pop()
                         if self.failed:
@@ -6450,7 +6467,7 @@ class CParser(Parser):
 
 
     # $ANTLR start shift_expression
-    # C.g:393:1: shift_expression : additive_expression ( ( '<<' | '>>' ) additive_expression )* ;
+    # C.g:394:1: shift_expression : additive_expression ( ( '<<' | '>>' ) additive_expression )* ;
     def shift_expression(self, ):
 
         shift_expression_StartIndex = self.input.index()
@@ -6459,14 +6476,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 58):
                     return 
 
-                # C.g:394:2: ( additive_expression ( ( '<<' | '>>' ) additive_expression )* )
-                # C.g:394:4: additive_expression ( ( '<<' | '>>' ) additive_expression )*
-                self.following.append(self.FOLLOW_additive_expression_in_shift_expression1809)
+                # C.g:395:2: ( additive_expression ( ( '<<' | '>>' ) additive_expression )* )
+                # C.g:395:4: additive_expression ( ( '<<' | '>>' ) additive_expression )*
+                self.following.append(self.FOLLOW_additive_expression_in_shift_expression1810)
                 self.additive_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:394:24: ( ( '<<' | '>>' ) additive_expression )*
+                # C.g:395:24: ( ( '<<' | '>>' ) additive_expression )*
                 while True: #loop63
                     alt63 = 2
                     LA63_0 = self.input.LA(1)
@@ -6476,7 +6493,7 @@ class CParser(Parser):
 
 
                     if alt63 == 1:
-                        # C.g:394:25: ( '<<' | '>>' ) additive_expression
+                        # C.g:395:25: ( '<<' | '>>' ) additive_expression
                         if (90 <= self.input.LA(1) <= 91):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6489,12 +6506,12 @@ class CParser(Parser):
 
                             mse = MismatchedSetException(None, self.input)
                             self.recoverFromMismatchedSet(
-                                self.input, mse, self.FOLLOW_set_in_shift_expression1812
+                                self.input, mse, self.FOLLOW_set_in_shift_expression1813
                                 )
                             raise mse
 
 
-                        self.following.append(self.FOLLOW_additive_expression_in_shift_expression1818)
+                        self.following.append(self.FOLLOW_additive_expression_in_shift_expression1819)
                         self.additive_expression()
                         self.following.pop()
                         if self.failed:
@@ -6524,7 +6541,7 @@ class CParser(Parser):
 
 
     # $ANTLR start statement
-    # C.g:399:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );
+    # C.g:400:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );
     def statement(self, ):
 
         statement_StartIndex = self.input.index()
@@ -6533,7 +6550,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 59):
                     return 
 
-                # C.g:400:2: ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement )
+                # C.g:401:2: ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement )
                 alt64 = 7
                 LA64 = self.input.LA(1)
                 if LA64 == IDENTIFIER:
@@ -6552,7 +6569,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("399:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 22, self.input)
+                            nvae = NoViableAltException("400:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 22, self.input)
 
                             raise nvae
 
@@ -6563,7 +6580,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("399:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 1, self.input)
+                        nvae = NoViableAltException("400:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 1, self.input)
 
                         raise nvae
 
@@ -6584,13 +6601,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("399:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 0, self.input)
+                    nvae = NoViableAltException("400:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 64, 0, self.input)
 
                     raise nvae
 
                 if alt64 == 1:
-                    # C.g:400:4: labeled_statement
-                    self.following.append(self.FOLLOW_labeled_statement_in_statement1833)
+                    # C.g:401:4: labeled_statement
+                    self.following.append(self.FOLLOW_labeled_statement_in_statement1834)
                     self.labeled_statement()
                     self.following.pop()
                     if self.failed:
@@ -6598,8 +6615,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 2:
-                    # C.g:401:4: compound_statement
-                    self.following.append(self.FOLLOW_compound_statement_in_statement1838)
+                    # C.g:402:4: compound_statement
+                    self.following.append(self.FOLLOW_compound_statement_in_statement1839)
                     self.compound_statement()
                     self.following.pop()
                     if self.failed:
@@ -6607,8 +6624,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 3:
-                    # C.g:402:4: expression_statement
-                    self.following.append(self.FOLLOW_expression_statement_in_statement1843)
+                    # C.g:403:4: expression_statement
+                    self.following.append(self.FOLLOW_expression_statement_in_statement1844)
                     self.expression_statement()
                     self.following.pop()
                     if self.failed:
@@ -6616,8 +6633,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 4:
-                    # C.g:403:4: selection_statement
-                    self.following.append(self.FOLLOW_selection_statement_in_statement1848)
+                    # C.g:404:4: selection_statement
+                    self.following.append(self.FOLLOW_selection_statement_in_statement1849)
                     self.selection_statement()
                     self.following.pop()
                     if self.failed:
@@ -6625,8 +6642,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 5:
-                    # C.g:404:4: iteration_statement
-                    self.following.append(self.FOLLOW_iteration_statement_in_statement1853)
+                    # C.g:405:4: iteration_statement
+                    self.following.append(self.FOLLOW_iteration_statement_in_statement1854)
                     self.iteration_statement()
                     self.following.pop()
                     if self.failed:
@@ -6634,8 +6651,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 6:
-                    # C.g:405:4: jump_statement
-                    self.following.append(self.FOLLOW_jump_statement_in_statement1858)
+                    # C.g:406:4: jump_statement
+                    self.following.append(self.FOLLOW_jump_statement_in_statement1859)
                     self.jump_statement()
                     self.following.pop()
                     if self.failed:
@@ -6643,8 +6660,8 @@ class CParser(Parser):
 
 
                 elif alt64 == 7:
-                    # C.g:406:4: macro_statement
-                    self.following.append(self.FOLLOW_macro_statement_in_statement1863)
+                    # C.g:407:4: macro_statement
+                    self.following.append(self.FOLLOW_macro_statement_in_statement1864)
                     self.macro_statement()
                     self.following.pop()
                     if self.failed:
@@ -6667,7 +6684,7 @@ class CParser(Parser):
 
 
     # $ANTLR start macro_statement
-    # C.g:409:1: macro_statement : IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' ;
+    # C.g:410:1: macro_statement : IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' ;
     def macro_statement(self, ):
 
         macro_statement_StartIndex = self.input.index()
@@ -6676,15 +6693,15 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 60):
                     return 
 
-                # C.g:410:2: ( IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' )
-                # C.g:410:4: IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')'
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1874)
+                # C.g:411:2: ( IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' )
+                # C.g:411:4: IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')'
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1875)
                 if self.failed:
                     return 
-                self.match(self.input, 51, self.FOLLOW_51_in_macro_statement1876)
+                self.match(self.input, 51, self.FOLLOW_51_in_macro_statement1877)
                 if self.failed:
                     return 
-                # C.g:410:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )
+                # C.g:411:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )
                 alt67 = 2
                 LA67_0 = self.input.LA(1)
 
@@ -6700,7 +6717,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("410:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 67, 1, self.input)
+                        nvae = NoViableAltException("411:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 67, 1, self.input)
 
                         raise nvae
 
@@ -6711,20 +6728,20 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("410:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 67, 0, self.input)
+                    nvae = NoViableAltException("411:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 67, 0, self.input)
 
                     raise nvae
 
                 if alt67 == 1:
-                    # C.g:410:20: IDENTIFIER
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1879)
+                    # C.g:411:20: IDENTIFIER
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1880)
                     if self.failed:
                         return 
 
 
                 elif alt67 == 2:
-                    # C.g:410:33: ( declaration )* ( statement_list )?
-                    # C.g:410:33: ( declaration )*
+                    # C.g:411:33: ( declaration )* ( statement_list )?
+                    # C.g:411:33: ( declaration )*
                     while True: #loop65
                         alt65 = 2
                         LA65_0 = self.input.LA(1)
@@ -6761,7 +6778,7 @@ class CParser(Parser):
 
                         if alt65 == 1:
                             # C.g:0:0: declaration
-                            self.following.append(self.FOLLOW_declaration_in_macro_statement1883)
+                            self.following.append(self.FOLLOW_declaration_in_macro_statement1884)
                             self.declaration()
                             self.following.pop()
                             if self.failed:
@@ -6772,7 +6789,7 @@ class CParser(Parser):
                             break #loop65
 
 
-                    # C.g:410:47: ( statement_list )?
+                    # C.g:411:47: ( statement_list )?
                     alt66 = 2
                     LA66_0 = self.input.LA(1)
 
@@ -6780,7 +6797,7 @@ class CParser(Parser):
                         alt66 = 1
                     if alt66 == 1:
                         # C.g:0:0: statement_list
-                        self.following.append(self.FOLLOW_statement_list_in_macro_statement1887)
+                        self.following.append(self.FOLLOW_statement_list_in_macro_statement1888)
                         self.statement_list()
                         self.following.pop()
                         if self.failed:
@@ -6791,7 +6808,7 @@ class CParser(Parser):
 
 
 
-                self.match(self.input, 52, self.FOLLOW_52_in_macro_statement1891)
+                self.match(self.input, 52, self.FOLLOW_52_in_macro_statement1892)
                 if self.failed:
                     return 
 
@@