ECC parser add function name position.
authorjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 24 Jan 2008 03:40:48 +0000 (03:40 +0000)
committerjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 24 Jan 2008 03:40:48 +0000 (03:40 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@974 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Ecc/C.g
Source/Python/Ecc/CLexer.py
Source/Python/Ecc/CParser.py
Source/Python/Ecc/CodeFragment.py
Source/Python/Ecc/CodeFragmentCollector.py
Source/Python/Ecc/c.py

index 1a0ccd9..e69038a 100644 (file)
@@ -33,8 +33,8 @@ options {
        Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))\r
        FileProfile.TypedefDefinitionList.append(Tdef)\r
     \r
-    def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset):\r
-       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset))\r
+    def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset, DeclLine, DeclOffset):\r
+       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))\r
        FileProfile.FunctionDefinitionList.append(FuncDef)\r
        \r
     def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
@@ -77,21 +77,27 @@ scope {
   DeclText;\r
   LBLine;\r
   LBOffset;\r
+  DeclLine;\r
+  DeclOffset;\r
 }\r
 @init {\r
   $function_definition::ModifierText = '';\r
   $function_definition::DeclText = '';\r
   $function_definition::LBLine = 0;\r
   $function_definition::LBOffset = 0;\r
+  $function_definition::DeclLine = 0;\r
+  $function_definition::DeclOffset = 0;\r
 }\r
 @after{\r
-  self.StoreFunctionDefinition($function_definition.start.line, $function_definition.start.charPositionInLine, $function_definition.stop.line, $function_definition.stop.charPositionInLine, $function_definition::ModifierText, $function_definition::DeclText, $function_definition::LBLine, $function_definition::LBOffset)\r
+  self.StoreFunctionDefinition($function_definition.start.line, $function_definition.start.charPositionInLine, $function_definition.stop.line, $function_definition.stop.charPositionInLine, $function_definition::ModifierText, $function_definition::DeclText, $function_definition::LBLine, $function_definition::LBOffset, $function_definition::DeclLine, $function_definition::DeclOffset)\r
 }\r
        :       declaration_specifiers? declarator\r
                (       declaration+ a=compound_statement       // K&R style\r
                |       b=compound_statement                            // ANSI style\r
                ) { $function_definition::ModifierText = $declaration_specifiers.text\r
                    $function_definition::DeclText = $declarator.text\r
+                   $function_definition::DeclLine = $declarator.start.line\r
+                   $function_definition::DeclOffset = $declarator.start.charPositionInLine\r
                    if a != None:\r
                      $function_definition::LBLine = $a.start.line\r
                      $function_definition::LBOffset = $a.start.charPositionInLine\r
index 81074c6..a468f81 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2008-01-21 19:57:31
+# $ANTLR 3.0.1 C.g 2008-01-22 14:44:55
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -1965,11 +1965,11 @@ class CLexer(Lexer):
         try:
             self.type = IDENTIFIER
 
-            # C.g:473:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:473:4: LETTER ( LETTER | '0' .. '9' )*
+            # C.g:479:2: ( LETTER ( LETTER | '0' .. '9' )* )
+            # C.g:479:4: LETTER ( LETTER | '0' .. '9' )*
             self.mLETTER()
 
-            # C.g:473:11: ( LETTER | '0' .. '9' )*
+            # C.g:479: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:478:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
+            # C.g:484: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:485:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:485:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            # C.g:491:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            # C.g:491:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
             self.match(u'\'')
 
-            # C.g:485:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:491: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("485:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
+                nvae = NoViableAltException("491:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
 
                 raise nvae
 
             if alt2 == 1:
-                # C.g:485:16: EscapeSequence
+                # C.g:491:16: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt2 == 2:
-                # C.g:485:33: ~ ( '\\'' | '\\\\' )
+                # C.g:491: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:489:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:489:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:489:8: ( 'L' )?
+            # C.g:495:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            # C.g:495:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            # C.g:495:8: ( 'L' )?
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
             if (LA3_0 == u'L') :
                 alt3 = 1
             if alt3 == 1:
-                # C.g:489:9: 'L'
+                # C.g:495:9: 'L'
                 self.match(u'L')
 
 
@@ -2114,7 +2114,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:489:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:495: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:489:21: EscapeSequence
+                    # C.g:495:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt4 == 2:
-                    # C.g:489:38: ~ ( '\\\\' | '\"' )
+                    # C.g:495: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:492:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:492:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            # C.g:498:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            # C.g:498: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:492:29: ( HexDigit )+
+            # C.g:498:29: ( HexDigit )+
             cnt5 = 0
             while True: #loop5
                 alt5 = 2
@@ -2192,7 +2192,7 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:492:29: HexDigit
+                    # C.g:498:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2207,14 +2207,14 @@ class CLexer(Lexer):
                 cnt5 += 1
 
 
-            # C.g:492:39: ( IntegerTypeSuffix )?
+            # C.g:498: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:492:39: IntegerTypeSuffix
+                # C.g:498:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2238,9 +2238,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:494:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:494:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:494:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            # C.g:500:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            # C.g:500:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            # C.g:500: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("494:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
+                nvae = NoViableAltException("500:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
 
                 raise nvae
 
             if alt8 == 1:
-                # C.g:494:20: '0'
+                # C.g:500:20: '0'
                 self.match(u'0')
 
 
 
             elif alt8 == 2:
-                # C.g:494:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:500:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:494:35: ( '0' .. '9' )*
+                # C.g:500: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:494:35: '0' .. '9'
+                        # C.g:500:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2285,14 +2285,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:494:46: ( IntegerTypeSuffix )?
+            # C.g:500: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:494:46: IntegerTypeSuffix
+                # C.g:500:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2316,11 +2316,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:496:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:496:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            # C.g:502:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            # C.g:502:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
-            # C.g:496:21: ( '0' .. '7' )+
+            # C.g:502:21: ( '0' .. '7' )+
             cnt10 = 0
             while True: #loop10
                 alt10 = 2
@@ -2331,7 +2331,7 @@ class CLexer(Lexer):
 
 
                 if alt10 == 1:
-                    # C.g:496:22: '0' .. '7'
+                    # C.g:502:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2346,14 +2346,14 @@ class CLexer(Lexer):
                 cnt10 += 1
 
 
-            # C.g:496:33: ( IntegerTypeSuffix )?
+            # C.g:502: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:496:33: IntegerTypeSuffix
+                # C.g:502:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2375,8 +2375,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:499:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:499:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            # C.g:505:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            # C.g:505: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:503:2: ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? )
+            # C.g:509: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("501:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
+                nvae = NoViableAltException("507:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
 
                 raise nvae
 
             if alt14 == 1:
-                # C.g:503:4: ( 'u' | 'U' )? ( 'l' | 'L' )
-                # C.g:503:4: ( 'u' | 'U' )?
+                # C.g:509:4: ( 'u' | 'U' )? ( 'l' | 'L' )
+                # C.g:509:4: ( 'u' | 'U' )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
@@ -2454,7 +2454,7 @@ class CLexer(Lexer):
 
 
             elif alt14 == 2:
-                # C.g:504:4: ( 'u' | 'U' ) ( 'l' | 'L' )?
+                # C.g:510: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:504:15: ( 'l' | 'L' )?
+                # C.g:510: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:508:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            # C.g:514: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:508:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:508:9: ( '0' .. '9' )+
+                # C.g:514:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:514:9: ( '0' .. '9' )+
                 cnt15 = 0
                 while True: #loop15
                     alt15 = 2
@@ -2517,7 +2517,7 @@ class CLexer(Lexer):
 
 
                     if alt15 == 1:
-                        # C.g:508:10: '0' .. '9'
+                        # C.g:514:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2534,7 +2534,7 @@ class CLexer(Lexer):
 
                 self.match(u'.')
 
-                # C.g:508:25: ( '0' .. '9' )*
+                # C.g:514: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:508:26: '0' .. '9'
+                        # C.g:514:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2553,27 +2553,27 @@ class CLexer(Lexer):
                         break #loop16
 
 
-                # C.g:508:37: ( Exponent )?
+                # C.g:514: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:508:37: Exponent
+                    # C.g:514:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:508:47: ( FloatTypeSuffix )?
+                # C.g:514: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:508:47: FloatTypeSuffix
+                    # C.g:514:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2582,10 +2582,10 @@ class CLexer(Lexer):
 
 
             elif alt26 == 2:
-                # C.g:509:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:515:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:509:13: ( '0' .. '9' )+
+                # C.g:515:13: ( '0' .. '9' )+
                 cnt19 = 0
                 while True: #loop19
                     alt19 = 2
@@ -2596,7 +2596,7 @@ class CLexer(Lexer):
 
 
                     if alt19 == 1:
-                        # C.g:509:14: '0' .. '9'
+                        # C.g:515:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2611,27 +2611,27 @@ class CLexer(Lexer):
                     cnt19 += 1
 
 
-                # C.g:509:25: ( Exponent )?
+                # C.g:515: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:509:25: Exponent
+                    # C.g:515:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:509:35: ( FloatTypeSuffix )?
+                # C.g:515: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:509:35: FloatTypeSuffix
+                    # C.g:515:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2640,8 +2640,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 3:
-                # C.g:510:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:510:9: ( '0' .. '9' )+
+                # C.g:516:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:516:9: ( '0' .. '9' )+
                 cnt22 = 0
                 while True: #loop22
                     alt22 = 2
@@ -2652,7 +2652,7 @@ class CLexer(Lexer):
 
 
                     if alt22 == 1:
-                        # C.g:510:10: '0' .. '9'
+                        # C.g:516:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2669,14 +2669,14 @@ class CLexer(Lexer):
 
                 self.mExponent()
 
-                # C.g:510:30: ( FloatTypeSuffix )?
+                # C.g:516: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:510:30: FloatTypeSuffix
+                    # C.g:516:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2685,8 +2685,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 4:
-                # C.g:511:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:511:9: ( '0' .. '9' )+
+                # C.g:517:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:517:9: ( '0' .. '9' )+
                 cnt24 = 0
                 while True: #loop24
                     alt24 = 2
@@ -2697,7 +2697,7 @@ class CLexer(Lexer):
 
 
                     if alt24 == 1:
-                        # C.g:511:10: '0' .. '9'
+                        # C.g:517:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2712,14 +2712,14 @@ class CLexer(Lexer):
                     cnt24 += 1
 
 
-                # C.g:511:21: ( Exponent )?
+                # C.g:517: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:511:21: Exponent
+                    # C.g:517:21: Exponent
                     self.mExponent()
 
 
@@ -2742,8 +2742,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:515:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:515:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            # C.g:521:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            # C.g:521: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:515:22: ( '+' | '-' )?
+            # C.g:521:22: ( '+' | '-' )?
             alt27 = 2
             LA27_0 = self.input.LA(1)
 
@@ -2773,7 +2773,7 @@ class CLexer(Lexer):
 
 
 
-            # C.g:515:33: ( '0' .. '9' )+
+            # C.g:521:33: ( '0' .. '9' )+
             cnt28 = 0
             while True: #loop28
                 alt28 = 2
@@ -2784,7 +2784,7 @@ class CLexer(Lexer):
 
 
                 if alt28 == 1:
-                    # C.g:515:34: '0' .. '9'
+                    # C.g:521:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
@@ -2815,8 +2815,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:518:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:518:19: ( 'f' | 'F' | 'd' | 'D' )
+            # C.g:524:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            # C.g:524: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:522:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
+            # C.g:528: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("520:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
+                    nvae = NoViableAltException("526:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("520:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
+                nvae = NoViableAltException("526:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
 
                 raise nvae
 
             if alt29 == 1:
-                # C.g:522:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                # C.g:528: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:523:9: OctalEscape
+                # C.g:529:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -2897,7 +2897,7 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:528:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            # C.g:534: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("526:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
+                    nvae = NoViableAltException("532:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("526:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 0, self.input)
+                nvae = NoViableAltException("532: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:528:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:534:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:528:14: ( '0' .. '3' )
-                # C.g:528:15: '0' .. '3'
+                # C.g:534:14: ( '0' .. '3' )
+                # C.g:534:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:528:25: ( '0' .. '7' )
-                # C.g:528:26: '0' .. '7'
+                # C.g:534:25: ( '0' .. '7' )
+                # C.g:534:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:528:36: ( '0' .. '7' )
-                # C.g:528:37: '0' .. '7'
+                # C.g:534:36: ( '0' .. '7' )
+                # C.g:534:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2961,18 +2961,18 @@ class CLexer(Lexer):
 
 
             elif alt30 == 2:
-                # C.g:529:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:535:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:529:14: ( '0' .. '7' )
-                # C.g:529:15: '0' .. '7'
+                # C.g:535:14: ( '0' .. '7' )
+                # C.g:535:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:529:25: ( '0' .. '7' )
-                # C.g:529:26: '0' .. '7'
+                # C.g:535:25: ( '0' .. '7' )
+                # C.g:535:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2981,11 +2981,11 @@ class CLexer(Lexer):
 
 
             elif alt30 == 3:
-                # C.g:530:9: '\\\\' ( '0' .. '7' )
+                # C.g:536:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:530:14: ( '0' .. '7' )
-                # C.g:530:15: '0' .. '7'
+                # C.g:536:14: ( '0' .. '7' )
+                # C.g:536:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3006,8 +3006,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:535:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:535:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            # C.g:541:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            # C.g:541: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:538:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:538:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            # C.g:544:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            # C.g:544: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:546:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:546:7: '\\u0003' .. '\\uFFFE'
+            # C.g:552:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:552:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3092,12 +3092,12 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:549:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:549:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:555:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:555:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:549:14: ( options {greedy=false; } : . )*
+            # C.g:555: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:549:42: .
+                    # C.g:555:42: .
                     self.matchAny()
 
 
@@ -3149,12 +3149,12 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:554:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:554:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:560:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:560:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match("//")
 
 
-            # C.g:554:12: (~ ( '\\n' | '\\r' ) )*
+            # C.g:560: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:554:12: ~ ( '\\n' | '\\r' )
+                    # C.g:560: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:554:26: ( '\\r' )?
+            # C.g:560:26: ( '\\r' )?
             alt33 = 2
             LA33_0 = self.input.LA(1)
 
             if (LA33_0 == u'\r') :
                 alt33 = 1
             if alt33 == 1:
-                # C.g:554:26: '\\r'
+                # C.g:560:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3216,11 +3216,11 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:559:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:559:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:565:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:565:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match(u'#')
 
-            # C.g:559:11: (~ ( '\\n' | '\\r' ) )*
+            # C.g:565: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:559:11: ~ ( '\\n' | '\\r' )
+                    # C.g:565: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:559:25: ( '\\r' )?
+            # C.g:565:25: ( '\\r' )?
             alt35 = 2
             LA35_0 = self.input.LA(1)
 
             if (LA35_0 == u'\r') :
                 alt35 = 1
             if alt35 == 1:
-                # C.g:559:25: '\\r'
+                # C.g:565:25: '\\r'
                 self.match(u'\r')
 
 
index 7243cd9..6568d66 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2008-01-21 19:57:30
+# $ANTLR 3.0.1 C.g 2008-01-22 14:44:54
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -60,6 +60,8 @@ class function_definition_scope(object):
         self.DeclText = None
         self.LBLine = None
         self.LBOffset = None
+        self.DeclLine = None
+        self.DeclOffset = None
 
 
 class CParser(Parser):
@@ -98,8 +100,8 @@ class CParser(Parser):
        Tdef = CodeFragment.TypedefDefinition(FromText, ToText, (StartLine, StartOffset), (EndLine, EndOffset))\r
        FileProfile.TypedefDefinitionList.append(Tdef)\r
     \r
-    def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset):\r
-       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset))\r
+    def StoreFunctionDefinition(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText, LeftBraceLine, LeftBraceOffset, DeclLine, DeclOffset):\r
+       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset), (LeftBraceLine, LeftBraceOffset), (DeclLine, DeclOffset))\r
        FileProfile.FunctionDefinitionList.append(FuncDef)\r
        \r
     def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
@@ -514,15 +516,17 @@ class CParser(Parser):
         self.function_definition_stack[-1].DeclText =  ''\r
         self.function_definition_stack[-1].LBLine =  0\r
         self.function_definition_stack[-1].LBOffset =  0\r
+        self.function_definition_stack[-1].DeclLine =  0\r
+        self.function_definition_stack[-1].DeclOffset =  0\r
 
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 3):
                     return retval
 
-                # C.g:90:2: ( ( declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) )
-                # C.g:90:4: ( declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement )
-                # C.g:90:4: ( declaration_specifiers )?
+                # C.g:94:2: ( ( declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) )
+                # C.g:94:4: ( declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement )
+                # C.g:94:4: ( declaration_specifiers )?
                 alt4 = 2
                 LA4_0 = self.input.LA(1)
 
@@ -622,7 +626,7 @@ class CParser(Parser):
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:91:3: ( ( declaration )+ a= compound_statement | b= compound_statement )
+                # C.g:95:3: ( ( declaration )+ a= compound_statement | b= compound_statement )
                 alt6 = 2
                 LA6_0 = self.input.LA(1)
 
@@ -635,13 +639,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("91:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)
+                    nvae = NoViableAltException("95:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)
 
                     raise nvae
 
                 if alt6 == 1:
-                    # C.g:91:5: ( declaration )+ a= compound_statement
-                    # C.g:91:5: ( declaration )+
+                    # C.g:95:5: ( declaration )+ a= compound_statement
+                    # C.g:95:5: ( declaration )+
                     cnt5 = 0
                     while True: #loop5
                         alt5 = 2
@@ -682,7 +686,7 @@ class CParser(Parser):
 
 
                 elif alt6 == 2:
-                    # C.g:92:5: b= compound_statement
+                    # C.g:96:5: b= compound_statement
                     self.following.append(self.FOLLOW_compound_statement_in_function_definition168)
                     b = self.compound_statement()
                     self.following.pop()
@@ -694,6 +698,8 @@ class CParser(Parser):
                 if self.backtracking == 0:
                     self.function_definition_stack[-1].ModifierText = self.input.toString(declaration_specifiers1.start,declaration_specifiers1.stop)\r
                     self.function_definition_stack[-1].DeclText = self.input.toString(declarator2.start,declarator2.stop)\r
+                    self.function_definition_stack[-1].DeclLine = declarator2.start.line\r
+                    self.function_definition_stack[-1].DeclOffset = declarator2.start.charPositionInLine\r
                     if a != None:\r
                       self.function_definition_stack[-1].LBLine = a.start.line\r
                       self.function_definition_stack[-1].LBOffset = a.start.charPositionInLine\r
@@ -709,7 +715,7 @@ class CParser(Parser):
 
                 if self.backtracking == 0:
                            \r
-                    self.StoreFunctionDefinition(retval.start.line, retval.start.charPositionInLine, retval.stop.line, retval.stop.charPositionInLine, self.function_definition_stack[-1].ModifierText, self.function_definition_stack[-1].DeclText, self.function_definition_stack[-1].LBLine, self.function_definition_stack[-1].LBOffset)\r
+                    self.StoreFunctionDefinition(retval.start.line, retval.start.charPositionInLine, retval.stop.line, retval.stop.charPositionInLine, self.function_definition_stack[-1].ModifierText, self.function_definition_stack[-1].DeclText, self.function_definition_stack[-1].LBLine, self.function_definition_stack[-1].LBOffset, self.function_definition_stack[-1].DeclLine, self.function_definition_stack[-1].DeclOffset)\r
 
 
 
@@ -729,7 +735,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration
-    # C.g:104:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );
+    # C.g:110:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );
     def declaration(self, ):
 
         declaration_StartIndex = self.input.index()
@@ -750,7 +756,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 4):
                     return 
 
-                # C.g:105:2: (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' )
+                # C.g:111:2: (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' )
                 alt9 = 2
                 LA9_0 = self.input.LA(1)
 
@@ -763,17 +769,17 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("104:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );", 9, 0, self.input)
+                    nvae = NoViableAltException("110:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );", 9, 0, self.input)
 
                     raise nvae
 
                 if alt9 == 1:
-                    # C.g:105:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'
+                    # C.g:111:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'
                     a = self.input.LT(1)
                     self.match(self.input, 25, self.FOLLOW_25_in_declaration191)
                     if self.failed:
                         return 
-                    # C.g:105:17: (b= declaration_specifiers )?
+                    # C.g:111:17: (b= declaration_specifiers )?
                     alt7 = 2
                     LA7_0 = self.input.LA(1)
 
@@ -819,13 +825,13 @@ class CParser(Parser):
 
 
                 elif alt9 == 2:
-                    # C.g:113:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'
+                    # C.g:119:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'
                     self.following.append(self.FOLLOW_declaration_specifiers_in_declaration222)
                     s = self.declaration_specifiers()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:113:30: (t= init_declarator_list )?
+                    # C.g:119:30: (t= init_declarator_list )?
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
 
@@ -872,7 +878,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration_specifiers
-    # C.g:117:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
+    # C.g:123:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
     def declaration_specifiers(self, ):
 
         retval = self.declaration_specifiers_return()
@@ -883,9 +889,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 5):
                     return retval
 
-                # C.g:118:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
-                # C.g:118:6: ( storage_class_specifier | type_specifier | type_qualifier )+
-                # C.g:118:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:124:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
+                # C.g:124:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:124:6: ( storage_class_specifier | type_specifier | type_qualifier )+
                 cnt10 = 0
                 while True: #loop10
                     alt10 = 4
@@ -905,7 +911,7 @@ class CParser(Parser):
                         alt10 = 3
 
                     if alt10 == 1:
-                        # C.g:118:10: storage_class_specifier
+                        # C.g:124:10: storage_class_specifier
                         self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers252)
                         self.storage_class_specifier()
                         self.following.pop()
@@ -914,7 +920,7 @@ class CParser(Parser):
 
 
                     elif alt10 == 2:
-                        # C.g:119:7: type_specifier
+                        # C.g:125:7: type_specifier
                         self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers260)
                         self.type_specifier()
                         self.following.pop()
@@ -923,7 +929,7 @@ class CParser(Parser):
 
 
                     elif alt10 == 3:
-                        # C.g:120:13: type_qualifier
+                        # C.g:126:13: type_qualifier
                         self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers274)
                         self.type_qualifier()
                         self.following.pop()
@@ -972,7 +978,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator_list
-    # C.g:124:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
+    # C.g:130:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
     def init_declarator_list(self, ):
 
         retval = self.init_declarator_list_return()
@@ -983,14 +989,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 6):
                     return retval
 
-                # C.g:125:2: ( init_declarator ( ',' init_declarator )* )
-                # C.g:125:4: init_declarator ( ',' init_declarator )*
+                # C.g:131:2: ( init_declarator ( ',' init_declarator )* )
+                # C.g:131:4: init_declarator ( ',' init_declarator )*
                 self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list296)
                 self.init_declarator()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:125:20: ( ',' init_declarator )*
+                # C.g:131:20: ( ',' init_declarator )*
                 while True: #loop11
                     alt11 = 2
                     LA11_0 = self.input.LA(1)
@@ -1000,7 +1006,7 @@ class CParser(Parser):
 
 
                     if alt11 == 1:
-                        # C.g:125:21: ',' init_declarator
+                        # C.g:131:21: ',' init_declarator
                         self.match(self.input, 26, self.FOLLOW_26_in_init_declarator_list299)
                         if self.failed:
                             return retval
@@ -1036,7 +1042,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator
-    # C.g:128:1: init_declarator : declarator ( '=' initializer )? ;
+    # C.g:134:1: init_declarator : declarator ( '=' initializer )? ;
     def init_declarator(self, ):
 
         init_declarator_StartIndex = self.input.index()
@@ -1045,21 +1051,21 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 7):
                     return 
 
-                # C.g:129:2: ( declarator ( '=' initializer )? )
-                # C.g:129:4: declarator ( '=' initializer )?
+                # C.g:135:2: ( declarator ( '=' initializer )? )
+                # C.g:135:4: declarator ( '=' initializer )?
                 self.following.append(self.FOLLOW_declarator_in_init_declarator314)
                 self.declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:129:15: ( '=' initializer )?
+                # C.g:135:15: ( '=' initializer )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
                 if (LA12_0 == 27) :
                     alt12 = 1
                 if alt12 == 1:
-                    # C.g:129:16: '=' initializer
+                    # C.g:135:16: '=' initializer
                     self.match(self.input, 27, self.FOLLOW_27_in_init_declarator317)
                     if self.failed:
                         return 
@@ -1090,7 +1096,7 @@ class CParser(Parser):
 
 
     # $ANTLR start storage_class_specifier
-    # C.g:132:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
+    # C.g:138:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
     def storage_class_specifier(self, ):
 
         storage_class_specifier_StartIndex = self.input.index()
@@ -1099,7 +1105,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 8):
                     return 
 
-                # C.g:133:2: ( 'extern' | 'static' | 'auto' | 'register' )
+                # C.g:139:2: ( 'extern' | 'static' | 'auto' | 'register' )
                 # C.g:
                 if (28 <= self.input.LA(1) <= 31):
                     self.input.consume();
@@ -1137,7 +1143,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_specifier
-    # C.g:139:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id );
+    # C.g:145:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id );
     def type_specifier(self, ):
 
         type_specifier_StartIndex = self.input.index()
@@ -1151,7 +1157,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):
                     return 
 
-                # C.g:140:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id )
+                # C.g:146:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id )
                 alt13 = 12
                 LA13_0 = self.input.LA(1)
 
@@ -1184,75 +1190,75 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("139:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id );", 13, 0, self.input)
+                    nvae = NoViableAltException("145:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id );", 13, 0, self.input)
 
                     raise nvae
 
                 if alt13 == 1:
-                    # C.g:140:4: 'void'
+                    # C.g:146:4: 'void'
                     self.match(self.input, 32, self.FOLLOW_32_in_type_specifier359)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 2:
-                    # C.g:141:4: 'char'
+                    # C.g:147:4: 'char'
                     self.match(self.input, 33, self.FOLLOW_33_in_type_specifier364)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 3:
-                    # C.g:142:4: 'short'
+                    # C.g:148:4: 'short'
                     self.match(self.input, 34, self.FOLLOW_34_in_type_specifier369)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 4:
-                    # C.g:143:4: 'int'
+                    # C.g:149:4: 'int'
                     self.match(self.input, 35, self.FOLLOW_35_in_type_specifier374)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 5:
-                    # C.g:144:4: 'long'
+                    # C.g:150:4: 'long'
                     self.match(self.input, 36, self.FOLLOW_36_in_type_specifier379)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 6:
-                    # C.g:145:4: 'float'
+                    # C.g:151:4: 'float'
                     self.match(self.input, 37, self.FOLLOW_37_in_type_specifier384)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 7:
-                    # C.g:146:4: 'double'
+                    # C.g:152:4: 'double'
                     self.match(self.input, 38, self.FOLLOW_38_in_type_specifier389)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 8:
-                    # C.g:147:4: 'signed'
+                    # C.g:153:4: 'signed'
                     self.match(self.input, 39, self.FOLLOW_39_in_type_specifier394)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 9:
-                    # C.g:148:4: 'unsigned'
+                    # C.g:154:4: 'unsigned'
                     self.match(self.input, 40, self.FOLLOW_40_in_type_specifier399)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 10:
-                    # C.g:149:4: s= struct_or_union_specifier
+                    # C.g:155:4: s= struct_or_union_specifier
                     self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier406)
                     s = self.struct_or_union_specifier()
                     self.following.pop()
@@ -1264,7 +1270,7 @@ class CParser(Parser):
 
 
                 elif alt13 == 11:
-                    # C.g:150:4: e= enum_specifier
+                    # C.g:156:4: e= enum_specifier
                     self.following.append(self.FOLLOW_enum_specifier_in_type_specifier415)
                     e = self.enum_specifier()
                     self.following.pop()
@@ -1276,7 +1282,7 @@ class CParser(Parser):
 
 
                 elif alt13 == 12:
-                    # C.g:151:4: ( IDENTIFIER declarator )=> type_id
+                    # C.g:157:4: ( IDENTIFIER declarator )=> type_id
                     self.following.append(self.FOLLOW_type_id_in_type_specifier429)
                     self.type_id()
                     self.following.pop()
@@ -1300,7 +1306,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_id
-    # C.g:154:1: type_id : IDENTIFIER ;
+    # C.g:160:1: type_id : IDENTIFIER ;
     def type_id(self, ):
 
         type_id_StartIndex = self.input.index()
@@ -1309,8 +1315,8 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):
                     return 
 
-                # C.g:155:5: ( IDENTIFIER )
-                # C.g:155:9: IDENTIFIER
+                # C.g:161:5: ( IDENTIFIER )
+                # C.g:161:9: IDENTIFIER
                 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id445)
                 if self.failed:
                     return 
@@ -1339,7 +1345,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union_specifier
-    # C.g:159:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
+    # C.g:165:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
     def struct_or_union_specifier(self, ):
 
         retval = self.struct_or_union_specifier_return()
@@ -1350,7 +1356,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):
                     return retval
 
-                # C.g:161:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
+                # C.g:167:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
                 alt15 = 2
                 LA15_0 = self.input.LA(1)
 
@@ -1369,7 +1375,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("159:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 2, self.input)
+                            nvae = NoViableAltException("165:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 2, self.input)
 
                             raise nvae
 
@@ -1380,7 +1386,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("159:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 1, self.input)
+                        nvae = NoViableAltException("165:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 1, self.input)
 
                         raise nvae
 
@@ -1389,18 +1395,18 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("159:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 0, self.input)
+                    nvae = NoViableAltException("165:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );", 15, 0, self.input)
 
                     raise nvae
 
                 if alt15 == 1:
-                    # C.g:161:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
+                    # C.g:167:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
                     self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier473)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    # C.g:161:20: ( IDENTIFIER )?
+                    # C.g:167:20: ( IDENTIFIER )?
                     alt14 = 2
                     LA14_0 = self.input.LA(1)
 
@@ -1428,7 +1434,7 @@ class CParser(Parser):
 
 
                 elif alt15 == 2:
-                    # C.g:162:4: struct_or_union IDENTIFIER
+                    # C.g:168:4: struct_or_union IDENTIFIER
                     self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier487)
                     self.struct_or_union()
                     self.following.pop()
@@ -1457,7 +1463,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union
-    # C.g:165:1: struct_or_union : ( 'struct' | 'union' );
+    # C.g:171:1: struct_or_union : ( 'struct' | 'union' );
     def struct_or_union(self, ):
 
         struct_or_union_StartIndex = self.input.index()
@@ -1466,7 +1472,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):
                     return 
 
-                # C.g:166:2: ( 'struct' | 'union' )
+                # C.g:172:2: ( 'struct' | 'union' )
                 # C.g:
                 if (43 <= self.input.LA(1) <= 44):
                     self.input.consume();
@@ -1504,7 +1510,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration_list
-    # C.g:170:1: struct_declaration_list : ( struct_declaration )+ ;
+    # C.g:176:1: struct_declaration_list : ( struct_declaration )+ ;
     def struct_declaration_list(self, ):
 
         struct_declaration_list_StartIndex = self.input.index()
@@ -1513,9 +1519,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):
                     return 
 
-                # C.g:171:2: ( ( struct_declaration )+ )
-                # C.g:171:4: ( struct_declaration )+
-                # C.g:171:4: ( struct_declaration )+
+                # C.g:177:2: ( ( struct_declaration )+ )
+                # C.g:177:4: ( struct_declaration )+
+                # C.g:177:4: ( struct_declaration )+
                 cnt16 = 0
                 while True: #loop16
                     alt16 = 2
@@ -1567,7 +1573,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration
-    # C.g:174:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
+    # C.g:180:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
     def struct_declaration(self, ):
 
         struct_declaration_StartIndex = self.input.index()
@@ -1576,8 +1582,8 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):
                     return 
 
-                # C.g:175:2: ( specifier_qualifier_list struct_declarator_list ';' )
-                # C.g:175:4: specifier_qualifier_list struct_declarator_list ';'
+                # C.g:181:2: ( specifier_qualifier_list struct_declarator_list ';' )
+                # C.g:181:4: specifier_qualifier_list struct_declarator_list ';'
                 self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration528)
                 self.specifier_qualifier_list()
                 self.following.pop()
@@ -1610,7 +1616,7 @@ class CParser(Parser):
 
 
     # $ANTLR start specifier_qualifier_list
-    # C.g:178:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
+    # C.g:184:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
     def specifier_qualifier_list(self, ):
 
         specifier_qualifier_list_StartIndex = self.input.index()
@@ -1619,9 +1625,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):
                     return 
 
-                # C.g:179:2: ( ( type_qualifier | type_specifier )+ )
-                # C.g:179:4: ( type_qualifier | type_specifier )+
-                # C.g:179:4: ( type_qualifier | type_specifier )+
+                # C.g:185:2: ( ( type_qualifier | type_specifier )+ )
+                # C.g:185:4: ( type_qualifier | type_specifier )+
+                # C.g:185:4: ( type_qualifier | type_specifier )+
                 cnt17 = 0
                 while True: #loop17
                     alt17 = 3
@@ -1658,7 +1664,7 @@ class CParser(Parser):
                         alt17 = 2
 
                     if alt17 == 1:
-                        # C.g:179:6: type_qualifier
+                        # C.g:185:6: type_qualifier
                         self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list545)
                         self.type_qualifier()
                         self.following.pop()
@@ -1667,7 +1673,7 @@ class CParser(Parser):
 
 
                     elif alt17 == 2:
-                        # C.g:179:23: type_specifier
+                        # C.g:185:23: type_specifier
                         self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list549)
                         self.type_specifier()
                         self.following.pop()
@@ -1708,7 +1714,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator_list
-    # C.g:182:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
+    # C.g:188:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
     def struct_declarator_list(self, ):
 
         struct_declarator_list_StartIndex = self.input.index()
@@ -1717,14 +1723,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):
                     return 
 
-                # C.g:183:2: ( struct_declarator ( ',' struct_declarator )* )
-                # C.g:183:4: struct_declarator ( ',' struct_declarator )*
+                # C.g:189:2: ( struct_declarator ( ',' struct_declarator )* )
+                # C.g:189:4: struct_declarator ( ',' struct_declarator )*
                 self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list563)
                 self.struct_declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:183:22: ( ',' struct_declarator )*
+                # C.g:189:22: ( ',' struct_declarator )*
                 while True: #loop18
                     alt18 = 2
                     LA18_0 = self.input.LA(1)
@@ -1734,7 +1740,7 @@ class CParser(Parser):
 
 
                     if alt18 == 1:
-                        # C.g:183:23: ',' struct_declarator
+                        # C.g:189:23: ',' struct_declarator
                         self.match(self.input, 26, self.FOLLOW_26_in_struct_declarator_list566)
                         if self.failed:
                             return 
@@ -1768,7 +1774,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator
-    # C.g:186:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
+    # C.g:192:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
     def struct_declarator(self, ):
 
         struct_declarator_StartIndex = self.input.index()
@@ -1777,7 +1783,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):
                     return 
 
-                # C.g:187:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
+                # C.g:193:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
@@ -1790,25 +1796,25 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("186:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
+                    nvae = NoViableAltException("192:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
 
                     raise nvae
 
                 if alt20 == 1:
-                    # C.g:187:4: declarator ( ':' constant_expression )?
+                    # C.g:193:4: declarator ( ':' constant_expression )?
                     self.following.append(self.FOLLOW_declarator_in_struct_declarator581)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:187:15: ( ':' constant_expression )?
+                    # C.g:193:15: ( ':' constant_expression )?
                     alt19 = 2
                     LA19_0 = self.input.LA(1)
 
                     if (LA19_0 == 45) :
                         alt19 = 1
                     if alt19 == 1:
-                        # C.g:187:16: ':' constant_expression
+                        # C.g:193:16: ':' constant_expression
                         self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator584)
                         if self.failed:
                             return 
@@ -1823,7 +1829,7 @@ class CParser(Parser):
 
 
                 elif alt20 == 2:
-                    # C.g:188:4: ':' constant_expression
+                    # C.g:194:4: ':' constant_expression
                     self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator593)
                     if self.failed:
                         return 
@@ -1856,7 +1862,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enum_specifier
-    # C.g:191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
+    # C.g:197:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
     def enum_specifier(self, ):
 
         retval = self.enum_specifier_return()
@@ -1867,7 +1873,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):
                     return retval
 
-                # C.g:193:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
+                # C.g:199:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
                 alt21 = 3
                 LA21_0 = self.input.LA(1)
 
@@ -1886,7 +1892,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 2, self.input)
+                            nvae = NoViableAltException("197:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 2, self.input)
 
                             raise nvae
 
@@ -1897,7 +1903,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 1, self.input)
+                        nvae = NoViableAltException("197:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 1, self.input)
 
                         raise nvae
 
@@ -1906,12 +1912,12 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 0, self.input)
+                    nvae = NoViableAltException("197:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 0, self.input)
 
                     raise nvae
 
                 if alt21 == 1:
-                    # C.g:193:4: 'enum' '{' enumerator_list '}'
+                    # C.g:199:4: 'enum' '{' enumerator_list '}'
                     self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier613)
                     if self.failed:
                         return retval
@@ -1929,7 +1935,7 @@ class CParser(Parser):
 
 
                 elif alt21 == 2:
-                    # C.g:194:4: 'enum' IDENTIFIER '{' enumerator_list '}'
+                    # C.g:200:4: 'enum' IDENTIFIER '{' enumerator_list '}'
                     self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier624)
                     if self.failed:
                         return retval
@@ -1950,7 +1956,7 @@ class CParser(Parser):
 
 
                 elif alt21 == 3:
-                    # C.g:195:4: 'enum' IDENTIFIER
+                    # C.g:201:4: 'enum' IDENTIFIER
                     self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier637)
                     if self.failed:
                         return retval
@@ -1977,7 +1983,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator_list
-    # C.g:198:1: enumerator_list : enumerator ( ',' enumerator )* ;
+    # C.g:204:1: enumerator_list : enumerator ( ',' enumerator )* ;
     def enumerator_list(self, ):
 
         enumerator_list_StartIndex = self.input.index()
@@ -1986,14 +1992,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):
                     return 
 
-                # C.g:199:2: ( enumerator ( ',' enumerator )* )
-                # C.g:199:4: enumerator ( ',' enumerator )*
+                # C.g:205:2: ( enumerator ( ',' enumerator )* )
+                # C.g:205:4: enumerator ( ',' enumerator )*
                 self.following.append(self.FOLLOW_enumerator_in_enumerator_list650)
                 self.enumerator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:199:15: ( ',' enumerator )*
+                # C.g:205:15: ( ',' enumerator )*
                 while True: #loop22
                     alt22 = 2
                     LA22_0 = self.input.LA(1)
@@ -2003,7 +2009,7 @@ class CParser(Parser):
 
 
                     if alt22 == 1:
-                        # C.g:199:16: ',' enumerator
+                        # C.g:205:16: ',' enumerator
                         self.match(self.input, 26, self.FOLLOW_26_in_enumerator_list653)
                         if self.failed:
                             return 
@@ -2037,7 +2043,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator
-    # C.g:202:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
+    # C.g:208:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
     def enumerator(self, ):
 
         enumerator_StartIndex = self.input.index()
@@ -2046,19 +2052,19 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):
                     return 
 
-                # C.g:203:2: ( IDENTIFIER ( '=' constant_expression )? )
-                # C.g:203:4: IDENTIFIER ( '=' constant_expression )?
+                # C.g:209:2: ( IDENTIFIER ( '=' constant_expression )? )
+                # C.g:209:4: IDENTIFIER ( '=' constant_expression )?
                 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator668)
                 if self.failed:
                     return 
-                # C.g:203:15: ( '=' constant_expression )?
+                # C.g:209:15: ( '=' constant_expression )?
                 alt23 = 2
                 LA23_0 = self.input.LA(1)
 
                 if (LA23_0 == 27) :
                     alt23 = 1
                 if alt23 == 1:
-                    # C.g:203:16: '=' constant_expression
+                    # C.g:209:16: '=' constant_expression
                     self.match(self.input, 27, self.FOLLOW_27_in_enumerator671)
                     if self.failed:
                         return 
@@ -2089,7 +2095,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_qualifier
-    # C.g:206:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
+    # C.g:212:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
     def type_qualifier(self, ):
 
         type_qualifier_StartIndex = self.input.index()
@@ -2098,7 +2104,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):
                     return 
 
-                # C.g:207:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
+                # C.g:213:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
                 # C.g:
                 if (47 <= self.input.LA(1) <= 50):
                     self.input.consume();
@@ -2142,7 +2148,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator
-    # C.g:213:1: declarator : ( ( pointer )? direct_declarator | pointer );
+    # C.g:219:1: declarator : ( ( pointer )? direct_declarator | pointer );
     def declarator(self, ):
 
         retval = self.declarator_return()
@@ -2153,7 +2159,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):
                     return retval
 
-                # C.g:214:2: ( ( pointer )? direct_declarator | pointer )
+                # C.g:220:2: ( ( pointer )? direct_declarator | pointer )
                 alt25 = 2
                 LA25_0 = self.input.LA(1)
 
@@ -2169,7 +2175,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("213:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 1, self.input)
+                        nvae = NoViableAltException("219:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 1, self.input)
 
                         raise nvae
 
@@ -2180,13 +2186,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("213:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 0, self.input)
+                    nvae = NoViableAltException("219:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 0, self.input)
 
                     raise nvae
 
                 if alt25 == 1:
-                    # C.g:214:4: ( pointer )? direct_declarator
-                    # C.g:214:4: ( pointer )?
+                    # C.g:220:4: ( pointer )? direct_declarator
+                    # C.g:220:4: ( pointer )?
                     alt24 = 2
                     LA24_0 = self.input.LA(1)
 
@@ -2210,7 +2216,7 @@ class CParser(Parser):
 
 
                 elif alt25 == 2:
-                    # C.g:215:4: pointer
+                    # C.g:221:4: pointer
                     self.following.append(self.FOLLOW_pointer_in_declarator720)
                     self.pointer()
                     self.following.pop()
@@ -2236,7 +2242,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_declarator
-    # C.g:218:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
+    # C.g:224:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
     def direct_declarator(self, ):
 
         direct_declarator_StartIndex = self.input.index()
@@ -2245,7 +2251,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
                     return 
 
-                # C.g:219:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
+                # C.g:225:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
                 alt28 = 2
                 LA28_0 = self.input.LA(1)
 
@@ -2258,16 +2264,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("218:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 28, 0, self.input)
+                    nvae = NoViableAltException("224:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 28, 0, self.input)
 
                     raise nvae
 
                 if alt28 == 1:
-                    # C.g:219:4: IDENTIFIER ( declarator_suffix )*
+                    # C.g:225:4: IDENTIFIER ( declarator_suffix )*
                     self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator731)
                     if self.failed:
                         return 
-                    # C.g:219:15: ( declarator_suffix )*
+                    # C.g:225:15: ( declarator_suffix )*
                     while True: #loop26
                         alt26 = 2
                         LA26_0 = self.input.LA(1)
@@ -2457,7 +2463,7 @@ class CParser(Parser):
 
 
                 elif alt28 == 2:
-                    # C.g:220:4: '(' declarator ')' ( declarator_suffix )+
+                    # C.g:226:4: '(' declarator ')' ( declarator_suffix )+
                     self.match(self.input, 51, self.FOLLOW_51_in_direct_declarator739)
                     if self.failed:
                         return 
@@ -2469,7 +2475,7 @@ class CParser(Parser):
                     self.match(self.input, 52, self.FOLLOW_52_in_direct_declarator743)
                     if self.failed:
                         return 
-                    # C.g:220:23: ( declarator_suffix )+
+                    # C.g:226:23: ( declarator_suffix )+
                     cnt27 = 0
                     while True: #loop27
                         alt27 = 2
@@ -2685,7 +2691,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator_suffix
-    # C.g:223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
+    # C.g:229:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
     def declarator_suffix(self, ):
 
         declarator_suffix_StartIndex = self.input.index()
@@ -2694,7 +2700,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 24):
                     return 
 
-                # C.g:224:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
+                # C.g:230:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
                 alt29 = 5
                 LA29_0 = self.input.LA(1)
 
@@ -2710,7 +2716,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 1, self.input)
+                        nvae = NoViableAltException("229:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 1, self.input)
 
                         raise nvae
 
@@ -2730,7 +2736,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 12, self.input)
+                            nvae = NoViableAltException("229:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 12, self.input)
 
                             raise nvae
 
@@ -2741,7 +2747,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 2, self.input)
+                        nvae = NoViableAltException("229:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 2, self.input)
 
                         raise nvae
 
@@ -2750,12 +2756,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 0, self.input)
+                    nvae = NoViableAltException("229:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 0, self.input)
 
                     raise nvae
 
                 if alt29 == 1:
-                    # C.g:224:6: '[' constant_expression ']'
+                    # C.g:230:6: '[' constant_expression ']'
                     self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix759)
                     if self.failed:
                         return 
@@ -2770,7 +2776,7 @@ class CParser(Parser):
 
 
                 elif alt29 == 2:
-                    # C.g:225:9: '[' ']'
+                    # C.g:231:9: '[' ']'
                     self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix773)
                     if self.failed:
                         return 
@@ -2780,7 +2786,7 @@ class CParser(Parser):
 
 
                 elif alt29 == 3:
-                    # C.g:226:9: '(' parameter_type_list ')'
+                    # C.g:232:9: '(' parameter_type_list ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix785)
                     if self.failed:
                         return 
@@ -2795,7 +2801,7 @@ class CParser(Parser):
 
 
                 elif alt29 == 4:
-                    # C.g:227:9: '(' identifier_list ')'
+                    # C.g:233:9: '(' identifier_list ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix799)
                     if self.failed:
                         return 
@@ -2810,7 +2816,7 @@ class CParser(Parser):
 
 
                 elif alt29 == 5:
-                    # C.g:228:9: '(' ')'
+                    # C.g:234:9: '(' ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix813)
                     if self.failed:
                         return 
@@ -2835,7 +2841,7 @@ class CParser(Parser):
 
 
     # $ANTLR start pointer
-    # C.g:231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
+    # C.g:237:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
     def pointer(self, ):
 
         pointer_StartIndex = self.input.index()
@@ -2844,7 +2850,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 25):
                     return 
 
-                # C.g:232:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
+                # C.g:238:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
                 alt32 = 3
                 LA32_0 = self.input.LA(1)
 
@@ -2862,7 +2868,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 2, self.input)
+                            nvae = NoViableAltException("237:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 2, self.input)
 
                             raise nvae
 
@@ -2880,7 +2886,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 18, self.input)
+                            nvae = NoViableAltException("237:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 18, self.input)
 
                             raise nvae
 
@@ -2889,7 +2895,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 1, self.input)
+                        nvae = NoViableAltException("237:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 1, self.input)
 
                         raise nvae
 
@@ -2898,16 +2904,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 0, self.input)
+                    nvae = NoViableAltException("237:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 0, self.input)
 
                     raise nvae
 
                 if alt32 == 1:
-                    # C.g:232:4: '*' ( type_qualifier )+ ( pointer )?
+                    # C.g:238:4: '*' ( type_qualifier )+ ( pointer )?
                     self.match(self.input, 55, self.FOLLOW_55_in_pointer826)
                     if self.failed:
                         return 
-                    # C.g:232:8: ( type_qualifier )+
+                    # C.g:238:8: ( type_qualifier )+
                     cnt30 = 0
                     while True: #loop30
                         alt30 = 2
@@ -2945,7 +2951,7 @@ class CParser(Parser):
                         cnt30 += 1
 
 
-                    # C.g:232:24: ( pointer )?
+                    # C.g:238:24: ( pointer )?
                     alt31 = 2
                     LA31_0 = self.input.LA(1)
 
@@ -2967,7 +2973,7 @@ class CParser(Parser):
 
 
                 elif alt32 == 2:
-                    # C.g:233:4: '*' pointer
+                    # C.g:239:4: '*' pointer
                     self.match(self.input, 55, self.FOLLOW_55_in_pointer837)
                     if self.failed:
                         return 
@@ -2979,7 +2985,7 @@ class CParser(Parser):
 
 
                 elif alt32 == 3:
-                    # C.g:234:4: '*'
+                    # C.g:240:4: '*'
                     self.match(self.input, 55, self.FOLLOW_55_in_pointer844)
                     if self.failed:
                         return 
@@ -3001,7 +3007,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_type_list
-    # C.g:237:1: parameter_type_list : parameter_list ( ',' '...' )? ;
+    # C.g:243:1: parameter_type_list : parameter_list ( ',' '...' )? ;
     def parameter_type_list(self, ):
 
         parameter_type_list_StartIndex = self.input.index()
@@ -3010,21 +3016,21 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 26):
                     return 
 
-                # C.g:238:2: ( parameter_list ( ',' '...' )? )
-                # C.g:238:4: parameter_list ( ',' '...' )?
+                # C.g:244:2: ( parameter_list ( ',' '...' )? )
+                # C.g:244:4: parameter_list ( ',' '...' )?
                 self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list855)
                 self.parameter_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:238:19: ( ',' '...' )?
+                # C.g:244:19: ( ',' '...' )?
                 alt33 = 2
                 LA33_0 = self.input.LA(1)
 
                 if (LA33_0 == 26) :
                     alt33 = 1
                 if alt33 == 1:
-                    # C.g:238:20: ',' '...'
+                    # C.g:244:20: ',' '...'
                     self.match(self.input, 26, self.FOLLOW_26_in_parameter_type_list858)
                     if self.failed:
                         return 
@@ -3053,7 +3059,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_list
-    # C.g:241:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
+    # C.g:247:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
     def parameter_list(self, ):
 
         parameter_list_StartIndex = self.input.index()
@@ -3062,14 +3068,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 27):
                     return 
 
-                # C.g:242:2: ( parameter_declaration ( ',' parameter_declaration )* )
-                # C.g:242:4: parameter_declaration ( ',' parameter_declaration )*
+                # C.g:248:2: ( parameter_declaration ( ',' parameter_declaration )* )
+                # C.g:248:4: parameter_declaration ( ',' parameter_declaration )*
                 self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list873)
                 self.parameter_declaration()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:242:26: ( ',' parameter_declaration )*
+                # C.g:248:26: ( ',' parameter_declaration )*
                 while True: #loop34
                     alt34 = 2
                     LA34_0 = self.input.LA(1)
@@ -3084,7 +3090,7 @@ class CParser(Parser):
 
 
                     if alt34 == 1:
-                        # C.g:242:27: ',' parameter_declaration
+                        # C.g:248:27: ',' parameter_declaration
                         self.match(self.input, 26, self.FOLLOW_26_in_parameter_list876)
                         if self.failed:
                             return 
@@ -3118,7 +3124,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_declaration
-    # C.g:245:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
+    # C.g:251:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
     def parameter_declaration(self, ):
 
         parameter_declaration_StartIndex = self.input.index()
@@ -3127,14 +3133,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 28):
                     return 
 
-                # C.g:246:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
-                # C.g:246:4: declaration_specifiers ( declarator | abstract_declarator )+
+                # C.g:252:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
+                # C.g:252:4: declaration_specifiers ( declarator | abstract_declarator )+
                 self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration891)
                 self.declaration_specifiers()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:246:27: ( declarator | abstract_declarator )+
+                # C.g:252:27: ( declarator | abstract_declarator )+
                 cnt35 = 0
                 while True: #loop35
                     alt35 = 3
@@ -3186,7 +3192,7 @@ class CParser(Parser):
                         alt35 = 2
 
                     if alt35 == 1:
-                        # C.g:246:28: declarator
+                        # C.g:252:28: declarator
                         self.following.append(self.FOLLOW_declarator_in_parameter_declaration894)
                         self.declarator()
                         self.following.pop()
@@ -3195,7 +3201,7 @@ class CParser(Parser):
 
 
                     elif alt35 == 2:
-                        # C.g:246:39: abstract_declarator
+                        # C.g:252:39: abstract_declarator
                         self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration896)
                         self.abstract_declarator()
                         self.following.pop()
@@ -3236,7 +3242,7 @@ class CParser(Parser):
 
 
     # $ANTLR start identifier_list
-    # C.g:249:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
+    # C.g:255:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
     def identifier_list(self, ):
 
         identifier_list_StartIndex = self.input.index()
@@ -3245,12 +3251,12 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 29):
                     return 
 
-                # C.g:250:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
-                # C.g:250:4: IDENTIFIER ( ',' IDENTIFIER )*
+                # C.g:256:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
+                # C.g:256:4: IDENTIFIER ( ',' IDENTIFIER )*
                 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list909)
                 if self.failed:
                     return 
-                # C.g:251:2: ( ',' IDENTIFIER )*
+                # C.g:257:2: ( ',' IDENTIFIER )*
                 while True: #loop36
                     alt36 = 2
                     LA36_0 = self.input.LA(1)
@@ -3260,7 +3266,7 @@ class CParser(Parser):
 
 
                     if alt36 == 1:
-                        # C.g:251:3: ',' IDENTIFIER
+                        # C.g:257:3: ',' IDENTIFIER
                         self.match(self.input, 26, self.FOLLOW_26_in_identifier_list913)
                         if self.failed:
                             return 
@@ -3292,7 +3298,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_name
-    # C.g:254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
+    # C.g:260:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
     def type_name(self, ):
 
         type_name_StartIndex = self.input.index()
@@ -3301,7 +3307,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 30):
                     return 
 
-                # C.g:255:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
+                # C.g:261:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
                 alt38 = 2
                 LA38_0 = self.input.LA(1)
 
@@ -3319,7 +3325,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 13, self.input)
+                        nvae = NoViableAltException("260:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 13, self.input)
 
                         raise nvae
 
@@ -3328,18 +3334,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 0, self.input)
+                    nvae = NoViableAltException("260:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 0, self.input)
 
                     raise nvae
 
                 if alt38 == 1:
-                    # C.g:255:4: specifier_qualifier_list ( abstract_declarator )?
+                    # C.g:261:4: specifier_qualifier_list ( abstract_declarator )?
                     self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name928)
                     self.specifier_qualifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:255:29: ( abstract_declarator )?
+                    # C.g:261:29: ( abstract_declarator )?
                     alt37 = 2
                     LA37_0 = self.input.LA(1)
 
@@ -3358,7 +3364,7 @@ class CParser(Parser):
 
 
                 elif alt38 == 2:
-                    # C.g:256:4: type_id
+                    # C.g:262:4: type_id
                     self.following.append(self.FOLLOW_type_id_in_type_name936)
                     self.type_id()
                     self.following.pop()
@@ -3382,7 +3388,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator
-    # C.g:259:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
+    # C.g:265:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
     def abstract_declarator(self, ):
 
         abstract_declarator_StartIndex = self.input.index()
@@ -3391,7 +3397,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 31):
                     return 
 
-                # C.g:260:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
+                # C.g:266:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
                 alt40 = 2
                 LA40_0 = self.input.LA(1)
 
@@ -3404,18 +3410,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("259:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 40, 0, self.input)
+                    nvae = NoViableAltException("265:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 40, 0, self.input)
 
                     raise nvae
 
                 if alt40 == 1:
-                    # C.g:260:4: pointer ( direct_abstract_declarator )?
+                    # C.g:266:4: pointer ( direct_abstract_declarator )?
                     self.following.append(self.FOLLOW_pointer_in_abstract_declarator947)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:260:12: ( direct_abstract_declarator )?
+                    # C.g:266:12: ( direct_abstract_declarator )?
                     alt39 = 2
                     LA39_0 = self.input.LA(1)
 
@@ -3566,7 +3572,7 @@ class CParser(Parser):
 
 
                 elif alt40 == 2:
-                    # C.g:261:4: direct_abstract_declarator
+                    # C.g:267:4: direct_abstract_declarator
                     self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator955)
                     self.direct_abstract_declarator()
                     self.following.pop()
@@ -3590,7 +3596,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_abstract_declarator
-    # C.g:264:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
+    # C.g:270:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
     def direct_abstract_declarator(self, ):
 
         direct_abstract_declarator_StartIndex = self.input.index()
@@ -3599,9 +3605,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 32):
                     return 
 
-                # C.g:265:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
-                # C.g:265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
-                # C.g:265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
+                # C.g:271:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
+                # C.g:271:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
+                # C.g:271:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
                 alt41 = 2
                 LA41_0 = self.input.LA(1)
 
@@ -3617,7 +3623,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 1, self.input)
+                        nvae = NoViableAltException("271:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 1, self.input)
 
                         raise nvae
 
@@ -3628,12 +3634,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 0, self.input)
+                    nvae = NoViableAltException("271:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 0, self.input)
 
                     raise nvae
 
                 if alt41 == 1:
-                    # C.g:265:6: '(' abstract_declarator ')'
+                    # C.g:271:6: '(' abstract_declarator ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_direct_abstract_declarator968)
                     if self.failed:
                         return 
@@ -3648,7 +3654,7 @@ class CParser(Parser):
 
 
                 elif alt41 == 2:
-                    # C.g:265:36: abstract_declarator_suffix
+                    # C.g:271:36: abstract_declarator_suffix
                     self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator976)
                     self.abstract_declarator_suffix()
                     self.following.pop()
@@ -3657,7 +3663,7 @@ class CParser(Parser):
 
 
 
-                # C.g:265:65: ( abstract_declarator_suffix )*
+                # C.g:271:65: ( abstract_declarator_suffix )*
                 while True: #loop42
                     alt42 = 2
                     LA42_0 = self.input.LA(1)
@@ -3863,7 +3869,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator_suffix
-    # C.g:268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
+    # C.g:274:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
     def abstract_declarator_suffix(self, ):
 
         abstract_declarator_suffix_StartIndex = self.input.index()
@@ -3872,7 +3878,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 33):
                     return 
 
-                # C.g:269:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
+                # C.g:275:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
                 alt43 = 4
                 LA43_0 = self.input.LA(1)
 
@@ -3888,7 +3894,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 1, self.input)
+                        nvae = NoViableAltException("274:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 1, self.input)
 
                         raise nvae
 
@@ -3904,7 +3910,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 2, self.input)
+                        nvae = NoViableAltException("274:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 2, self.input)
 
                         raise nvae
 
@@ -3913,12 +3919,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 0, self.input)
+                    nvae = NoViableAltException("274:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 0, self.input)
 
                     raise nvae
 
                 if alt43 == 1:
-                    # C.g:269:4: '[' ']'
+                    # C.g:275:4: '[' ']'
                     self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix992)
                     if self.failed:
                         return 
@@ -3928,7 +3934,7 @@ class CParser(Parser):
 
 
                 elif alt43 == 2:
-                    # C.g:270:4: '[' constant_expression ']'
+                    # C.g:276:4: '[' constant_expression ']'
                     self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix999)
                     if self.failed:
                         return 
@@ -3943,7 +3949,7 @@ class CParser(Parser):
 
 
                 elif alt43 == 3:
-                    # C.g:271:4: '(' ')'
+                    # C.g:277:4: '(' ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1008)
                     if self.failed:
                         return 
@@ -3953,7 +3959,7 @@ class CParser(Parser):
 
 
                 elif alt43 == 4:
-                    # C.g:272:4: '(' parameter_type_list ')'
+                    # C.g:278:4: '(' parameter_type_list ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1015)
                     if self.failed:
                         return 
@@ -3983,7 +3989,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer
-    # C.g:275:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
+    # C.g:281:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
     def initializer(self, ):
 
         initializer_StartIndex = self.input.index()
@@ -3992,7 +3998,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 34):
                     return 
 
-                # C.g:277:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
+                # C.g:283:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
                 alt45 = 2
                 LA45_0 = self.input.LA(1)
 
@@ -4005,12 +4011,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("275:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 45, 0, self.input)
+                    nvae = NoViableAltException("281:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 45, 0, self.input)
 
                     raise nvae
 
                 if alt45 == 1:
-                    # C.g:277:4: assignment_expression
+                    # C.g:283:4: assignment_expression
                     self.following.append(self.FOLLOW_assignment_expression_in_initializer1032)
                     self.assignment_expression()
                     self.following.pop()
@@ -4019,7 +4025,7 @@ class CParser(Parser):
 
 
                 elif alt45 == 2:
-                    # C.g:278:4: '{' initializer_list ( ',' )? '}'
+                    # C.g:284:4: '{' initializer_list ( ',' )? '}'
                     self.match(self.input, 41, self.FOLLOW_41_in_initializer1037)
                     if self.failed:
                         return 
@@ -4028,7 +4034,7 @@ class CParser(Parser):
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:278:25: ( ',' )?
+                    # C.g:284:25: ( ',' )?
                     alt44 = 2
                     LA44_0 = self.input.LA(1)
 
@@ -4063,7 +4069,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer_list
-    # C.g:281:1: initializer_list : initializer ( ',' initializer )* ;
+    # C.g:287:1: initializer_list : initializer ( ',' initializer )* ;
     def initializer_list(self, ):
 
         initializer_list_StartIndex = self.input.index()
@@ -4072,14 +4078,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 35):
                     return 
 
-                # C.g:282:2: ( initializer ( ',' initializer )* )
-                # C.g:282:4: initializer ( ',' initializer )*
+                # C.g:288:2: ( initializer ( ',' initializer )* )
+                # C.g:288:4: initializer ( ',' initializer )*
                 self.following.append(self.FOLLOW_initializer_in_initializer_list1055)
                 self.initializer()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:282:16: ( ',' initializer )*
+                # C.g:288:16: ( ',' initializer )*
                 while True: #loop46
                     alt46 = 2
                     LA46_0 = self.input.LA(1)
@@ -4094,7 +4100,7 @@ class CParser(Parser):
 
 
                     if alt46 == 1:
-                        # C.g:282:17: ',' initializer
+                        # C.g:288:17: ',' initializer
                         self.match(self.input, 26, self.FOLLOW_26_in_initializer_list1058)
                         if self.failed:
                             return 
@@ -4134,7 +4140,7 @@ class CParser(Parser):
 
 
     # $ANTLR start argument_expression_list
-    # C.g:287:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:293:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
     def argument_expression_list(self, ):
 
         retval = self.argument_expression_list_return()
@@ -4145,14 +4151,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 36):
                     return retval
 
-                # C.g:288:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:288:6: assignment_expression ( ',' assignment_expression )*
+                # C.g:294:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:294:6: assignment_expression ( ',' assignment_expression )*
                 self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1078)
                 self.assignment_expression()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:288:28: ( ',' assignment_expression )*
+                # C.g:294:28: ( ',' assignment_expression )*
                 while True: #loop47
                     alt47 = 2
                     LA47_0 = self.input.LA(1)
@@ -4162,7 +4168,7 @@ class CParser(Parser):
 
 
                     if alt47 == 1:
-                        # C.g:288:29: ',' assignment_expression
+                        # C.g:294:29: ',' assignment_expression
                         self.match(self.input, 26, self.FOLLOW_26_in_argument_expression_list1081)
                         if self.failed:
                             return retval
@@ -4198,7 +4204,7 @@ class CParser(Parser):
 
 
     # $ANTLR start additive_expression
-    # C.g:291:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
+    # C.g:297:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
     def additive_expression(self, ):
 
         additive_expression_StartIndex = self.input.index()
@@ -4207,10 +4213,10 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 37):
                     return 
 
-                # C.g:292:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
-                # C.g:292:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
-                # C.g:292:4: ( multiplicative_expression )
-                # C.g:292:5: multiplicative_expression
+                # C.g:298:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
+                # C.g:298:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:298:4: ( multiplicative_expression )
+                # C.g:298:5: multiplicative_expression
                 self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1097)
                 self.multiplicative_expression()
                 self.following.pop()
@@ -4219,7 +4225,7 @@ class CParser(Parser):
 
 
 
-                # C.g:292:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:298:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
                 while True: #loop48
                     alt48 = 3
                     LA48_0 = self.input.LA(1)
@@ -4231,7 +4237,7 @@ class CParser(Parser):
 
 
                     if alt48 == 1:
-                        # C.g:292:33: '+' multiplicative_expression
+                        # C.g:298:33: '+' multiplicative_expression
                         self.match(self.input, 57, self.FOLLOW_57_in_additive_expression1101)
                         if self.failed:
                             return 
@@ -4243,7 +4249,7 @@ class CParser(Parser):
 
 
                     elif alt48 == 2:
-                        # C.g:292:65: '-' multiplicative_expression
+                        # C.g:298:65: '-' multiplicative_expression
                         self.match(self.input, 58, self.FOLLOW_58_in_additive_expression1107)
                         if self.failed:
                             return 
@@ -4277,7 +4283,7 @@ class CParser(Parser):
 
 
     # $ANTLR start multiplicative_expression
-    # C.g:295:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
+    # C.g:301:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
     def multiplicative_expression(self, ):
 
         multiplicative_expression_StartIndex = self.input.index()
@@ -4286,10 +4292,10 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 38):
                     return 
 
-                # C.g:296:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
-                # C.g:296:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
-                # C.g:296:4: ( cast_expression )
-                # C.g:296:5: cast_expression
+                # C.g:302:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
+                # C.g:302:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:302:4: ( cast_expression )
+                # C.g:302:5: cast_expression
                 self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1123)
                 self.cast_expression()
                 self.following.pop()
@@ -4298,7 +4304,7 @@ class CParser(Parser):
 
 
 
-                # C.g:296:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:302:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
                 while True: #loop49
                     alt49 = 4
                     LA49 = self.input.LA(1)
@@ -4310,7 +4316,7 @@ class CParser(Parser):
                         alt49 = 3
 
                     if alt49 == 1:
-                        # C.g:296:23: '*' cast_expression
+                        # C.g:302:23: '*' cast_expression
                         self.match(self.input, 55, self.FOLLOW_55_in_multiplicative_expression1127)
                         if self.failed:
                             return 
@@ -4322,7 +4328,7 @@ class CParser(Parser):
 
 
                     elif alt49 == 2:
-                        # C.g:296:45: '/' cast_expression
+                        # C.g:302:45: '/' cast_expression
                         self.match(self.input, 59, self.FOLLOW_59_in_multiplicative_expression1133)
                         if self.failed:
                             return 
@@ -4334,7 +4340,7 @@ class CParser(Parser):
 
 
                     elif alt49 == 3:
-                        # C.g:296:67: '%' cast_expression
+                        # C.g:302:67: '%' cast_expression
                         self.match(self.input, 60, self.FOLLOW_60_in_multiplicative_expression1139)
                         if self.failed:
                             return 
@@ -4368,7 +4374,7 @@ class CParser(Parser):
 
 
     # $ANTLR start cast_expression
-    # C.g:299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
+    # C.g:305:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
     def cast_expression(self, ):
 
         cast_expression_StartIndex = self.input.index()
@@ -4377,7 +4383,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 39):
                     return 
 
-                # C.g:300:2: ( '(' type_name ')' cast_expression | unary_expression )
+                # C.g:306:2: ( '(' type_name ')' cast_expression | unary_expression )
                 alt50 = 2
                 LA50_0 = self.input.LA(1)
 
@@ -4397,7 +4403,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 20, self.input)
+                            nvae = NoViableAltException("305:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 20, self.input)
 
                             raise nvae
 
@@ -4408,7 +4414,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 1, self.input)
+                        nvae = NoViableAltException("305:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 1, self.input)
 
                         raise nvae
 
@@ -4419,12 +4425,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 0, self.input)
+                    nvae = NoViableAltException("305:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 0, self.input)
 
                     raise nvae
 
                 if alt50 == 1:
-                    # C.g:300:4: '(' type_name ')' cast_expression
+                    # C.g:306:4: '(' type_name ')' cast_expression
                     self.match(self.input, 51, self.FOLLOW_51_in_cast_expression1154)
                     if self.failed:
                         return 
@@ -4444,7 +4450,7 @@ class CParser(Parser):
 
 
                 elif alt50 == 2:
-                    # C.g:301:4: unary_expression
+                    # C.g:307:4: unary_expression
                     self.following.append(self.FOLLOW_unary_expression_in_cast_expression1165)
                     self.unary_expression()
                     self.following.pop()
@@ -4468,7 +4474,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_expression
-    # C.g:304:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );
+    # C.g:310: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()
@@ -4477,7 +4483,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 40):
                     return 
 
-                # C.g:305:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
+                # C.g:311:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
                 alt51 = 6
                 LA51 = self.input.LA(1)
                 if LA51 == IDENTIFIER or LA51 == HEX_LITERAL or LA51 == OCTAL_LITERAL or LA51 == DECIMAL_LITERAL or LA51 == CHARACTER_LITERAL or LA51 == STRING_LITERAL or LA51 == FLOATING_POINT_LITERAL or LA51 == 51:
@@ -4503,7 +4509,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("304:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 8, self.input)
+                            nvae = NoViableAltException("310:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 8, self.input)
 
                             raise nvae
 
@@ -4514,7 +4520,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("304:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 7, self.input)
+                        nvae = NoViableAltException("310:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 7, self.input)
 
                         raise nvae
 
@@ -4523,12 +4529,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("304:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 0, self.input)
+                    nvae = NoViableAltException("310:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 51, 0, self.input)
 
                     raise nvae
 
                 if alt51 == 1:
-                    # C.g:305:4: postfix_expression
+                    # C.g:311:4: postfix_expression
                     self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1176)
                     self.postfix_expression()
                     self.following.pop()
@@ -4537,7 +4543,7 @@ class CParser(Parser):
 
 
                 elif alt51 == 2:
-                    # C.g:306:4: '++' unary_expression
+                    # C.g:312:4: '++' unary_expression
                     self.match(self.input, 61, self.FOLLOW_61_in_unary_expression1181)
                     if self.failed:
                         return 
@@ -4549,7 +4555,7 @@ class CParser(Parser):
 
 
                 elif alt51 == 3:
-                    # C.g:307:4: '--' unary_expression
+                    # C.g:313:4: '--' unary_expression
                     self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1188)
                     if self.failed:
                         return 
@@ -4561,7 +4567,7 @@ class CParser(Parser):
 
 
                 elif alt51 == 4:
-                    # C.g:308:4: unary_operator cast_expression
+                    # C.g:314:4: unary_operator cast_expression
                     self.following.append(self.FOLLOW_unary_operator_in_unary_expression1195)
                     self.unary_operator()
                     self.following.pop()
@@ -4575,7 +4581,7 @@ class CParser(Parser):
 
 
                 elif alt51 == 5:
-                    # C.g:309:4: 'sizeof' unary_expression
+                    # C.g:315:4: 'sizeof' unary_expression
                     self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1202)
                     if self.failed:
                         return 
@@ -4587,7 +4593,7 @@ class CParser(Parser):
 
 
                 elif alt51 == 6:
-                    # C.g:310:4: 'sizeof' '(' type_name ')'
+                    # C.g:316:4: 'sizeof' '(' type_name ')'
                     self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1209)
                     if self.failed:
                         return 
@@ -4620,7 +4626,7 @@ class CParser(Parser):
 
 
     # $ANTLR start postfix_expression
-    # C.g:313:1: postfix_expression : p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* ;
+    # C.g:319:1: postfix_expression : p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* ;
     def postfix_expression(self, ):
 
         postfix_expression_StartIndex = self.input.index()
@@ -4636,14 +4642,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 41):
                     return 
 
-                # C.g:314:2: (p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* )
-                # C.g:314:6: p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
+                # C.g:320:2: (p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* )
+                # C.g:320:6: p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
                 self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1230)
                 p = self.primary_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:315:9: ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
+                # C.g:321:9: ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
                 while True: #loop52
                     alt52 = 9
                     LA52 = self.input.LA(1)
@@ -4680,7 +4686,7 @@ class CParser(Parser):
                         alt52 = 8
 
                     if alt52 == 1:
-                        # C.g:315:13: '[' expression ']'
+                        # C.g:321:13: '[' expression ']'
                         self.match(self.input, 53, self.FOLLOW_53_in_postfix_expression1244)
                         if self.failed:
                             return 
@@ -4695,7 +4701,7 @@ class CParser(Parser):
 
 
                     elif alt52 == 2:
-                        # C.g:316:13: '(' a= ')'
+                        # C.g:322:13: '(' a= ')'
                         self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1262)
                         if self.failed:
                             return 
@@ -4709,7 +4715,7 @@ class CParser(Parser):
 
 
                     elif alt52 == 3:
-                        # C.g:317:13: '(' c= argument_expression_list b= ')'
+                        # C.g:323:13: '(' c= argument_expression_list b= ')'
                         self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1281)
                         if self.failed:
                             return 
@@ -4728,7 +4734,7 @@ class CParser(Parser):
 
 
                     elif alt52 == 4:
-                        # C.g:318:13: '.' IDENTIFIER
+                        # C.g:324:13: '.' IDENTIFIER
                         self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1305)
                         if self.failed:
                             return 
@@ -4738,7 +4744,7 @@ class CParser(Parser):
 
 
                     elif alt52 == 5:
-                        # C.g:319:13: '*' IDENTIFIER
+                        # C.g:325:13: '*' IDENTIFIER
                         self.match(self.input, 55, self.FOLLOW_55_in_postfix_expression1321)
                         if self.failed:
                             return 
@@ -4748,7 +4754,7 @@ class CParser(Parser):
 
 
                     elif alt52 == 6:
-                        # C.g:320:13: '->' IDENTIFIER
+                        # C.g:326:13: '->' IDENTIFIER
                         self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1337)
                         if self.failed:
                             return 
@@ -4758,14 +4764,14 @@ class CParser(Parser):
 
 
                     elif alt52 == 7:
-                        # C.g:321:13: '++'
+                        # C.g:327:13: '++'
                         self.match(self.input, 61, self.FOLLOW_61_in_postfix_expression1353)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 8:
-                        # C.g:322:13: '--'
+                        # C.g:328:13: '--'
                         self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1367)
                         if self.failed:
                             return 
@@ -4794,7 +4800,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_operator
-    # C.g:326:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
+    # C.g:332:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
     def unary_operator(self, ):
 
         unary_operator_StartIndex = self.input.index()
@@ -4803,7 +4809,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 42):
                     return 
 
-                # C.g:327:2: ( '&' | '*' | '+' | '-' | '~' | '!' )
+                # C.g:333: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();
@@ -4847,7 +4853,7 @@ class CParser(Parser):
 
 
     # $ANTLR start primary_expression
-    # C.g:335:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
+    # C.g:341:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
     def primary_expression(self, ):
 
         retval = self.primary_expression_return()
@@ -4858,7 +4864,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 43):
                     return retval
 
-                # C.g:336:2: ( IDENTIFIER | constant | '(' expression ')' )
+                # C.g:342:2: ( IDENTIFIER | constant | '(' expression ')' )
                 alt53 = 3
                 LA53 = self.input.LA(1)
                 if LA53 == IDENTIFIER:
@@ -4872,19 +4878,19 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("335:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 53, 0, self.input)
+                    nvae = NoViableAltException("341:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 53, 0, self.input)
 
                     raise nvae
 
                 if alt53 == 1:
-                    # C.g:336:4: IDENTIFIER
+                    # C.g:342:4: IDENTIFIER
                     self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_primary_expression1425)
                     if self.failed:
                         return retval
 
 
                 elif alt53 == 2:
-                    # C.g:337:4: constant
+                    # C.g:343:4: constant
                     self.following.append(self.FOLLOW_constant_in_primary_expression1430)
                     self.constant()
                     self.following.pop()
@@ -4893,7 +4899,7 @@ class CParser(Parser):
 
 
                 elif alt53 == 3:
-                    # C.g:338:4: '(' expression ')'
+                    # C.g:344:4: '(' expression ')'
                     self.match(self.input, 51, self.FOLLOW_51_in_primary_expression1435)
                     if self.failed:
                         return retval
@@ -4925,7 +4931,7 @@ class CParser(Parser):
 
 
     # $ANTLR start constant
-    # C.g:341:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
+    # C.g:347:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
     def constant(self, ):
 
         constant_StartIndex = self.input.index()
@@ -4934,7 +4940,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 44):
                     return 
 
-                # C.g:342:5: ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL )
+                # C.g:348: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();
@@ -4978,7 +4984,7 @@ class CParser(Parser):
 
 
     # $ANTLR start expression
-    # C.g:352:1: expression : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:358:1: expression : assignment_expression ( ',' assignment_expression )* ;
     def expression(self, ):
 
         retval = self.expression_return()
@@ -4989,14 +4995,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 45):
                     return retval
 
-                # C.g:353:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:353:4: assignment_expression ( ',' assignment_expression )*
+                # C.g:359:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:359:4: assignment_expression ( ',' assignment_expression )*
                 self.following.append(self.FOLLOW_assignment_expression_in_expression1517)
                 self.assignment_expression()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:353:26: ( ',' assignment_expression )*
+                # C.g:359:26: ( ',' assignment_expression )*
                 while True: #loop54
                     alt54 = 2
                     LA54_0 = self.input.LA(1)
@@ -5006,7 +5012,7 @@ class CParser(Parser):
 
 
                     if alt54 == 1:
-                        # C.g:353:27: ',' assignment_expression
+                        # C.g:359:27: ',' assignment_expression
                         self.match(self.input, 26, self.FOLLOW_26_in_expression1520)
                         if self.failed:
                             return retval
@@ -5042,7 +5048,7 @@ class CParser(Parser):
 
 
     # $ANTLR start constant_expression
-    # C.g:356:1: constant_expression : conditional_expression ;
+    # C.g:362:1: constant_expression : conditional_expression ;
     def constant_expression(self, ):
 
         constant_expression_StartIndex = self.input.index()
@@ -5051,8 +5057,8 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 46):
                     return 
 
-                # C.g:357:2: ( conditional_expression )
-                # C.g:357:4: conditional_expression
+                # C.g:363:2: ( conditional_expression )
+                # C.g:363:4: conditional_expression
                 self.following.append(self.FOLLOW_conditional_expression_in_constant_expression1535)
                 self.conditional_expression()
                 self.following.pop()
@@ -5077,7 +5083,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_expression
-    # C.g:360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
+    # C.g:366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
     def assignment_expression(self, ):
 
         assignment_expression_StartIndex = self.input.index()
@@ -5086,7 +5092,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 47):
                     return 
 
-                # C.g:361:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
+                # C.g:367:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
                 alt55 = 2
                 LA55 = self.input.LA(1)
                 if LA55 == IDENTIFIER:
@@ -5103,7 +5109,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 8, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 8, self.input)
 
                             raise nvae
 
@@ -5119,7 +5125,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 9, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 9, self.input)
 
                             raise nvae
 
@@ -5135,7 +5141,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 10, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 10, self.input)
 
                             raise nvae
 
@@ -5151,7 +5157,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 11, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 11, self.input)
 
                             raise nvae
 
@@ -5167,7 +5173,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 12, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 12, self.input)
 
                             raise nvae
 
@@ -5183,7 +5189,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 13, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 13, self.input)
 
                             raise nvae
 
@@ -5199,7 +5205,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 14, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 14, self.input)
 
                             raise nvae
 
@@ -5212,7 +5218,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 1, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 1, self.input)
 
                         raise nvae
 
@@ -5230,7 +5236,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 36, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 36, self.input)
 
                             raise nvae
 
@@ -5246,7 +5252,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 37, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 37, self.input)
 
                             raise nvae
 
@@ -5262,7 +5268,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 38, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 38, self.input)
 
                             raise nvae
 
@@ -5278,7 +5284,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 39, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 39, self.input)
 
                             raise nvae
 
@@ -5294,7 +5300,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 40, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 40, self.input)
 
                             raise nvae
 
@@ -5310,7 +5316,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 41, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 41, self.input)
 
                             raise nvae
 
@@ -5326,7 +5332,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 42, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 42, self.input)
 
                             raise nvae
 
@@ -5339,7 +5345,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 2, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 2, self.input)
 
                         raise nvae
 
@@ -5357,7 +5363,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 64, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 64, self.input)
 
                             raise nvae
 
@@ -5373,7 +5379,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 65, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 65, self.input)
 
                             raise nvae
 
@@ -5389,7 +5395,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 66, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 66, self.input)
 
                             raise nvae
 
@@ -5405,7 +5411,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 67, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 67, self.input)
 
                             raise nvae
 
@@ -5421,7 +5427,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 68, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 68, self.input)
 
                             raise nvae
 
@@ -5437,7 +5443,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 69, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 69, self.input)
 
                             raise nvae
 
@@ -5453,7 +5459,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 70, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 70, self.input)
 
                             raise nvae
 
@@ -5464,7 +5470,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 3, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 3, self.input)
 
                         raise nvae
 
@@ -5482,7 +5488,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 83, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 83, self.input)
 
                             raise nvae
 
@@ -5498,7 +5504,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 84, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 84, self.input)
 
                             raise nvae
 
@@ -5514,7 +5520,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 85, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 85, self.input)
 
                             raise nvae
 
@@ -5530,7 +5536,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 86, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 86, self.input)
 
                             raise nvae
 
@@ -5546,7 +5552,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 87, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 87, self.input)
 
                             raise nvae
 
@@ -5562,7 +5568,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 88, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 88, self.input)
 
                             raise nvae
 
@@ -5578,7 +5584,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 89, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 89, self.input)
 
                             raise nvae
 
@@ -5587,7 +5593,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 4, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 4, self.input)
 
                         raise nvae
 
@@ -5605,7 +5611,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 90, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 90, self.input)
 
                             raise nvae
 
@@ -5621,7 +5627,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 91, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 91, self.input)
 
                             raise nvae
 
@@ -5637,7 +5643,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 92, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 92, self.input)
 
                             raise nvae
 
@@ -5653,7 +5659,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 93, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 93, self.input)
 
                             raise nvae
 
@@ -5669,7 +5675,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 94, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 94, self.input)
 
                             raise nvae
 
@@ -5685,7 +5691,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 95, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 95, self.input)
 
                             raise nvae
 
@@ -5701,7 +5707,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 96, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 96, self.input)
 
                             raise nvae
 
@@ -5710,7 +5716,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 5, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 5, self.input)
 
                         raise nvae
 
@@ -5728,7 +5734,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 97, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 97, self.input)
 
                             raise nvae
 
@@ -5744,7 +5750,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 98, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 98, self.input)
 
                             raise nvae
 
@@ -5760,7 +5766,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 99, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 99, self.input)
 
                             raise nvae
 
@@ -5776,7 +5782,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 100, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 100, self.input)
 
                             raise nvae
 
@@ -5792,7 +5798,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 101, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 101, self.input)
 
                             raise nvae
 
@@ -5808,7 +5814,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 102, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 102, self.input)
 
                             raise nvae
 
@@ -5824,7 +5830,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 103, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 103, self.input)
 
                             raise nvae
 
@@ -5833,7 +5839,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 6, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 6, self.input)
 
                         raise nvae
 
@@ -5851,7 +5857,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 104, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 104, self.input)
 
                             raise nvae
 
@@ -5867,7 +5873,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 105, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 105, self.input)
 
                             raise nvae
 
@@ -5883,7 +5889,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 106, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 106, self.input)
 
                             raise nvae
 
@@ -5899,7 +5905,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 107, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 107, self.input)
 
                             raise nvae
 
@@ -5915,7 +5921,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 108, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 108, self.input)
 
                             raise nvae
 
@@ -5931,7 +5937,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 109, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 109, self.input)
 
                             raise nvae
 
@@ -5947,7 +5953,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 110, self.input)
+                            nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 110, self.input)
 
                             raise nvae
 
@@ -5956,7 +5962,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 7, self.input)
+                        nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 7, self.input)
 
                         raise nvae
 
@@ -5965,12 +5971,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 0, self.input)
+                    nvae = NoViableAltException("366:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 0, self.input)
 
                     raise nvae
 
                 if alt55 == 1:
-                    # C.g:361:4: lvalue assignment_operator assignment_expression
+                    # C.g:367:4: lvalue assignment_operator assignment_expression
                     self.following.append(self.FOLLOW_lvalue_in_assignment_expression1546)
                     self.lvalue()
                     self.following.pop()
@@ -5989,7 +5995,7 @@ class CParser(Parser):
 
 
                 elif alt55 == 2:
-                    # C.g:362:4: conditional_expression
+                    # C.g:368:4: conditional_expression
                     self.following.append(self.FOLLOW_conditional_expression_in_assignment_expression1555)
                     self.conditional_expression()
                     self.following.pop()
@@ -6013,7 +6019,7 @@ class CParser(Parser):
 
 
     # $ANTLR start lvalue
-    # C.g:365:1: lvalue : unary_expression ;
+    # C.g:371:1: lvalue : unary_expression ;
     def lvalue(self, ):
 
         lvalue_StartIndex = self.input.index()
@@ -6022,8 +6028,8 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 48):
                     return 
 
-                # C.g:366:2: ( unary_expression )
-                # C.g:366:4: unary_expression
+                # C.g:372:2: ( unary_expression )
+                # C.g:372:4: unary_expression
                 self.following.append(self.FOLLOW_unary_expression_in_lvalue1567)
                 self.unary_expression()
                 self.following.pop()
@@ -6048,7 +6054,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_operator
-    # C.g:369:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
+    # C.g:375:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
     def assignment_operator(self, ):
 
         assignment_operator_StartIndex = self.input.index()
@@ -6057,7 +6063,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 49):
                     return 
 
-                # C.g:370:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
+                # C.g:376:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
                 # C.g:
                 if self.input.LA(1) == 27 or (69 <= self.input.LA(1) <= 78):
                     self.input.consume();
@@ -6095,7 +6101,7 @@ class CParser(Parser):
 
 
     # $ANTLR start conditional_expression
-    # C.g:383:1: conditional_expression : e= logical_or_expression ( '?' expression ':' conditional_expression )? ;
+    # C.g:389:1: conditional_expression : e= logical_or_expression ( '?' expression ':' conditional_expression )? ;
     def conditional_expression(self, ):
 
         conditional_expression_StartIndex = self.input.index()
@@ -6107,21 +6113,21 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 50):
                     return 
 
-                # C.g:384:2: (e= logical_or_expression ( '?' expression ':' conditional_expression )? )
-                # C.g:384:4: e= logical_or_expression ( '?' expression ':' conditional_expression )?
+                # C.g:390:2: (e= logical_or_expression ( '?' expression ':' conditional_expression )? )
+                # C.g:390:4: e= logical_or_expression ( '?' expression ':' conditional_expression )?
                 self.following.append(self.FOLLOW_logical_or_expression_in_conditional_expression1641)
                 e = self.logical_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:384:28: ( '?' expression ':' conditional_expression )?
+                # C.g:390:28: ( '?' expression ':' conditional_expression )?
                 alt56 = 2
                 LA56_0 = self.input.LA(1)
 
                 if (LA56_0 == 79) :
                     alt56 = 1
                 if alt56 == 1:
-                    # C.g:384:29: '?' expression ':' conditional_expression
+                    # C.g:390:29: '?' expression ':' conditional_expression
                     self.match(self.input, 79, self.FOLLOW_79_in_conditional_expression1644)
                     if self.failed:
                         return 
@@ -6169,7 +6175,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_or_expression
-    # C.g:387:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
+    # C.g:393:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
     def logical_or_expression(self, ):
 
         retval = self.logical_or_expression_return()
@@ -6180,14 +6186,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 51):
                     return retval
 
-                # C.g:388:2: ( logical_and_expression ( '||' logical_and_expression )* )
-                # C.g:388:4: logical_and_expression ( '||' logical_and_expression )*
+                # C.g:394:2: ( logical_and_expression ( '||' logical_and_expression )* )
+                # C.g:394:4: logical_and_expression ( '||' logical_and_expression )*
                 self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1665)
                 self.logical_and_expression()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:388:27: ( '||' logical_and_expression )*
+                # C.g:394:27: ( '||' logical_and_expression )*
                 while True: #loop57
                     alt57 = 2
                     LA57_0 = self.input.LA(1)
@@ -6197,7 +6203,7 @@ class CParser(Parser):
 
 
                     if alt57 == 1:
-                        # C.g:388:28: '||' logical_and_expression
+                        # C.g:394:28: '||' logical_and_expression
                         self.match(self.input, 80, self.FOLLOW_80_in_logical_or_expression1668)
                         if self.failed:
                             return retval
@@ -6233,7 +6239,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_and_expression
-    # C.g:391:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
+    # C.g:397:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
     def logical_and_expression(self, ):
 
         logical_and_expression_StartIndex = self.input.index()
@@ -6242,14 +6248,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 52):
                     return 
 
-                # C.g:392:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
-                # C.g:392:4: inclusive_or_expression ( '&&' inclusive_or_expression )*
+                # C.g:398:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
+                # C.g:398:4: inclusive_or_expression ( '&&' inclusive_or_expression )*
                 self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1683)
                 self.inclusive_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:392:28: ( '&&' inclusive_or_expression )*
+                # C.g:398:28: ( '&&' inclusive_or_expression )*
                 while True: #loop58
                     alt58 = 2
                     LA58_0 = self.input.LA(1)
@@ -6259,7 +6265,7 @@ class CParser(Parser):
 
 
                     if alt58 == 1:
-                        # C.g:392:29: '&&' inclusive_or_expression
+                        # C.g:398:29: '&&' inclusive_or_expression
                         self.match(self.input, 81, self.FOLLOW_81_in_logical_and_expression1686)
                         if self.failed:
                             return 
@@ -6293,7 +6299,7 @@ class CParser(Parser):
 
 
     # $ANTLR start inclusive_or_expression
-    # C.g:395:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
+    # C.g:401:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
     def inclusive_or_expression(self, ):
 
         inclusive_or_expression_StartIndex = self.input.index()
@@ -6302,14 +6308,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 53):
                     return 
 
-                # C.g:396:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
-                # C.g:396:4: exclusive_or_expression ( '|' exclusive_or_expression )*
+                # C.g:402:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
+                # C.g:402:4: exclusive_or_expression ( '|' exclusive_or_expression )*
                 self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1701)
                 self.exclusive_or_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:396:28: ( '|' exclusive_or_expression )*
+                # C.g:402:28: ( '|' exclusive_or_expression )*
                 while True: #loop59
                     alt59 = 2
                     LA59_0 = self.input.LA(1)
@@ -6319,7 +6325,7 @@ class CParser(Parser):
 
 
                     if alt59 == 1:
-                        # C.g:396:29: '|' exclusive_or_expression
+                        # C.g:402:29: '|' exclusive_or_expression
                         self.match(self.input, 82, self.FOLLOW_82_in_inclusive_or_expression1704)
                         if self.failed:
                             return 
@@ -6353,7 +6359,7 @@ class CParser(Parser):
 
 
     # $ANTLR start exclusive_or_expression
-    # C.g:399:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
+    # C.g:405:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
     def exclusive_or_expression(self, ):
 
         exclusive_or_expression_StartIndex = self.input.index()
@@ -6362,14 +6368,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 54):
                     return 
 
-                # C.g:400:2: ( and_expression ( '^' and_expression )* )
-                # C.g:400:4: and_expression ( '^' and_expression )*
+                # C.g:406:2: ( and_expression ( '^' and_expression )* )
+                # C.g:406:4: and_expression ( '^' and_expression )*
                 self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1719)
                 self.and_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:400:19: ( '^' and_expression )*
+                # C.g:406:19: ( '^' and_expression )*
                 while True: #loop60
                     alt60 = 2
                     LA60_0 = self.input.LA(1)
@@ -6379,7 +6385,7 @@ class CParser(Parser):
 
 
                     if alt60 == 1:
-                        # C.g:400:20: '^' and_expression
+                        # C.g:406:20: '^' and_expression
                         self.match(self.input, 83, self.FOLLOW_83_in_exclusive_or_expression1722)
                         if self.failed:
                             return 
@@ -6413,7 +6419,7 @@ class CParser(Parser):
 
 
     # $ANTLR start and_expression
-    # C.g:403:1: and_expression : equality_expression ( '&' equality_expression )* ;
+    # C.g:409:1: and_expression : equality_expression ( '&' equality_expression )* ;
     def and_expression(self, ):
 
         and_expression_StartIndex = self.input.index()
@@ -6422,14 +6428,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 55):
                     return 
 
-                # C.g:404:2: ( equality_expression ( '&' equality_expression )* )
-                # C.g:404:4: equality_expression ( '&' equality_expression )*
+                # C.g:410:2: ( equality_expression ( '&' equality_expression )* )
+                # C.g:410:4: equality_expression ( '&' equality_expression )*
                 self.following.append(self.FOLLOW_equality_expression_in_and_expression1737)
                 self.equality_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:404:24: ( '&' equality_expression )*
+                # C.g:410:24: ( '&' equality_expression )*
                 while True: #loop61
                     alt61 = 2
                     LA61_0 = self.input.LA(1)
@@ -6439,7 +6445,7 @@ class CParser(Parser):
 
 
                     if alt61 == 1:
-                        # C.g:404:25: '&' equality_expression
+                        # C.g:410:25: '&' equality_expression
                         self.match(self.input, 66, self.FOLLOW_66_in_and_expression1740)
                         if self.failed:
                             return 
@@ -6473,7 +6479,7 @@ class CParser(Parser):
 
 
     # $ANTLR start equality_expression
-    # C.g:406:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
+    # C.g:412:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
     def equality_expression(self, ):
 
         equality_expression_StartIndex = self.input.index()
@@ -6482,14 +6488,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 56):
                     return 
 
-                # C.g:407:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
-                # C.g:407:4: relational_expression ( ( '==' | '!=' ) relational_expression )*
+                # C.g:413:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
+                # C.g:413:4: relational_expression ( ( '==' | '!=' ) relational_expression )*
                 self.following.append(self.FOLLOW_relational_expression_in_equality_expression1754)
                 self.relational_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:407:26: ( ( '==' | '!=' ) relational_expression )*
+                # C.g:413:26: ( ( '==' | '!=' ) relational_expression )*
                 while True: #loop62
                     alt62 = 2
                     LA62_0 = self.input.LA(1)
@@ -6499,7 +6505,7 @@ class CParser(Parser):
 
 
                     if alt62 == 1:
-                        # C.g:407:27: ( '==' | '!=' ) relational_expression
+                        # C.g:413:27: ( '==' | '!=' ) relational_expression
                         if (84 <= self.input.LA(1) <= 85):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6547,7 +6553,7 @@ class CParser(Parser):
 
 
     # $ANTLR start relational_expression
-    # C.g:410:1: relational_expression : shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* ;
+    # C.g:416:1: relational_expression : shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* ;
     def relational_expression(self, ):
 
         relational_expression_StartIndex = self.input.index()
@@ -6556,14 +6562,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 57):
                     return 
 
-                # C.g:411:2: ( shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* )
-                # C.g:411:4: shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
+                # C.g:417:2: ( shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )* )
+                # C.g:417:4: shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
                 self.following.append(self.FOLLOW_shift_expression_in_relational_expression1777)
                 self.shift_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:411:21: ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
+                # C.g:417:21: ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*
                 while True: #loop63
                     alt63 = 2
                     LA63_0 = self.input.LA(1)
@@ -6573,7 +6579,7 @@ class CParser(Parser):
 
 
                     if alt63 == 1:
-                        # C.g:411:22: ( '<' | '>' | '<=' | '>=' ) shift_expression
+                        # C.g:417:22: ( '<' | '>' | '<=' | '>=' ) shift_expression
                         if (86 <= self.input.LA(1) <= 89):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6621,7 +6627,7 @@ class CParser(Parser):
 
 
     # $ANTLR start shift_expression
-    # C.g:414:1: shift_expression : additive_expression ( ( '<<' | '>>' ) additive_expression )* ;
+    # C.g:420:1: shift_expression : additive_expression ( ( '<<' | '>>' ) additive_expression )* ;
     def shift_expression(self, ):
 
         shift_expression_StartIndex = self.input.index()
@@ -6630,14 +6636,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 58):
                     return 
 
-                # C.g:415:2: ( additive_expression ( ( '<<' | '>>' ) additive_expression )* )
-                # C.g:415:4: additive_expression ( ( '<<' | '>>' ) additive_expression )*
+                # C.g:421:2: ( additive_expression ( ( '<<' | '>>' ) additive_expression )* )
+                # C.g:421:4: additive_expression ( ( '<<' | '>>' ) additive_expression )*
                 self.following.append(self.FOLLOW_additive_expression_in_shift_expression1803)
                 self.additive_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:415:24: ( ( '<<' | '>>' ) additive_expression )*
+                # C.g:421:24: ( ( '<<' | '>>' ) additive_expression )*
                 while True: #loop64
                     alt64 = 2
                     LA64_0 = self.input.LA(1)
@@ -6647,7 +6653,7 @@ class CParser(Parser):
 
 
                     if alt64 == 1:
-                        # C.g:415:25: ( '<<' | '>>' ) additive_expression
+                        # C.g:421:25: ( '<<' | '>>' ) additive_expression
                         if (90 <= self.input.LA(1) <= 91):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6695,7 +6701,7 @@ class CParser(Parser):
 
 
     # $ANTLR start statement
-    # C.g:420:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );
+    # C.g:426:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );
     def statement(self, ):
 
         statement_StartIndex = self.input.index()
@@ -6704,7 +6710,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 59):
                     return 
 
-                # C.g:421:2: ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement )
+                # C.g:427:2: ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement )
                 alt65 = 7
                 LA65 = self.input.LA(1)
                 if LA65 == IDENTIFIER:
@@ -6721,7 +6727,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("420:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 21, self.input)
+                            nvae = NoViableAltException("426:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 21, self.input)
 
                             raise nvae
 
@@ -6734,7 +6740,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("420:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 1, self.input)
+                        nvae = NoViableAltException("426:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 1, self.input)
 
                         raise nvae
 
@@ -6755,12 +6761,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("420:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 0, self.input)
+                    nvae = NoViableAltException("426:1: statement : ( labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | macro_statement );", 65, 0, self.input)
 
                     raise nvae
 
                 if alt65 == 1:
-                    # C.g:421:4: labeled_statement
+                    # C.g:427:4: labeled_statement
                     self.following.append(self.FOLLOW_labeled_statement_in_statement1827)
                     self.labeled_statement()
                     self.following.pop()
@@ -6769,7 +6775,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 2:
-                    # C.g:422:4: compound_statement
+                    # C.g:428:4: compound_statement
                     self.following.append(self.FOLLOW_compound_statement_in_statement1832)
                     self.compound_statement()
                     self.following.pop()
@@ -6778,7 +6784,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 3:
-                    # C.g:423:4: expression_statement
+                    # C.g:429:4: expression_statement
                     self.following.append(self.FOLLOW_expression_statement_in_statement1837)
                     self.expression_statement()
                     self.following.pop()
@@ -6787,7 +6793,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 4:
-                    # C.g:424:4: selection_statement
+                    # C.g:430:4: selection_statement
                     self.following.append(self.FOLLOW_selection_statement_in_statement1842)
                     self.selection_statement()
                     self.following.pop()
@@ -6796,7 +6802,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 5:
-                    # C.g:425:4: iteration_statement
+                    # C.g:431:4: iteration_statement
                     self.following.append(self.FOLLOW_iteration_statement_in_statement1847)
                     self.iteration_statement()
                     self.following.pop()
@@ -6805,7 +6811,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 6:
-                    # C.g:426:4: jump_statement
+                    # C.g:432:4: jump_statement
                     self.following.append(self.FOLLOW_jump_statement_in_statement1852)
                     self.jump_statement()
                     self.following.pop()
@@ -6814,7 +6820,7 @@ class CParser(Parser):
 
 
                 elif alt65 == 7:
-                    # C.g:427:4: macro_statement
+                    # C.g:433:4: macro_statement
                     self.following.append(self.FOLLOW_macro_statement_in_statement1857)
                     self.macro_statement()
                     self.following.pop()
@@ -6838,7 +6844,7 @@ class CParser(Parser):
 
 
     # $ANTLR start macro_statement
-    # C.g:430:1: macro_statement : IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' ;
+    # C.g:436:1: macro_statement : IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' ;
     def macro_statement(self, ):
 
         macro_statement_StartIndex = self.input.index()
@@ -6847,15 +6853,15 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 60):
                     return 
 
-                # C.g:431:2: ( IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' )
-                # C.g:431:4: IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')'
+                # C.g:437:2: ( IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')' )
+                # C.g:437:4: IDENTIFIER '(' ( IDENTIFIER | ( declaration )* ( statement_list )? ) ')'
                 self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1868)
                 if self.failed:
                     return 
                 self.match(self.input, 51, self.FOLLOW_51_in_macro_statement1870)
                 if self.failed:
                     return 
-                # C.g:431:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )
+                # C.g:437:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )
                 alt68 = 2
                 LA68_0 = self.input.LA(1)
 
@@ -6871,7 +6877,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("431:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 68, 1, self.input)
+                        nvae = NoViableAltException("437:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 68, 1, self.input)
 
                         raise nvae
 
@@ -6882,20 +6888,20 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("431:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 68, 0, self.input)
+                    nvae = NoViableAltException("437:19: ( IDENTIFIER | ( declaration )* ( statement_list )? )", 68, 0, self.input)
 
                     raise nvae
 
                 if alt68 == 1:
-                    # C.g:431:20: IDENTIFIER
+                    # C.g:437:20: IDENTIFIER
                     self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_macro_statement1873)
                     if self.failed:
                         return 
 
 
                 elif alt68 == 2:
-                    # C.g:431:33: ( declaration )* ( statement_list )?
-                    # C.g:431:33: ( declaration )*
+                    # C.g:437:33: ( declaration )* ( statement_list )?
+                    # C.g:437:33: ( declaration )*
                     while True: #loop66
                         alt66 = 2
                         LA66_0 = self.input.LA(1)
@@ -6943,7 +6949,7 @@ class CParser(Parser):
                             break #loop66
 
 
-                    # C.g:431:47: ( statement_list )?
+                    # C.g:437:47: ( statement_list )?
                     alt67 = 2
                     LA67_0 = self.input.LA(1)
 
@@ -6984,7 +6990,7 @@ class CParser(Parser):
 
 
     # $ANTLR start labeled_statement
-    # C.g:434:1: labeled_statement : ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement );
+    # C.g:440:1: labeled_statement : ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement );
     def labeled_statement(self, ):
 
         labeled_statement_StartIndex = self.input.index()
@@ -6993,7 +6999,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 61):
                     return 
 
-                # C.g:435:2: ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement )
+                # C.g:441:2: ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement )
                 alt69 = 3
                 LA69 = self.input.LA(1)
                 if LA69 == IDENTIFIER:
@@ -7007,12 +7013,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("434:1: labeled_statement : ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement );", 69, 0, self.input)
+                    nvae = NoViableAltException("440:1: labeled_statement : ( IDENTIFIER ':' statement | 'case' constant_expression ':' statement | 'default' ':' statement );", 69, 0, self.input)
 
                     raise nvae
 
                 if alt69 == 1:
-                    # C.g:435:4: IDENTIFIER ':' statement
+                    # C.g:441:4: IDENTIFIER ':' statement
                     self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_labeled_statement1897)
                     if self.failed:
                         return 
@@ -7027,7 +7033,7 @@ class CParser(Parser):
 
 
                 elif alt69 == 2:
-                    # C.g:436:4: 'case' constant_expression ':' statement
+                    # C.g:442:4: 'case' constant_expression ':' statement
                     self.match(self.input, 92, self.FOLLOW_92_in_labeled_statement1906)
                     if self.failed:
                         return 
@@ -7047,7 +7053,7 @@ class CParser(Parser):
 
 
                 elif alt69 == 3:
-                    # C.g:437:4: 'default' ':' statement
+                    # C.g:443:4: 'default' ':' statement
                     self.match(self.input, 93, self.FOLLOW_93_in_labeled_statement1917)
                     if self.failed:
                         return 
@@ -7083,7 +7089,7 @@ class CParser(Parser):
 
 
     # $ANTLR start compound_statement
-    # C.g:440:1: compound_statement : '{' ( declaration )* ( statement_list )? '}' ;
+    # C.g:446:1: compound_statement : '{' ( declaration )* ( statement_list )? '}' ;
     def compound_statement(self, ):
 
         retval = self.compound_statement_return()
@@ -7094,12 +7100,12 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 62):
                     return retval
 
-                # C.g:441:2: ( '{' ( declaration )* ( statement_list )? '}' )
-                # C.g:441:4: '{' ( declaration )* ( statement_list )? '}'
+                # C.g:447:2: ( '{' ( declaration )* ( statement_list )? '}' )
+                # C.g:447:4: '{' ( declaration )* ( statement_list )? '}'
                 self.match(self.input, 41, self.FOLLOW_41_in_compound_statement1932)
                 if self.failed:
                     return retval
-                # C.g:441:8: ( declaration )*
+                # C.g:447:8: ( declaration )*
                 while True: #loop70
                     alt70 = 2
                     LA70_0 = self.input.LA(1)
@@ -7147,7 +7153,7 @@ class CParser(Parser):
                         break #loop70
 
 
-                # C.g:441:21: ( statement_list )?
+                # C.g:447:21: ( statement_list )?
                 alt71 = 2
                 LA71_0 = self.input.LA(1)
 
@@ -7187,7 +7193,7 @@ class CParser(Parser):
 
 
     # $ANTLR start statement_list
-    # C.g:444:1: statement_list : ( statement )+ ;
+    # C.g:450:1: statement_list : ( statement )+ ;
     def statement_list(self, ):
 
         statement_list_StartIndex = self.input.index()
@@ -7196,9 +7202,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 63):
                     return 
 
-                # C.g:445:2: ( ( statement )+ )
-                # C.g:445:4: ( statement )+
-                # C.g:445:4: ( statement )+
+                # C.g:451:2: ( ( statement )+ )
+                # C.g:451:4: ( statement )+
+                # C.g:451:4: ( statement )+
                 cnt72 = 0
                 while True: #loop72
                     alt72 = 2
@@ -7256,7 +7262,7 @@ class CParser(Parser):
 
 
     # $ANTLR start expression_statement
-    # C.g:448:1: expression_statement : ( ';' | expression ';' );
+    # C.g:454:1: expression_statement : ( ';' | expression ';' );
     def expression_statement(self, ):
 
         retval = self.expression_statement_return()
@@ -7267,7 +7273,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 64):
                     return retval
 
-                # C.g:449:2: ( ';' | expression ';' )
+                # C.g:455:2: ( ';' | expression ';' )
                 alt73 = 2
                 LA73_0 = self.input.LA(1)
 
@@ -7280,19 +7286,19 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("448:1: expression_statement : ( ';' | expression ';' );", 73, 0, self.input)
+                    nvae = NoViableAltException("454:1: expression_statement : ( ';' | expression ';' );", 73, 0, self.input)
 
                     raise nvae
 
                 if alt73 == 1:
-                    # C.g:449:4: ';'
+                    # C.g:455:4: ';'
                     self.match(self.input, 24, self.FOLLOW_24_in_expression_statement1963)
                     if self.failed:
                         return retval
 
 
                 elif alt73 == 2:
-                    # C.g:450:4: expression ';'
+                    # C.g:456:4: expression ';'
                     self.following.append(self.FOLLOW_expression_in_expression_statement1968)
                     self.expression()
                     self.following.pop()
@@ -7321,7 +7327,7 @@ class CParser(Parser):
 
 
     # $ANTLR start selection_statement
-    # C.g:453:1: selection_statement : ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement );
+    # C.g:459:1: selection_statement : ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement );
     def selection_statement(self, ):
 
         selection_statement_StartIndex = self.input.index()
@@ -7333,7 +7339,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 65):
                     return 
 
-                # C.g:454:2: ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement )
+                # C.g:460:2: ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement )
                 alt75 = 2
                 LA75_0 = self.input.LA(1)
 
@@ -7346,12 +7352,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("453:1: selection_statement : ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement );", 75, 0, self.input)
+                    nvae = NoViableAltException("459:1: selection_statement : ( 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )? | 'switch' '(' expression ')' statement );", 75, 0, self.input)
 
                     raise nvae
 
                 if alt75 == 1:
-                    # C.g:454:4: 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )?
+                    # C.g:460:4: 'if' '(' e= expression ')' statement ( options {k=1; backtrack=false; } : 'else' statement )?
                     self.match(self.input, 94, self.FOLLOW_94_in_selection_statement1981)
                     if self.failed:
                         return 
@@ -7374,14 +7380,14 @@ class CParser(Parser):
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:454:167: ( options {k=1; backtrack=false; } : 'else' statement )?
+                    # C.g:460:167: ( options {k=1; backtrack=false; } : 'else' statement )?
                     alt74 = 2
                     LA74_0 = self.input.LA(1)
 
                     if (LA74_0 == 95) :
                         alt74 = 1
                     if alt74 == 1:
-                        # C.g:454:200: 'else' statement
+                        # C.g:460:200: 'else' statement
                         self.match(self.input, 95, self.FOLLOW_95_in_selection_statement2008)
                         if self.failed:
                             return 
@@ -7396,7 +7402,7 @@ class CParser(Parser):
 
 
                 elif alt75 == 2:
-                    # C.g:455:4: 'switch' '(' expression ')' statement
+                    # C.g:461:4: 'switch' '(' expression ')' statement
                     self.match(self.input, 96, self.FOLLOW_96_in_selection_statement2017)
                     if self.failed:
                         return 
@@ -7434,7 +7440,7 @@ class CParser(Parser):
 
 
     # $ANTLR start iteration_statement
-    # C.g:458:1: iteration_statement : ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement );
+    # C.g:464:1: iteration_statement : ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement );
     def iteration_statement(self, ):
 
         iteration_statement_StartIndex = self.input.index()
@@ -7446,7 +7452,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 66):
                     return 
 
-                # C.g:459:2: ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement )
+                # C.g:465:2: ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement )
                 alt77 = 3
                 LA77 = self.input.LA(1)
                 if LA77 == 97:
@@ -7460,12 +7466,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("458:1: iteration_statement : ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement );", 77, 0, self.input)
+                    nvae = NoViableAltException("464:1: iteration_statement : ( 'while' '(' e= expression ')' statement | 'do' statement 'while' '(' e= expression ')' ';' | 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement );", 77, 0, self.input)
 
                     raise nvae
 
                 if alt77 == 1:
-                    # C.g:459:4: 'while' '(' e= expression ')' statement
+                    # C.g:465:4: 'while' '(' e= expression ')' statement
                     self.match(self.input, 97, self.FOLLOW_97_in_iteration_statement2036)
                     if self.failed:
                         return 
@@ -7491,7 +7497,7 @@ class CParser(Parser):
 
 
                 elif alt77 == 2:
-                    # C.g:460:4: 'do' statement 'while' '(' e= expression ')' ';'
+                    # C.g:466:4: 'do' statement 'while' '(' e= expression ')' ';'
                     self.match(self.input, 98, self.FOLLOW_98_in_iteration_statement2053)
                     if self.failed:
                         return 
@@ -7523,7 +7529,7 @@ class CParser(Parser):
 
 
                 elif alt77 == 3:
-                    # C.g:461:4: 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement
+                    # C.g:467:4: 'for' '(' expression_statement e= expression_statement ( expression )? ')' statement
                     self.match(self.input, 99, self.FOLLOW_99_in_iteration_statement2074)
                     if self.failed:
                         return 
@@ -7540,7 +7546,7 @@ class CParser(Parser):
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:461:58: ( expression )?
+                    # C.g:467:58: ( expression )?
                     alt76 = 2
                     LA76_0 = self.input.LA(1)
 
@@ -7585,7 +7591,7 @@ class CParser(Parser):
 
 
     # $ANTLR start jump_statement
-    # C.g:464:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );
+    # C.g:470:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );
     def jump_statement(self, ):
 
         jump_statement_StartIndex = self.input.index()
@@ -7594,7 +7600,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 67):
                     return 
 
-                # C.g:465:2: ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' )
+                # C.g:471:2: ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' )
                 alt78 = 5
                 LA78 = self.input.LA(1)
                 if LA78 == 100:
@@ -7615,7 +7621,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("464:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );", 78, 4, self.input)
+                        nvae = NoViableAltException("470:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );", 78, 4, self.input)
 
                         raise nvae
 
@@ -7624,12 +7630,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("464:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );", 78, 0, self.input)
+                    nvae = NoViableAltException("470:1: jump_statement : ( 'goto' IDENTIFIER ';' | 'continue' ';' | 'break' ';' | 'return' ';' | 'return' expression ';' );", 78, 0, self.input)
 
                     raise nvae
 
                 if alt78 == 1:
-                    # C.g:465:4: 'goto' IDENTIFIER ';'
+                    # C.g:471:4: 'goto' IDENTIFIER ';'
                     self.match(self.input, 100, self.FOLLOW_100_in_jump_statement2102)
                     if self.failed:
                         return 
@@ -7642,7 +7648,7 @@ class CParser(Parser):
 
 
                 elif alt78 == 2:
-                    # C.g:466:4: 'continue' ';'
+                    # C.g:472:4: 'continue' ';'
                     self.match(self.input, 101, self.FOLLOW_101_in_jump_statement2111)
                     if self.failed:
                         return 
@@ -7652,7 +7658,7 @@ class CParser(Parser):
 
 
                 elif alt78 == 3:
-                    # C.g:467:4: 'break' ';'
+                    # C.g:473:4: 'break' ';'
                     self.match(self.input, 102, self.FOLLOW_102_in_jump_statement2118)
                     if self.failed:
                         return 
@@ -7662,7 +7668,7 @@ class CParser(Parser):
 
 
                 elif alt78 == 4:
-                    # C.g:468:4: 'return' ';'
+                    # C.g:474:4: 'return' ';'
                     self.match(self.input, 103, self.FOLLOW_103_in_jump_statement2125)
                     if self.failed:
                         return 
@@ -7672,7 +7678,7 @@ class CParser(Parser):
 
 
                 elif alt78 == 5:
-                    # C.g:469:4: 'return' expression ';'
+                    # C.g:475:4: 'return' expression ';'
                     self.match(self.input, 103, self.FOLLOW_103_in_jump_statement2132)
                     if self.failed:
                         return 
@@ -7867,8 +7873,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred7
     def synpred7_fragment(self, ):
-        # C.g:90:4: ( declaration_specifiers )
-        # C.g:90:4: declaration_specifiers
+        # C.g:94:4: ( declaration_specifiers )
+        # C.g:94:4: declaration_specifiers
         self.following.append(self.FOLLOW_declaration_specifiers_in_synpred7145)
         self.declaration_specifiers()
         self.following.pop()
@@ -7882,8 +7888,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred10
     def synpred10_fragment(self, ):
-        # C.g:105:18: ( declaration_specifiers )
-        # C.g:105:18: declaration_specifiers
+        # C.g:111:18: ( declaration_specifiers )
+        # C.g:111:18: declaration_specifiers
         self.following.append(self.FOLLOW_declaration_specifiers_in_synpred10195)
         self.declaration_specifiers()
         self.following.pop()
@@ -7897,8 +7903,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred14
     def synpred14_fragment(self, ):
-        # C.g:119:7: ( type_specifier )
-        # C.g:119:7: type_specifier
+        # C.g:125:7: ( type_specifier )
+        # C.g:125:7: type_specifier
         self.following.append(self.FOLLOW_type_specifier_in_synpred14260)
         self.type_specifier()
         self.following.pop()
@@ -7912,8 +7918,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred32
     def synpred32_fragment(self, ):
-        # C.g:151:4: ( IDENTIFIER declarator )
-        # C.g:151:5: IDENTIFIER declarator
+        # C.g:157:4: ( IDENTIFIER declarator )
+        # C.g:157:5: IDENTIFIER declarator
         self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_synpred32423)
         if self.failed:
             return 
@@ -7930,8 +7936,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred38
     def synpred38_fragment(self, ):
-        # C.g:179:23: ( type_specifier )
-        # C.g:179:23: type_specifier
+        # C.g:185:23: ( type_specifier )
+        # C.g:185:23: type_specifier
         self.following.append(self.FOLLOW_type_specifier_in_synpred38549)
         self.type_specifier()
         self.following.pop()
@@ -7945,9 +7951,9 @@ class CParser(Parser):
 
     # $ANTLR start synpred50
     def synpred50_fragment(self, ):
-        # C.g:214:4: ( ( pointer )? direct_declarator )
-        # C.g:214:4: ( pointer )? direct_declarator
-        # C.g:214:4: ( pointer )?
+        # C.g:220:4: ( ( pointer )? direct_declarator )
+        # C.g:220:4: ( pointer )? direct_declarator
+        # C.g:220:4: ( pointer )?
         alt85 = 2
         LA85_0 = self.input.LA(1)
 
@@ -7976,8 +7982,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred51
     def synpred51_fragment(self, ):
-        # C.g:219:15: ( declarator_suffix )
-        # C.g:219:15: declarator_suffix
+        # C.g:225:15: ( declarator_suffix )
+        # C.g:225:15: declarator_suffix
         self.following.append(self.FOLLOW_declarator_suffix_in_synpred51733)
         self.declarator_suffix()
         self.following.pop()
@@ -7991,8 +7997,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred53
     def synpred53_fragment(self, ):
-        # C.g:220:23: ( declarator_suffix )
-        # C.g:220:23: declarator_suffix
+        # C.g:226:23: ( declarator_suffix )
+        # C.g:226:23: declarator_suffix
         self.following.append(self.FOLLOW_declarator_suffix_in_synpred53745)
         self.declarator_suffix()
         self.following.pop()
@@ -8006,8 +8012,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred56
     def synpred56_fragment(self, ):
-        # C.g:226:9: ( '(' parameter_type_list ')' )
-        # C.g:226:9: '(' parameter_type_list ')'
+        # C.g:232:9: ( '(' parameter_type_list ')' )
+        # C.g:232:9: '(' parameter_type_list ')'
         self.match(self.input, 51, self.FOLLOW_51_in_synpred56785)
         if self.failed:
             return 
@@ -8027,8 +8033,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred57
     def synpred57_fragment(self, ):
-        # C.g:227:9: ( '(' identifier_list ')' )
-        # C.g:227:9: '(' identifier_list ')'
+        # C.g:233:9: ( '(' identifier_list ')' )
+        # C.g:233:9: '(' identifier_list ')'
         self.match(self.input, 51, self.FOLLOW_51_in_synpred57799)
         if self.failed:
             return 
@@ -8048,8 +8054,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred58
     def synpred58_fragment(self, ):
-        # C.g:232:8: ( type_qualifier )
-        # C.g:232:8: type_qualifier
+        # C.g:238:8: ( type_qualifier )
+        # C.g:238:8: type_qualifier
         self.following.append(self.FOLLOW_type_qualifier_in_synpred58828)
         self.type_qualifier()
         self.following.pop()
@@ -8063,8 +8069,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred59
     def synpred59_fragment(self, ):
-        # C.g:232:24: ( pointer )
-        # C.g:232:24: pointer
+        # C.g:238:24: ( pointer )
+        # C.g:238:24: pointer
         self.following.append(self.FOLLOW_pointer_in_synpred59831)
         self.pointer()
         self.following.pop()
@@ -8078,12 +8084,12 @@ class CParser(Parser):
 
     # $ANTLR start synpred60
     def synpred60_fragment(self, ):
-        # C.g:232:4: ( '*' ( type_qualifier )+ ( pointer )? )
-        # C.g:232:4: '*' ( type_qualifier )+ ( pointer )?
+        # C.g:238:4: ( '*' ( type_qualifier )+ ( pointer )? )
+        # C.g:238:4: '*' ( type_qualifier )+ ( pointer )?
         self.match(self.input, 55, self.FOLLOW_55_in_synpred60826)
         if self.failed:
             return 
-        # C.g:232:8: ( type_qualifier )+
+        # C.g:238:8: ( type_qualifier )+
         cnt87 = 0
         while True: #loop87
             alt87 = 2
@@ -8116,7 +8122,7 @@ class CParser(Parser):
             cnt87 += 1
 
 
-        # C.g:232:24: ( pointer )?
+        # C.g:238:24: ( pointer )?
         alt88 = 2
         LA88_0 = self.input.LA(1)
 
@@ -8140,8 +8146,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred61
     def synpred61_fragment(self, ):
-        # C.g:233:4: ( '*' pointer )
-        # C.g:233:4: '*' pointer
+        # C.g:239:4: ( '*' pointer )
+        # C.g:239:4: '*' pointer
         self.match(self.input, 55, self.FOLLOW_55_in_synpred61837)
         if self.failed:
             return 
@@ -8158,8 +8164,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred64
     def synpred64_fragment(self, ):
-        # C.g:246:28: ( declarator )
-        # C.g:246:28: declarator
+        # C.g:252:28: ( declarator )
+        # C.g:252:28: declarator
         self.following.append(self.FOLLOW_declarator_in_synpred64894)
         self.declarator()
         self.following.pop()
@@ -8173,8 +8179,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred65
     def synpred65_fragment(self, ):
-        # C.g:246:39: ( abstract_declarator )
-        # C.g:246:39: abstract_declarator
+        # C.g:252:39: ( abstract_declarator )
+        # C.g:252:39: abstract_declarator
         self.following.append(self.FOLLOW_abstract_declarator_in_synpred65896)
         self.abstract_declarator()
         self.following.pop()
@@ -8188,14 +8194,14 @@ class CParser(Parser):
 
     # $ANTLR start synpred68
     def synpred68_fragment(self, ):
-        # C.g:255:4: ( specifier_qualifier_list ( abstract_declarator )? )
-        # C.g:255:4: specifier_qualifier_list ( abstract_declarator )?
+        # C.g:261:4: ( specifier_qualifier_list ( abstract_declarator )? )
+        # C.g:261:4: specifier_qualifier_list ( abstract_declarator )?
         self.following.append(self.FOLLOW_specifier_qualifier_list_in_synpred68928)
         self.specifier_qualifier_list()
         self.following.pop()
         if self.failed:
             return 
-        # C.g:255:29: ( abstract_declarator )?
+        # C.g:261:29: ( abstract_declarator )?
         alt89 = 2
         LA89_0 = self.input.LA(1)
 
@@ -8219,8 +8225,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred69
     def synpred69_fragment(self, ):
-        # C.g:260:12: ( direct_abstract_declarator )
-        # C.g:260:12: direct_abstract_declarator
+        # C.g:266:12: ( direct_abstract_declarator )
+        # C.g:266:12: direct_abstract_declarator
         self.following.append(self.FOLLOW_direct_abstract_declarator_in_synpred69949)
         self.direct_abstract_declarator()
         self.following.pop()
@@ -8234,8 +8240,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred72
     def synpred72_fragment(self, ):
-        # C.g:265:65: ( abstract_declarator_suffix )
-        # C.g:265:65: abstract_declarator_suffix
+        # C.g:271:65: ( abstract_declarator_suffix )
+        # C.g:271:65: abstract_declarator_suffix
         self.following.append(self.FOLLOW_abstract_declarator_suffix_in_synpred72980)
         self.abstract_declarator_suffix()
         self.following.pop()
@@ -8249,8 +8255,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred85
     def synpred85_fragment(self, ):
-        # C.g:300:4: ( '(' type_name ')' cast_expression )
-        # C.g:300:4: '(' type_name ')' cast_expression
+        # C.g:306:4: ( '(' type_name ')' cast_expression )
+        # C.g:306:4: '(' type_name ')' cast_expression
         self.match(self.input, 51, self.FOLLOW_51_in_synpred851154)
         if self.failed:
             return 
@@ -8275,8 +8281,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred90
     def synpred90_fragment(self, ):
-        # C.g:309:4: ( 'sizeof' unary_expression )
-        # C.g:309:4: 'sizeof' unary_expression
+        # C.g:315:4: ( 'sizeof' unary_expression )
+        # C.g:315:4: 'sizeof' unary_expression
         self.match(self.input, 63, self.FOLLOW_63_in_synpred901202)
         if self.failed:
             return 
@@ -8293,8 +8299,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred95
     def synpred95_fragment(self, ):
-        # C.g:319:13: ( '*' IDENTIFIER )
-        # C.g:319:13: '*' IDENTIFIER
+        # C.g:325:13: ( '*' IDENTIFIER )
+        # C.g:325:13: '*' IDENTIFIER
         self.match(self.input, 55, self.FOLLOW_55_in_synpred951321)
         if self.failed:
             return 
@@ -8309,8 +8315,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred112
     def synpred112_fragment(self, ):
-        # C.g:361:4: ( lvalue assignment_operator assignment_expression )
-        # C.g:361:4: lvalue assignment_operator assignment_expression
+        # C.g:367:4: ( lvalue assignment_operator assignment_expression )
+        # C.g:367:4: lvalue assignment_operator assignment_expression
         self.following.append(self.FOLLOW_lvalue_in_synpred1121546)
         self.lvalue()
         self.following.pop()
@@ -8334,8 +8340,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred139
     def synpred139_fragment(self, ):
-        # C.g:423:4: ( expression_statement )
-        # C.g:423:4: expression_statement
+        # C.g:429:4: ( expression_statement )
+        # C.g:429:4: expression_statement
         self.following.append(self.FOLLOW_expression_statement_in_synpred1391837)
         self.expression_statement()
         self.following.pop()
@@ -8349,8 +8355,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred144
     def synpred144_fragment(self, ):
-        # C.g:431:33: ( declaration )
-        # C.g:431:33: declaration
+        # C.g:437:33: ( declaration )
+        # C.g:437:33: declaration
         self.following.append(self.FOLLOW_declaration_in_synpred1441877)
         self.declaration()
         self.following.pop()
@@ -8364,8 +8370,8 @@ class CParser(Parser):
 
     # $ANTLR start synpred148
     def synpred148_fragment(self, ):
-        # C.g:441:8: ( declaration )
-        # C.g:441:8: declaration
+        # C.g:447:8: ( declaration )
+        # C.g:447:8: declaration
         self.following.append(self.FOLLOW_declaration_in_synpred1481934)
         self.declaration()
         self.following.pop()
index 44abbcc..1859d17 100644 (file)
@@ -75,12 +75,13 @@ class FunctionDefinition :
     #   @param  End         The end position tuple.\r
     #   @param  LBPos       The left brace position tuple.\r
     #\r
-    def __init__(self, ModifierStr, DeclStr, Begin, End, LBPos):\r
+    def __init__(self, ModifierStr, DeclStr, Begin, End, LBPos, NamePos):\r
         self.Modifier = ModifierStr\r
         self.Declarator = DeclStr\r
         self.StartPos = Begin\r
         self.EndPos = End\r
-        self.LeftBracePos = LBPos \r
+        self.LeftBracePos = LBPos\r
+        self.NamePos = NamePos\r
 \r
 ## The description of variable declaration and start & end position\r
 #\r
@@ -147,7 +148,7 @@ class TypedefDefinition :
         self.ToType = ToStr\r
         self.StartPos = Begin\r
         self.EndPos = End\r
-        \r
+\r
 class FunctionCalling:\r
     ## The constructor\r
     #\r
index e581b01..d9b0815 100644 (file)
@@ -416,7 +416,7 @@ class CodeFragmentCollector:
         print '/********* FUNCTION DEFINITIONS *********/'\r
         print '/****************************************/'\r
         for func in FileProfile.FunctionDefinitionList:\r
-            print str(func.StartPos) + func.Modifier + ' '+ func.Declarator\r
+            print str(func.StartPos) + func.Modifier + ' '+ func.Declarator + ' ' + str(func.NamePos)\r
             \r
         print '/****************************************/'\r
         print '/************ ENUMERATIONS **************/'\r
index 1b66a4b..c61c77a 100644 (file)
@@ -82,15 +82,44 @@ def GetFunctionList():
     for FuncDef in FileProfile.FunctionDefinitionList:\r
         ParamIdList = []\r
         DeclSplitList = FuncDef.Declarator.split('(')\r
-        FuncName = DeclSplitList[0].strip()\r
+        FuncName = DeclSplitList[0]\r
         ParamStr = DeclSplitList[1].rstrip(')')\r
+        FuncNameLine = FuncDef.NamePos[0]\r
+        FuncNameOffset = FuncDef.NamePos[1]\r
+        LineSkipped = 0\r
+        OffsetSkipped = 0\r
+        Start = 0\r
+        while FuncName.find('\n', Start) != -1:\r
+            LineSkipped += 1\r
+            OffsetSkipped = 0\r
+            Start += FuncName.find('\n', Start)\r
+            Start += 1       \r
+        OffsetSkipped += len(FuncName[Start:])\r
+        OffsetSkipped += 1 #skip '('\r
+        ParamBeginLine = FuncNameLine + LineSkipped\r
+        ParamBeginOffset = OffsetSkipped\r
         for p in ParamStr.split(','):\r
-            RightSpacePos = p.rfind(' ')\r
-            ParamName = p[RightSpacePos + 1:]\r
+            ListP = p.split()\r
+            ParamName = ListP[-1]\r
+            RightSpacePos = p.rfind(ParamName)\r
             ParamModifier = p[0:RightSpacePos]\r
-            IdParam = DataClass.IdentifierClass(-1, ParamModifier, '', ParamName, '', DataClass.MODEL_IDENTIFIER_PARAMETER, -1, -1, FuncDef.StartPos[0],FuncDef.StartPos[1],FuncDef.LeftBracePos[0], FuncDef.LeftBracePos[1])\r
+            \r
+            Start = 0\r
+            while p.find('\n', Start) != -1:\r
+                LineSkipped += 1\r
+                OffsetSkipped = 0\r
+                Start += p.find('\n', Start)\r
+                Start += 1\r
+            OffsetSkipped += len(p[Start:])\r
+            \r
+            ParamEndLine = ParamBeginLine + LineSkipped\r
+            ParamEndOffset = OffsetSkipped\r
+            IdParam = DataClass.IdentifierClass(-1, ParamModifier, '', ParamName, '', DataClass.MODEL_IDENTIFIER_PARAMETER, -1, -1, ParamBeginLine, ParamBeginOffset, ParamEndLine, ParamEndOffset)\r
             ParamIdList.append(IdParam)\r
-        FuncObj = DataClass.FunctionClass(-1, FuncDef.Declarator, FuncDef.Modifier, FuncName, '', FuncDef.StartPos[0],FuncDef.StartPos[1],FuncDef.EndPos[0],FuncDef.EndPos[1], FuncDef.LeftBracePos[0], FuncDef.LeftBracePos[1], -1, ParamIdList, [])\r
+            ParamBeginLine = ParamEndLine\r
+            ParamBeginOffset = OffsetSkipped + 1 #skip ','\r
+            \r
+        FuncObj = DataClass.FunctionClass(-1, FuncDef.Declarator, FuncDef.Modifier, FuncName.strip(), '', FuncDef.StartPos[0],FuncDef.StartPos[1],FuncDef.EndPos[0],FuncDef.EndPos[1], FuncDef.LeftBracePos[0], FuncDef.LeftBracePos[1], -1, ParamIdList, [])\r
         FuncObjList.append(FuncObj)\r
         \r
     return FuncObjList\r
@@ -106,7 +135,7 @@ for dirpath, dirnames, filenames in os.walk(sys.argv[1]):
             model = f.endswith('c') and DataClass.MODEL_FILE_C or DataClass.MODEL_FILE_H\r
             collector = CodeFragmentCollector.CodeFragmentCollector(FullName)\r
             collector.ParseFile()\r
-#            collector.PrintFragments()\r
+            collector.PrintFragments()\r
             BaseName = os.path.basename(f)\r
             DirName = os.path.dirname(FullName)\r
             Ext = os.path.splitext(f)[1].lstrip('.')\r
@@ -116,14 +145,17 @@ for dirpath, dirnames, filenames in os.walk(sys.argv[1]):
             collector.CleanFileProfileBuffer()\r
 \r
 \r
-EdkLogger.SetLevel(EdkLogger.DEBUG_0)\r
+\r
 \r
 Db = Database.Database(Database.DATABASE_PATH)\r
 Db.InitDatabase()\r
 Db.QueryTable(Db.TblDataModel)\r
 \r
 for file in FileObjList:\r
+    EdkLogger.Initialize()\r
+    EdkLogger.SetLevel(EdkLogger.DEBUG_0)\r
     Db.InsertOneFile(file)\r
     Db.UpdateIdentifierBelongsToFunction()\r
+    Db.QueryTable(Db.TblIdentifier)\r
     \r
 print 'Done!'\r