ECC tool:try to use DB interface to add file contents into DB.
authorjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 21 Jan 2008 13:02:01 +0000 (13:02 +0000)
committerjlin16 <jlin16@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 21 Jan 2008 13:02:01 +0000 (13:02 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@963 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/CommonDataClass/DataClass.py
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/FileProfile.py
Source/Python/Ecc/c.py

index 9898a84..c850865 100644 (file)
@@ -33,7 +33,7 @@ MODEL_IDENTIFIER_FUNCTION_HEADER = 2002
 MODEL_IDENTIFIER_COMMENT = 2003\r
 MODEL_IDENTIFIER_PARAMETER = 2004\r
 MODEL_IDENTIFIER_STRUCTURE = 2005\r
-MODEL_IDENTIFIER_IDENTIFIER = 2006\r
+MODEL_IDENTIFIER_VARIABLE = 2006\r
 MODEL_IDENTIFIER_INCLUDE = 2007\r
 MODEL_IDENTIFIER_PREDICATE_EXPRESSION = 2008\r
 MODEL_IDENTIFIER_ENUMERATE = 2009\r
@@ -44,7 +44,8 @@ MODEL_IDENTIFIER_MACRO_IFNDEF = 2013
 MODEL_IDENTIFIER_MACRO_DEFINE = 2014\r
 MODEL_IDENTIFIER_MACRO_ENDIF = 2015\r
 MODEL_IDENTIFIER_MACRO_PROGMA = 2016\r
-\r
+MODEL_IDENTIFIER_FUNCTION_CALLING = 2018\r
+MODEL_IDENTIFIER_TYPEDEF = 2017\r
 \r
 MODEL_EFI_PROTOCOL = 3001\r
 MODEL_EFI_PPI = 3002\r
@@ -84,7 +85,7 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
               ('MODEL_IDENTIFIER_COMMENT', MODEL_IDENTIFIER_COMMENT),\r
               ('MODEL_IDENTIFIER_PARAMETER', MODEL_IDENTIFIER_PARAMETER),\r
               ('MODEL_IDENTIFIER_STRUCTURE', MODEL_IDENTIFIER_STRUCTURE),\r
-              ('MODEL_IDENTIFIER_IDENTIFIER', MODEL_IDENTIFIER_IDENTIFIER),\r
+              ('MODEL_IDENTIFIER_VARIABLE', MODEL_IDENTIFIER_VARIABLE),\r
               ('MODEL_IDENTIFIER_INCLUDE', MODEL_IDENTIFIER_INCLUDE),\r
               ('MODEL_IDENTIFIER_PREDICATE_EXPRESSION', MODEL_IDENTIFIER_PREDICATE_EXPRESSION),\r
               ('MODEL_IDENTIFIER_ENUMERATE', MODEL_IDENTIFIER_ENUMERATE),\r
index 852328d..1a0ccd9 100644 (file)
@@ -33,13 +33,17 @@ 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):\r
-       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\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
        FileProfile.FunctionDefinitionList.append(FuncDef)\r
        \r
     def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
        VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\r
        FileProfile.VariableDeclarationList.append(VarDecl)\r
+    \r
+    def StoreFunctionCalling(self, StartLine, StartOffset, EndLine, EndOffset, FuncName, ParamList):\r
+       FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))\r
+       FileProfile.FunctionCallingList.append(FuncCall)\r
 \r
 }\r
 \r
@@ -71,19 +75,30 @@ function_definition
 scope {\r
   ModifierText;\r
   DeclText;\r
+  LBLine;\r
+  LBOffset;\r
 }\r
 @init {\r
   $function_definition::ModifierText = '';\r
   $function_definition::DeclText = '';\r
+  $function_definition::LBLine = 0;\r
+  $function_definition::LBOffset = 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)\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
 }\r
        :       declaration_specifiers? declarator\r
-               (       declaration+ compound_statement // K&R style\r
-               |       compound_statement                              // ANSI style\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::DeclText = $declarator.text\r
+                   if a != None:\r
+                     $function_definition::LBLine = $a.start.line\r
+                     $function_definition::LBOffset = $a.start.charPositionInLine\r
+                   else:\r
+                     $function_definition::LBLine = $b.start.line\r
+                     $function_definition::LBOffset = $b.start.charPositionInLine\r
+                 }\r
        ;\r
 \r
 declaration\r
@@ -298,8 +313,8 @@ unary_expression
 postfix_expression\r
        :   p=primary_expression\r
         (   '[' expression ']'\r
-        |   '(' ')'//{self.printTokenInfo($p.start.line, $p.start.charPositionInLine, $p.text)}\r
-        |   a='(' c=argument_expression_list b=')' //{self.printTokenInfo($p.start.line, $p.start.charPositionInLine, $p.text)}\r
+        |   '(' a=')'{self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $a.line, $a.charPositionInLine, $p.text, '')}\r
+        |   '(' c=argument_expression_list b=')' {self.StoreFunctionCalling($p.start.line, $p.start.charPositionInLine, $b.line, $b.charPositionInLine, $p.text, $c.text)}\r
         |   '.' IDENTIFIER\r
         |   '*' IDENTIFIER\r
         |   '->' IDENTIFIER\r
index b33c8a1..81074c6 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2007-12-28 14:55:18
+# $ANTLR 3.0.1 C.g 2008-01-21 19:57:31
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -1965,11 +1965,11 @@ class CLexer(Lexer):
         try:
             self.type = IDENTIFIER
 
-            # C.g:458:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:458:4: LETTER ( LETTER | '0' .. '9' )*
+            # C.g:473:2: ( LETTER ( LETTER | '0' .. '9' )* )
+            # C.g:473:4: LETTER ( LETTER | '0' .. '9' )*
             self.mLETTER()
 
-            # C.g:458:11: ( LETTER | '0' .. '9' )*
+            # C.g:473: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:463:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
+            # C.g:478: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:470:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:470:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            # C.g:485:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            # C.g:485:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
             self.match(u'\'')
 
-            # C.g:470:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:485: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("470:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
+                nvae = NoViableAltException("485:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 2, 0, self.input)
 
                 raise nvae
 
             if alt2 == 1:
-                # C.g:470:16: EscapeSequence
+                # C.g:485:16: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt2 == 2:
-                # C.g:470:33: ~ ( '\\'' | '\\\\' )
+                # C.g:485: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:474:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:474:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:474:8: ( 'L' )?
+            # C.g:489:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            # C.g:489:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            # C.g:489:8: ( 'L' )?
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
             if (LA3_0 == u'L') :
                 alt3 = 1
             if alt3 == 1:
-                # C.g:474:9: 'L'
+                # C.g:489:9: 'L'
                 self.match(u'L')
 
 
@@ -2114,7 +2114,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:474:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:489: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:474:21: EscapeSequence
+                    # C.g:489:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt4 == 2:
-                    # C.g:474:38: ~ ( '\\\\' | '\"' )
+                    # C.g:489: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:477:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:477:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            # C.g:492:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            # C.g:492: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:477:29: ( HexDigit )+
+            # C.g:492:29: ( HexDigit )+
             cnt5 = 0
             while True: #loop5
                 alt5 = 2
@@ -2192,7 +2192,7 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:477:29: HexDigit
+                    # C.g:492:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2207,14 +2207,14 @@ class CLexer(Lexer):
                 cnt5 += 1
 
 
-            # C.g:477:39: ( IntegerTypeSuffix )?
+            # C.g:492: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:477:39: IntegerTypeSuffix
+                # C.g:492:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2238,9 +2238,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:479:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:479:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:479:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            # 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' )* )
             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("479:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
+                nvae = NoViableAltException("494:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 8, 0, self.input)
 
                 raise nvae
 
             if alt8 == 1:
-                # C.g:479:20: '0'
+                # C.g:494:20: '0'
                 self.match(u'0')
 
 
 
             elif alt8 == 2:
-                # C.g:479:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:494:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:479:35: ( '0' .. '9' )*
+                # C.g:494: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:479:35: '0' .. '9'
+                        # C.g:494:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2285,14 +2285,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:479:46: ( IntegerTypeSuffix )?
+            # C.g:494: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:479:46: IntegerTypeSuffix
+                # C.g:494:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2316,11 +2316,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:481:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:481:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            # C.g:496:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            # C.g:496:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
-            # C.g:481:21: ( '0' .. '7' )+
+            # C.g:496:21: ( '0' .. '7' )+
             cnt10 = 0
             while True: #loop10
                 alt10 = 2
@@ -2331,7 +2331,7 @@ class CLexer(Lexer):
 
 
                 if alt10 == 1:
-                    # C.g:481:22: '0' .. '7'
+                    # C.g:496:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2346,14 +2346,14 @@ class CLexer(Lexer):
                 cnt10 += 1
 
 
-            # C.g:481:33: ( IntegerTypeSuffix )?
+            # C.g:496: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:481:33: IntegerTypeSuffix
+                # C.g:496:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2375,8 +2375,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:484:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:484:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            # C.g:499:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            # C.g:499: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:488:2: ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? )
+            # C.g:503: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("486:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
+                nvae = NoViableAltException("501:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' )? ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' )? );", 14, 0, self.input)
 
                 raise nvae
 
             if alt14 == 1:
-                # C.g:488:4: ( 'u' | 'U' )? ( 'l' | 'L' )
-                # C.g:488:4: ( 'u' | 'U' )?
+                # C.g:503:4: ( 'u' | 'U' )? ( 'l' | 'L' )
+                # C.g:503:4: ( 'u' | 'U' )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
@@ -2454,7 +2454,7 @@ class CLexer(Lexer):
 
 
             elif alt14 == 2:
-                # C.g:489:4: ( 'u' | 'U' ) ( 'l' | 'L' )?
+                # C.g:504: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:489:15: ( 'l' | 'L' )?
+                # C.g:504: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:493:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            # C.g:508: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:493:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:493:9: ( '0' .. '9' )+
+                # C.g:508:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:508:9: ( '0' .. '9' )+
                 cnt15 = 0
                 while True: #loop15
                     alt15 = 2
@@ -2517,7 +2517,7 @@ class CLexer(Lexer):
 
 
                     if alt15 == 1:
-                        # C.g:493:10: '0' .. '9'
+                        # C.g:508:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2534,7 +2534,7 @@ class CLexer(Lexer):
 
                 self.match(u'.')
 
-                # C.g:493:25: ( '0' .. '9' )*
+                # C.g:508: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:493:26: '0' .. '9'
+                        # C.g:508:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2553,27 +2553,27 @@ class CLexer(Lexer):
                         break #loop16
 
 
-                # C.g:493:37: ( Exponent )?
+                # C.g:508: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:493:37: Exponent
+                    # C.g:508:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:493:47: ( FloatTypeSuffix )?
+                # C.g:508: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:493:47: FloatTypeSuffix
+                    # C.g:508:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2582,10 +2582,10 @@ class CLexer(Lexer):
 
 
             elif alt26 == 2:
-                # C.g:494:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:509:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:494:13: ( '0' .. '9' )+
+                # C.g:509:13: ( '0' .. '9' )+
                 cnt19 = 0
                 while True: #loop19
                     alt19 = 2
@@ -2596,7 +2596,7 @@ class CLexer(Lexer):
 
 
                     if alt19 == 1:
-                        # C.g:494:14: '0' .. '9'
+                        # C.g:509:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2611,27 +2611,27 @@ class CLexer(Lexer):
                     cnt19 += 1
 
 
-                # C.g:494:25: ( Exponent )?
+                # C.g:509: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:494:25: Exponent
+                    # C.g:509:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:494:35: ( FloatTypeSuffix )?
+                # C.g:509: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:494:35: FloatTypeSuffix
+                    # C.g:509:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2640,8 +2640,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 3:
-                # C.g:495:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:495:9: ( '0' .. '9' )+
+                # C.g:510:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:510:9: ( '0' .. '9' )+
                 cnt22 = 0
                 while True: #loop22
                     alt22 = 2
@@ -2652,7 +2652,7 @@ class CLexer(Lexer):
 
 
                     if alt22 == 1:
-                        # C.g:495:10: '0' .. '9'
+                        # C.g:510:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2669,14 +2669,14 @@ class CLexer(Lexer):
 
                 self.mExponent()
 
-                # C.g:495:30: ( FloatTypeSuffix )?
+                # C.g:510: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:495:30: FloatTypeSuffix
+                    # C.g:510:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2685,8 +2685,8 @@ class CLexer(Lexer):
 
 
             elif alt26 == 4:
-                # C.g:496:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:496:9: ( '0' .. '9' )+
+                # C.g:511:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:511:9: ( '0' .. '9' )+
                 cnt24 = 0
                 while True: #loop24
                     alt24 = 2
@@ -2697,7 +2697,7 @@ class CLexer(Lexer):
 
 
                     if alt24 == 1:
-                        # C.g:496:10: '0' .. '9'
+                        # C.g:511:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2712,14 +2712,14 @@ class CLexer(Lexer):
                     cnt24 += 1
 
 
-                # C.g:496:21: ( Exponent )?
+                # C.g:511: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:496:21: Exponent
+                    # C.g:511:21: Exponent
                     self.mExponent()
 
 
@@ -2742,8 +2742,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:500:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:500:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            # C.g:515:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            # C.g:515: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:500:22: ( '+' | '-' )?
+            # C.g:515:22: ( '+' | '-' )?
             alt27 = 2
             LA27_0 = self.input.LA(1)
 
@@ -2773,7 +2773,7 @@ class CLexer(Lexer):
 
 
 
-            # C.g:500:33: ( '0' .. '9' )+
+            # C.g:515:33: ( '0' .. '9' )+
             cnt28 = 0
             while True: #loop28
                 alt28 = 2
@@ -2784,7 +2784,7 @@ class CLexer(Lexer):
 
 
                 if alt28 == 1:
-                    # C.g:500:34: '0' .. '9'
+                    # C.g:515:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
@@ -2815,8 +2815,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:503:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:503:19: ( 'f' | 'F' | 'd' | 'D' )
+            # C.g:518:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            # C.g:518: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:507:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
+            # C.g:522: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("505:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
+                    nvae = NoViableAltException("520:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("505:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
+                nvae = NoViableAltException("520:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 29, 0, self.input)
 
                 raise nvae
 
             if alt29 == 1:
-                # C.g:507:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                # C.g:522: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:508:9: OctalEscape
+                # C.g:523:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -2897,7 +2897,7 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:513:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            # C.g:528: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("511:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
+                    nvae = NoViableAltException("526:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("511:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 30, 0, self.input)
+                nvae = NoViableAltException("526: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:513:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:528:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:513:14: ( '0' .. '3' )
-                # C.g:513:15: '0' .. '3'
+                # C.g:528:14: ( '0' .. '3' )
+                # C.g:528:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:513:25: ( '0' .. '7' )
-                # C.g:513:26: '0' .. '7'
+                # C.g:528:25: ( '0' .. '7' )
+                # C.g:528:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:513:36: ( '0' .. '7' )
-                # C.g:513:37: '0' .. '7'
+                # C.g:528:36: ( '0' .. '7' )
+                # C.g:528:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2961,18 +2961,18 @@ class CLexer(Lexer):
 
 
             elif alt30 == 2:
-                # C.g:514:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:529:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:514:14: ( '0' .. '7' )
-                # C.g:514:15: '0' .. '7'
+                # C.g:529:14: ( '0' .. '7' )
+                # C.g:529:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:514:25: ( '0' .. '7' )
-                # C.g:514:26: '0' .. '7'
+                # C.g:529:25: ( '0' .. '7' )
+                # C.g:529:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -2981,11 +2981,11 @@ class CLexer(Lexer):
 
 
             elif alt30 == 3:
-                # C.g:515:9: '\\\\' ( '0' .. '7' )
+                # C.g:530:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:515:14: ( '0' .. '7' )
-                # C.g:515:15: '0' .. '7'
+                # C.g:530:14: ( '0' .. '7' )
+                # C.g:530:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3006,8 +3006,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:520:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:520:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            # C.g:535:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            # C.g:535: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:523:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:523:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            # C.g:538:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            # C.g:538: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:531:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:531:7: '\\u0003' .. '\\uFFFE'
+            # C.g:546:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:546:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3092,12 +3092,12 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:534:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:534:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:549:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:549:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:534:14: ( options {greedy=false; } : . )*
+            # C.g:549: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:534:42: .
+                    # C.g:549:42: .
                     self.matchAny()
 
 
@@ -3149,12 +3149,12 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:539:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:539:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:554:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:554:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match("//")
 
 
-            # C.g:539:12: (~ ( '\\n' | '\\r' ) )*
+            # C.g:554: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:539:12: ~ ( '\\n' | '\\r' )
+                    # C.g:554: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:539:26: ( '\\r' )?
+            # C.g:554:26: ( '\\r' )?
             alt33 = 2
             LA33_0 = self.input.LA(1)
 
             if (LA33_0 == u'\r') :
                 alt33 = 1
             if alt33 == 1:
-                # C.g:539:26: '\\r'
+                # C.g:554:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3216,11 +3216,11 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:544:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:544:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:559:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:559:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match(u'#')
 
-            # C.g:544:11: (~ ( '\\n' | '\\r' ) )*
+            # C.g:559: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:544:11: ~ ( '\\n' | '\\r' )
+                    # C.g:559: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:544:25: ( '\\r' )?
+            # C.g:559:25: ( '\\r' )?
             alt35 = 2
             LA35_0 = self.input.LA(1)
 
             if (LA35_0 == u'\r') :
                 alt35 = 1
             if alt35 == 1:
-                # C.g:544:25: '\\r'
+                # C.g:559:25: '\\r'
                 self.match(u'\r')
 
 
index a9f2c8d..7243cd9 100644 (file)
@@ -1,4 +1,4 @@
-# $ANTLR 3.0.1 C.g 2007-12-28 14:55:17
+# $ANTLR 3.0.1 C.g 2008-01-21 19:57:30
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
@@ -58,6 +58,8 @@ class function_definition_scope(object):
     def __init__(self):
         self.ModifierText = None
         self.DeclText = None
+        self.LBLine = None
+        self.LBOffset = None
 
 
 class CParser(Parser):
@@ -96,19 +98,23 @@ 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):\r
-       FuncDef = CodeFragment.FunctionDefinition(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\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
        FileProfile.FunctionDefinitionList.append(FuncDef)\r
        \r
     def StoreVariableDeclaration(self, StartLine, StartOffset, EndLine, EndOffset, ModifierText, DeclText):\r
        VarDecl = CodeFragment.VariableDeclaration(ModifierText, DeclText, (StartLine, StartOffset), (EndLine, EndOffset))\r
        FileProfile.VariableDeclarationList.append(VarDecl)\r
     \r
+    def StoreFunctionCalling(self, StartLine, StartOffset, EndLine, EndOffset, FuncName, ParamList):\r
+       FuncCall = CodeFragment.FunctionCalling(FuncName, ParamList, (StartLine, StartOffset), (EndLine, EndOffset))\r
+       FileProfile.FunctionCallingList.append(FuncCall)\r
+    \r
 
 
 
     # $ANTLR start translation_unit
-    # C.g:46:1: translation_unit : ( external_declaration )+ ;
+    # C.g:50:1: translation_unit : ( external_declaration )+ ;
     def translation_unit(self, ):
 
         translation_unit_StartIndex = self.input.index()
@@ -117,9 +123,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 1):
                     return 
 
-                # C.g:47:2: ( ( external_declaration )+ )
-                # C.g:47:4: ( external_declaration )+
-                # C.g:47:4: ( external_declaration )+
+                # C.g:51:2: ( ( external_declaration )+ )
+                # C.g:51:4: ( external_declaration )+
+                # C.g:51:4: ( external_declaration )+
                 cnt1 = 0
                 while True: #loop1
                     alt1 = 2
@@ -171,7 +177,7 @@ class CParser(Parser):
 
 
     # $ANTLR start external_declaration
-    # C.g:58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );
+    # C.g:62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );
     def external_declaration(self, ):
 
         external_declaration_StartIndex = self.input.index()
@@ -180,7 +186,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 2):
                     return 
 
-                # C.g:63:2: ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? )
+                # C.g:67:2: ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? )
                 alt3 = 3
                 LA3_0 = self.input.LA(1)
 
@@ -196,7 +202,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 1, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 1, self.input)
 
                         raise nvae
 
@@ -212,7 +218,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 2, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 2, self.input)
 
                         raise nvae
 
@@ -228,7 +234,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 3, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 3, self.input)
 
                         raise nvae
 
@@ -244,7 +250,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 4, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 4, self.input)
 
                         raise nvae
 
@@ -260,7 +266,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 5, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 5, self.input)
 
                         raise nvae
 
@@ -276,7 +282,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 6, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 6, self.input)
 
                         raise nvae
 
@@ -292,7 +298,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 7, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 7, self.input)
 
                         raise nvae
 
@@ -308,7 +314,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 8, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 8, self.input)
 
                         raise nvae
 
@@ -324,7 +330,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 9, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 9, self.input)
 
                         raise nvae
 
@@ -340,7 +346,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 10, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 10, self.input)
 
                         raise nvae
 
@@ -356,7 +362,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 11, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 11, self.input)
 
                         raise nvae
 
@@ -372,7 +378,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 12, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 12, self.input)
 
                         raise nvae
 
@@ -390,7 +396,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 13, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 13, self.input)
 
                         raise nvae
 
@@ -406,7 +412,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 14, self.input)
+                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 14, self.input)
 
                         raise nvae
 
@@ -421,12 +427,12 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("58:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 0, self.input)
+                    nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 0, self.input)
 
                     raise nvae
 
                 if alt3 == 1:
-                    # C.g:63:4: ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition
+                    # C.g:67:4: ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition
                     self.following.append(self.FOLLOW_function_definition_in_external_declaration103)
                     self.function_definition()
                     self.following.pop()
@@ -435,7 +441,7 @@ class CParser(Parser):
 
 
                 elif alt3 == 2:
-                    # C.g:64:4: declaration
+                    # C.g:68:4: declaration
                     self.following.append(self.FOLLOW_declaration_in_external_declaration108)
                     self.declaration()
                     self.following.pop()
@@ -444,20 +450,20 @@ class CParser(Parser):
 
 
                 elif alt3 == 3:
-                    # C.g:65:4: macro_statement ( ';' )?
+                    # C.g:69:4: macro_statement ( ';' )?
                     self.following.append(self.FOLLOW_macro_statement_in_external_declaration113)
                     self.macro_statement()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:65:20: ( ';' )?
+                    # C.g:69:20: ( ';' )?
                     alt2 = 2
                     LA2_0 = self.input.LA(1)
 
                     if (LA2_0 == 24) :
                         alt2 = 1
                     if alt2 == 1:
-                        # C.g:65:21: ';'
+                        # C.g:69:21: ';'
                         self.match(self.input, 24, self.FOLLOW_24_in_external_declaration116)
                         if self.failed:
                             return 
@@ -488,12 +494,16 @@ class CParser(Parser):
 
 
     # $ANTLR start function_definition
-    # C.g:70:1: function_definition : ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement ) ;
+    # C.g:74:1: function_definition : ( declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) ;
     def function_definition(self, ):
         self.function_definition_stack.append(function_definition_scope())
         retval = self.function_definition_return()
         retval.start = self.input.LT(1)
         function_definition_StartIndex = self.input.index()
+        a = None
+
+        b = None
+
         declaration_specifiers1 = None
 
         declarator2 = None
@@ -502,15 +512,17 @@ class CParser(Parser):
                \r
         self.function_definition_stack[-1].ModifierText =  ''\r
         self.function_definition_stack[-1].DeclText =  ''\r
+        self.function_definition_stack[-1].LBLine =  0\r
+        self.function_definition_stack[-1].LBOffset =  0\r
 
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 3):
                     return retval
 
-                # C.g:82:2: ( ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement ) )
-                # C.g:82:4: ( declaration_specifiers )? declarator ( ( declaration )+ compound_statement | compound_statement )
-                # C.g:82:4: ( declaration_specifiers )?
+                # 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 )?
                 alt4 = 2
                 LA4_0 = self.input.LA(1)
 
@@ -610,7 +622,7 @@ class CParser(Parser):
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:83:3: ( ( declaration )+ compound_statement | compound_statement )
+                # C.g:91:3: ( ( declaration )+ a= compound_statement | b= compound_statement )
                 alt6 = 2
                 LA6_0 = self.input.LA(1)
 
@@ -623,13 +635,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("83:3: ( ( declaration )+ compound_statement | compound_statement )", 6, 0, self.input)
+                    nvae = NoViableAltException("91:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)
 
                     raise nvae
 
                 if alt6 == 1:
-                    # C.g:83:5: ( declaration )+ compound_statement
-                    # C.g:83:5: ( declaration )+
+                    # C.g:91:5: ( declaration )+ a= compound_statement
+                    # C.g:91:5: ( declaration )+
                     cnt5 = 0
                     while True: #loop5
                         alt5 = 2
@@ -662,17 +674,17 @@ class CParser(Parser):
                         cnt5 += 1
 
 
-                    self.following.append(self.FOLLOW_compound_statement_in_function_definition157)
-                    self.compound_statement()
+                    self.following.append(self.FOLLOW_compound_statement_in_function_definition159)
+                    a = self.compound_statement()
                     self.following.pop()
                     if self.failed:
                         return retval
 
 
                 elif alt6 == 2:
-                    # C.g:84:5: compound_statement
-                    self.following.append(self.FOLLOW_compound_statement_in_function_definition164)
-                    self.compound_statement()
+                    # C.g:92:5: b= compound_statement
+                    self.following.append(self.FOLLOW_compound_statement_in_function_definition168)
+                    b = self.compound_statement()
                     self.following.pop()
                     if self.failed:
                         return retval
@@ -681,7 +693,14 @@ 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)
+                    self.function_definition_stack[-1].DeclText = self.input.toString(declarator2.start,declarator2.stop)\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
+                    else:\r
+                      self.function_definition_stack[-1].LBLine = b.start.line\r
+                      self.function_definition_stack[-1].LBOffset = b.start.charPositionInLine\r
+                                 
 
 
 
@@ -690,7 +709,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)\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
 
 
 
@@ -710,7 +729,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration
-    # C.g:89:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );
+    # C.g:104: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()
@@ -731,7 +750,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 4):
                     return 
 
-                # C.g:90:2: (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' )
+                # C.g:105: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)
 
@@ -744,17 +763,17 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("89: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("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)
 
                     raise nvae
 
                 if alt9 == 1:
-                    # C.g:90:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'
+                    # C.g:105: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_declaration187)
+                    self.match(self.input, 25, self.FOLLOW_25_in_declaration191)
                     if self.failed:
                         return 
-                    # C.g:90:17: (b= declaration_specifiers )?
+                    # C.g:105:17: (b= declaration_specifiers )?
                     alt7 = 2
                     LA7_0 = self.input.LA(1)
 
@@ -772,7 +791,7 @@ class CParser(Parser):
                                 alt7 = 1
                     if alt7 == 1:
                         # C.g:0:0: b= declaration_specifiers
-                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration191)
+                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration195)
                         b = self.declaration_specifiers()
                         self.following.pop()
                         if self.failed:
@@ -780,13 +799,13 @@ class CParser(Parser):
 
 
 
-                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration200)
+                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration204)
                     c = self.init_declarator_list()
                     self.following.pop()
                     if self.failed:
                         return 
                     d = self.input.LT(1)
-                    self.match(self.input, 24, self.FOLLOW_24_in_declaration204)
+                    self.match(self.input, 24, self.FOLLOW_24_in_declaration208)
                     if self.failed:
                         return 
                     if self.backtracking == 0:
@@ -800,13 +819,13 @@ class CParser(Parser):
 
 
                 elif alt9 == 2:
-                    # C.g:98:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'
-                    self.following.append(self.FOLLOW_declaration_specifiers_in_declaration218)
+                    # C.g:113: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:98:30: (t= init_declarator_list )?
+                    # C.g:113:30: (t= init_declarator_list )?
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
 
@@ -814,7 +833,7 @@ class CParser(Parser):
                         alt8 = 1
                     if alt8 == 1:
                         # C.g:0:0: t= init_declarator_list
-                        self.following.append(self.FOLLOW_init_declarator_list_in_declaration222)
+                        self.following.append(self.FOLLOW_init_declarator_list_in_declaration226)
                         t = self.init_declarator_list()
                         self.following.pop()
                         if self.failed:
@@ -823,7 +842,7 @@ class CParser(Parser):
 
 
                     e = self.input.LT(1)
-                    self.match(self.input, 24, self.FOLLOW_24_in_declaration227)
+                    self.match(self.input, 24, self.FOLLOW_24_in_declaration231)
                     if self.failed:
                         return 
                     if self.backtracking == 0:
@@ -853,7 +872,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration_specifiers
-    # C.g:102:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
+    # C.g:117:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
     def declaration_specifiers(self, ):
 
         retval = self.declaration_specifiers_return()
@@ -864,9 +883,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 5):
                     return retval
 
-                # C.g:103:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
-                # C.g:103:6: ( storage_class_specifier | type_specifier | type_qualifier )+
-                # C.g:103:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # 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 )+
                 cnt10 = 0
                 while True: #loop10
                     alt10 = 4
@@ -886,8 +905,8 @@ class CParser(Parser):
                         alt10 = 3
 
                     if alt10 == 1:
-                        # C.g:103:10: storage_class_specifier
-                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers248)
+                        # C.g:118:10: storage_class_specifier
+                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers252)
                         self.storage_class_specifier()
                         self.following.pop()
                         if self.failed:
@@ -895,8 +914,8 @@ class CParser(Parser):
 
 
                     elif alt10 == 2:
-                        # C.g:104:7: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers256)
+                        # C.g:119:7: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers260)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -904,8 +923,8 @@ class CParser(Parser):
 
 
                     elif alt10 == 3:
-                        # C.g:105:13: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers270)
+                        # C.g:120:13: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers274)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -953,7 +972,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator_list
-    # C.g:109:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
+    # C.g:124:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
     def init_declarator_list(self, ):
 
         retval = self.init_declarator_list_return()
@@ -964,14 +983,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 6):
                     return retval
 
-                # C.g:110:2: ( init_declarator ( ',' init_declarator )* )
-                # C.g:110:4: init_declarator ( ',' init_declarator )*
-                self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list292)
+                # C.g:125:2: ( init_declarator ( ',' init_declarator )* )
+                # C.g:125: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:110:20: ( ',' init_declarator )*
+                # C.g:125:20: ( ',' init_declarator )*
                 while True: #loop11
                     alt11 = 2
                     LA11_0 = self.input.LA(1)
@@ -981,11 +1000,11 @@ class CParser(Parser):
 
 
                     if alt11 == 1:
-                        # C.g:110:21: ',' init_declarator
-                        self.match(self.input, 26, self.FOLLOW_26_in_init_declarator_list295)
+                        # C.g:125:21: ',' init_declarator
+                        self.match(self.input, 26, self.FOLLOW_26_in_init_declarator_list299)
                         if self.failed:
                             return retval
-                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list297)
+                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list301)
                         self.init_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1017,7 +1036,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator
-    # C.g:113:1: init_declarator : declarator ( '=' initializer )? ;
+    # C.g:128:1: init_declarator : declarator ( '=' initializer )? ;
     def init_declarator(self, ):
 
         init_declarator_StartIndex = self.input.index()
@@ -1026,25 +1045,25 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 7):
                     return 
 
-                # C.g:114:2: ( declarator ( '=' initializer )? )
-                # C.g:114:4: declarator ( '=' initializer )?
-                self.following.append(self.FOLLOW_declarator_in_init_declarator310)
+                # C.g:129:2: ( declarator ( '=' initializer )? )
+                # C.g:129:4: declarator ( '=' initializer )?
+                self.following.append(self.FOLLOW_declarator_in_init_declarator314)
                 self.declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:114:15: ( '=' initializer )?
+                # C.g:129:15: ( '=' initializer )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
                 if (LA12_0 == 27) :
                     alt12 = 1
                 if alt12 == 1:
-                    # C.g:114:16: '=' initializer
-                    self.match(self.input, 27, self.FOLLOW_27_in_init_declarator313)
+                    # C.g:129:16: '=' initializer
+                    self.match(self.input, 27, self.FOLLOW_27_in_init_declarator317)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_in_init_declarator315)
+                    self.following.append(self.FOLLOW_initializer_in_init_declarator319)
                     self.initializer()
                     self.following.pop()
                     if self.failed:
@@ -1071,7 +1090,7 @@ class CParser(Parser):
 
 
     # $ANTLR start storage_class_specifier
-    # C.g:117:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
+    # C.g:132:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' );
     def storage_class_specifier(self, ):
 
         storage_class_specifier_StartIndex = self.input.index()
@@ -1080,7 +1099,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 8):
                     return 
 
-                # C.g:118:2: ( 'extern' | 'static' | 'auto' | 'register' )
+                # C.g:133:2: ( 'extern' | 'static' | 'auto' | 'register' )
                 # C.g:
                 if (28 <= self.input.LA(1) <= 31):
                     self.input.consume();
@@ -1118,7 +1137,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_specifier
-    # C.g:124: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: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 );
     def type_specifier(self, ):
 
         type_specifier_StartIndex = self.input.index()
@@ -1132,7 +1151,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):
                     return 
 
-                # C.g:125:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER declarator )=> type_id )
+                # 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 )
                 alt13 = 12
                 LA13_0 = self.input.LA(1)
 
@@ -1165,76 +1184,76 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("124: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("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)
 
                     raise nvae
 
                 if alt13 == 1:
-                    # C.g:125:4: 'void'
-                    self.match(self.input, 32, self.FOLLOW_32_in_type_specifier355)
+                    # C.g:140:4: 'void'
+                    self.match(self.input, 32, self.FOLLOW_32_in_type_specifier359)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 2:
-                    # C.g:126:4: 'char'
-                    self.match(self.input, 33, self.FOLLOW_33_in_type_specifier360)
+                    # C.g:141:4: 'char'
+                    self.match(self.input, 33, self.FOLLOW_33_in_type_specifier364)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 3:
-                    # C.g:127:4: 'short'
-                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier365)
+                    # C.g:142:4: 'short'
+                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier369)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 4:
-                    # C.g:128:4: 'int'
-                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier370)
+                    # C.g:143:4: 'int'
+                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier374)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 5:
-                    # C.g:129:4: 'long'
-                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier375)
+                    # C.g:144:4: 'long'
+                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier379)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 6:
-                    # C.g:130:4: 'float'
-                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier380)
+                    # C.g:145:4: 'float'
+                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier384)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 7:
-                    # C.g:131:4: 'double'
-                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier385)
+                    # C.g:146:4: 'double'
+                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier389)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 8:
-                    # C.g:132:4: 'signed'
-                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier390)
+                    # C.g:147:4: 'signed'
+                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier394)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 9:
-                    # C.g:133:4: 'unsigned'
-                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier395)
+                    # C.g:148:4: 'unsigned'
+                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier399)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 10:
-                    # C.g:134:4: s= struct_or_union_specifier
-                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier402)
+                    # C.g:149: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()
                     if self.failed:
@@ -1245,8 +1264,8 @@ class CParser(Parser):
 
 
                 elif alt13 == 11:
-                    # C.g:135:4: e= enum_specifier
-                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier411)
+                    # C.g:150:4: e= enum_specifier
+                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier415)
                     e = self.enum_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1257,8 +1276,8 @@ class CParser(Parser):
 
 
                 elif alt13 == 12:
-                    # C.g:136:4: ( IDENTIFIER declarator )=> type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_specifier425)
+                    # C.g:151:4: ( IDENTIFIER declarator )=> type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_specifier429)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -1281,7 +1300,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_id
-    # C.g:139:1: type_id : IDENTIFIER ;
+    # C.g:154:1: type_id : IDENTIFIER ;
     def type_id(self, ):
 
         type_id_StartIndex = self.input.index()
@@ -1290,9 +1309,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):
                     return 
 
-                # C.g:140:5: ( IDENTIFIER )
-                # C.g:140:9: IDENTIFIER
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id441)
+                # C.g:155:5: ( IDENTIFIER )
+                # C.g:155:9: IDENTIFIER
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id445)
                 if self.failed:
                     return 
 
@@ -1320,7 +1339,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union_specifier
-    # C.g:144:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
+    # C.g:159: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()
@@ -1331,7 +1350,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):
                     return retval
 
-                # C.g:146:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
+                # C.g:161:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
                 alt15 = 2
                 LA15_0 = self.input.LA(1)
 
@@ -1350,7 +1369,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("144: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("159: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
 
@@ -1361,7 +1380,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("144: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("159: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
 
@@ -1370,18 +1389,18 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("144: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("159: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:146:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier469)
+                    # C.g:161: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:146:20: ( IDENTIFIER )?
+                    # C.g:161:20: ( IDENTIFIER )?
                     alt14 = 2
                     LA14_0 = self.input.LA(1)
 
@@ -1389,33 +1408,33 @@ class CParser(Parser):
                         alt14 = 1
                     if alt14 == 1:
                         # C.g:0:0: IDENTIFIER
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier471)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier475)
                         if self.failed:
                             return retval
 
 
 
-                    self.match(self.input, 41, self.FOLLOW_41_in_struct_or_union_specifier474)
+                    self.match(self.input, 41, self.FOLLOW_41_in_struct_or_union_specifier478)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier476)
+                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier480)
                     self.struct_declaration_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 42, self.FOLLOW_42_in_struct_or_union_specifier478)
+                    self.match(self.input, 42, self.FOLLOW_42_in_struct_or_union_specifier482)
                     if self.failed:
                         return retval
 
 
                 elif alt15 == 2:
-                    # C.g:147:4: struct_or_union IDENTIFIER
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier483)
+                    # C.g:162: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()
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier485)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier489)
                     if self.failed:
                         return retval
 
@@ -1438,7 +1457,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union
-    # C.g:150:1: struct_or_union : ( 'struct' | 'union' );
+    # C.g:165:1: struct_or_union : ( 'struct' | 'union' );
     def struct_or_union(self, ):
 
         struct_or_union_StartIndex = self.input.index()
@@ -1447,7 +1466,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):
                     return 
 
-                # C.g:151:2: ( 'struct' | 'union' )
+                # C.g:166:2: ( 'struct' | 'union' )
                 # C.g:
                 if (43 <= self.input.LA(1) <= 44):
                     self.input.consume();
@@ -1485,7 +1504,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration_list
-    # C.g:155:1: struct_declaration_list : ( struct_declaration )+ ;
+    # C.g:170:1: struct_declaration_list : ( struct_declaration )+ ;
     def struct_declaration_list(self, ):
 
         struct_declaration_list_StartIndex = self.input.index()
@@ -1494,9 +1513,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):
                     return 
 
-                # C.g:156:2: ( ( struct_declaration )+ )
-                # C.g:156:4: ( struct_declaration )+
-                # C.g:156:4: ( struct_declaration )+
+                # C.g:171:2: ( ( struct_declaration )+ )
+                # C.g:171:4: ( struct_declaration )+
+                # C.g:171:4: ( struct_declaration )+
                 cnt16 = 0
                 while True: #loop16
                     alt16 = 2
@@ -1508,7 +1527,7 @@ class CParser(Parser):
 
                     if alt16 == 1:
                         # C.g:0:0: struct_declaration
-                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list512)
+                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list516)
                         self.struct_declaration()
                         self.following.pop()
                         if self.failed:
@@ -1548,7 +1567,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration
-    # C.g:159:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
+    # C.g:174:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
     def struct_declaration(self, ):
 
         struct_declaration_StartIndex = self.input.index()
@@ -1557,19 +1576,19 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):
                     return 
 
-                # C.g:160:2: ( specifier_qualifier_list struct_declarator_list ';' )
-                # C.g:160:4: specifier_qualifier_list struct_declarator_list ';'
-                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration524)
+                # C.g:175:2: ( specifier_qualifier_list struct_declarator_list ';' )
+                # C.g:175: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()
                 if self.failed:
                     return 
-                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration526)
+                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration530)
                 self.struct_declarator_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.match(self.input, 24, self.FOLLOW_24_in_struct_declaration528)
+                self.match(self.input, 24, self.FOLLOW_24_in_struct_declaration532)
                 if self.failed:
                     return 
 
@@ -1591,7 +1610,7 @@ class CParser(Parser):
 
 
     # $ANTLR start specifier_qualifier_list
-    # C.g:163:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
+    # C.g:178:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
     def specifier_qualifier_list(self, ):
 
         specifier_qualifier_list_StartIndex = self.input.index()
@@ -1600,9 +1619,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):
                     return 
 
-                # C.g:164:2: ( ( type_qualifier | type_specifier )+ )
-                # C.g:164:4: ( type_qualifier | type_specifier )+
-                # C.g:164:4: ( type_qualifier | type_specifier )+
+                # C.g:179:2: ( ( type_qualifier | type_specifier )+ )
+                # C.g:179:4: ( type_qualifier | type_specifier )+
+                # C.g:179:4: ( type_qualifier | type_specifier )+
                 cnt17 = 0
                 while True: #loop17
                     alt17 = 3
@@ -1639,8 +1658,8 @@ class CParser(Parser):
                         alt17 = 2
 
                     if alt17 == 1:
-                        # C.g:164:6: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list541)
+                        # C.g:179:6: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list545)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -1648,8 +1667,8 @@ class CParser(Parser):
 
 
                     elif alt17 == 2:
-                        # C.g:164:23: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list545)
+                        # C.g:179:23: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list549)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1689,7 +1708,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator_list
-    # C.g:167:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
+    # C.g:182:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
     def struct_declarator_list(self, ):
 
         struct_declarator_list_StartIndex = self.input.index()
@@ -1698,14 +1717,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):
                     return 
 
-                # C.g:168:2: ( struct_declarator ( ',' struct_declarator )* )
-                # C.g:168:4: struct_declarator ( ',' struct_declarator )*
-                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list559)
+                # C.g:183:2: ( struct_declarator ( ',' struct_declarator )* )
+                # C.g:183: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:168:22: ( ',' struct_declarator )*
+                # C.g:183:22: ( ',' struct_declarator )*
                 while True: #loop18
                     alt18 = 2
                     LA18_0 = self.input.LA(1)
@@ -1715,11 +1734,11 @@ class CParser(Parser):
 
 
                     if alt18 == 1:
-                        # C.g:168:23: ',' struct_declarator
-                        self.match(self.input, 26, self.FOLLOW_26_in_struct_declarator_list562)
+                        # C.g:183:23: ',' struct_declarator
+                        self.match(self.input, 26, self.FOLLOW_26_in_struct_declarator_list566)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list564)
+                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list568)
                         self.struct_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1749,7 +1768,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator
-    # C.g:171:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
+    # C.g:186:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
     def struct_declarator(self, ):
 
         struct_declarator_StartIndex = self.input.index()
@@ -1758,7 +1777,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):
                     return 
 
-                # C.g:172:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
+                # C.g:187:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
@@ -1771,29 +1790,29 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("171:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
+                    nvae = NoViableAltException("186:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
 
                     raise nvae
 
                 if alt20 == 1:
-                    # C.g:172:4: declarator ( ':' constant_expression )?
-                    self.following.append(self.FOLLOW_declarator_in_struct_declarator577)
+                    # C.g:187:4: declarator ( ':' constant_expression )?
+                    self.following.append(self.FOLLOW_declarator_in_struct_declarator581)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:172:15: ( ':' constant_expression )?
+                    # C.g:187:15: ( ':' constant_expression )?
                     alt19 = 2
                     LA19_0 = self.input.LA(1)
 
                     if (LA19_0 == 45) :
                         alt19 = 1
                     if alt19 == 1:
-                        # C.g:172:16: ':' constant_expression
-                        self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator580)
+                        # C.g:187:16: ':' constant_expression
+                        self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator584)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator582)
+                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator586)
                         self.constant_expression()
                         self.following.pop()
                         if self.failed:
@@ -1804,11 +1823,11 @@ class CParser(Parser):
 
 
                 elif alt20 == 2:
-                    # C.g:173:4: ':' constant_expression
-                    self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator589)
+                    # C.g:188:4: ':' constant_expression
+                    self.match(self.input, 45, self.FOLLOW_45_in_struct_declarator593)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator591)
+                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator595)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -1837,7 +1856,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enum_specifier
-    # C.g:176:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
+    # C.g:191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );
     def enum_specifier(self, ):
 
         retval = self.enum_specifier_return()
@@ -1848,7 +1867,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):
                     return retval
 
-                # C.g:178:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
+                # C.g:193:2: ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER )
                 alt21 = 3
                 LA21_0 = self.input.LA(1)
 
@@ -1867,7 +1886,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("176:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 2, self.input)
+                            nvae = NoViableAltException("191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 2, self.input)
 
                             raise nvae
 
@@ -1878,7 +1897,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("176:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 1, self.input)
+                        nvae = NoViableAltException("191:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 1, self.input)
 
                         raise nvae
 
@@ -1887,55 +1906,55 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("176:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list '}' | 'enum' IDENTIFIER '{' enumerator_list '}' | 'enum' IDENTIFIER );", 21, 0, self.input)
+                    nvae = NoViableAltException("191: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:178:4: 'enum' '{' enumerator_list '}'
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier609)
+                    # C.g:193:4: 'enum' '{' enumerator_list '}'
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier613)
                     if self.failed:
                         return retval
-                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier611)
+                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier615)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier613)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier617)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier615)
+                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier619)
                     if self.failed:
                         return retval
 
 
                 elif alt21 == 2:
-                    # C.g:179:4: 'enum' IDENTIFIER '{' enumerator_list '}'
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier620)
+                    # C.g:194:4: 'enum' IDENTIFIER '{' enumerator_list '}'
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier624)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier622)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier626)
                     if self.failed:
                         return retval
-                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier624)
+                    self.match(self.input, 41, self.FOLLOW_41_in_enum_specifier628)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier626)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier630)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier628)
+                    self.match(self.input, 42, self.FOLLOW_42_in_enum_specifier632)
                     if self.failed:
                         return retval
 
 
                 elif alt21 == 3:
-                    # C.g:180:4: 'enum' IDENTIFIER
-                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier633)
+                    # C.g:195:4: 'enum' IDENTIFIER
+                    self.match(self.input, 46, self.FOLLOW_46_in_enum_specifier637)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier635)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier639)
                     if self.failed:
                         return retval
 
@@ -1958,7 +1977,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator_list
-    # C.g:183:1: enumerator_list : enumerator ( ',' enumerator )* ;
+    # C.g:198:1: enumerator_list : enumerator ( ',' enumerator )* ;
     def enumerator_list(self, ):
 
         enumerator_list_StartIndex = self.input.index()
@@ -1967,14 +1986,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):
                     return 
 
-                # C.g:184:2: ( enumerator ( ',' enumerator )* )
-                # C.g:184:4: enumerator ( ',' enumerator )*
-                self.following.append(self.FOLLOW_enumerator_in_enumerator_list646)
+                # C.g:199:2: ( enumerator ( ',' enumerator )* )
+                # C.g:199:4: enumerator ( ',' enumerator )*
+                self.following.append(self.FOLLOW_enumerator_in_enumerator_list650)
                 self.enumerator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:184:15: ( ',' enumerator )*
+                # C.g:199:15: ( ',' enumerator )*
                 while True: #loop22
                     alt22 = 2
                     LA22_0 = self.input.LA(1)
@@ -1984,11 +2003,11 @@ class CParser(Parser):
 
 
                     if alt22 == 1:
-                        # C.g:184:16: ',' enumerator
-                        self.match(self.input, 26, self.FOLLOW_26_in_enumerator_list649)
+                        # C.g:199:16: ',' enumerator
+                        self.match(self.input, 26, self.FOLLOW_26_in_enumerator_list653)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list651)
+                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list655)
                         self.enumerator()
                         self.following.pop()
                         if self.failed:
@@ -2018,7 +2037,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator
-    # C.g:187:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
+    # C.g:202:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
     def enumerator(self, ):
 
         enumerator_StartIndex = self.input.index()
@@ -2027,23 +2046,23 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):
                     return 
 
-                # C.g:188:2: ( IDENTIFIER ( '=' constant_expression )? )
-                # C.g:188:4: IDENTIFIER ( '=' constant_expression )?
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator664)
+                # C.g:203:2: ( IDENTIFIER ( '=' constant_expression )? )
+                # C.g:203:4: IDENTIFIER ( '=' constant_expression )?
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator668)
                 if self.failed:
                     return 
-                # C.g:188:15: ( '=' constant_expression )?
+                # C.g:203:15: ( '=' constant_expression )?
                 alt23 = 2
                 LA23_0 = self.input.LA(1)
 
                 if (LA23_0 == 27) :
                     alt23 = 1
                 if alt23 == 1:
-                    # C.g:188:16: '=' constant_expression
-                    self.match(self.input, 27, self.FOLLOW_27_in_enumerator667)
+                    # C.g:203:16: '=' constant_expression
+                    self.match(self.input, 27, self.FOLLOW_27_in_enumerator671)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_enumerator669)
+                    self.following.append(self.FOLLOW_constant_expression_in_enumerator673)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -2070,7 +2089,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_qualifier
-    # C.g:191:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
+    # C.g:206:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' );
     def type_qualifier(self, ):
 
         type_qualifier_StartIndex = self.input.index()
@@ -2079,7 +2098,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):
                     return 
 
-                # C.g:192:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
+                # C.g:207:2: ( 'const' | 'volatile' | 'IN' | 'OUT' )
                 # C.g:
                 if (47 <= self.input.LA(1) <= 50):
                     self.input.consume();
@@ -2123,7 +2142,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator
-    # C.g:198:1: declarator : ( ( pointer )? direct_declarator | pointer );
+    # C.g:213:1: declarator : ( ( pointer )? direct_declarator | pointer );
     def declarator(self, ):
 
         retval = self.declarator_return()
@@ -2134,7 +2153,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):
                     return retval
 
-                # C.g:199:2: ( ( pointer )? direct_declarator | pointer )
+                # C.g:214:2: ( ( pointer )? direct_declarator | pointer )
                 alt25 = 2
                 LA25_0 = self.input.LA(1)
 
@@ -2150,7 +2169,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("198:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 1, self.input)
+                        nvae = NoViableAltException("213:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 1, self.input)
 
                         raise nvae
 
@@ -2161,13 +2180,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("198:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 0, self.input)
+                    nvae = NoViableAltException("213:1: declarator : ( ( pointer )? direct_declarator | pointer );", 25, 0, self.input)
 
                     raise nvae
 
                 if alt25 == 1:
-                    # C.g:199:4: ( pointer )? direct_declarator
-                    # C.g:199:4: ( pointer )?
+                    # C.g:214:4: ( pointer )? direct_declarator
+                    # C.g:214:4: ( pointer )?
                     alt24 = 2
                     LA24_0 = self.input.LA(1)
 
@@ -2175,7 +2194,7 @@ class CParser(Parser):
                         alt24 = 1
                     if alt24 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_declarator708)
+                        self.following.append(self.FOLLOW_pointer_in_declarator712)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -2183,7 +2202,7 @@ class CParser(Parser):
 
 
 
-                    self.following.append(self.FOLLOW_direct_declarator_in_declarator711)
+                    self.following.append(self.FOLLOW_direct_declarator_in_declarator715)
                     self.direct_declarator()
                     self.following.pop()
                     if self.failed:
@@ -2191,8 +2210,8 @@ class CParser(Parser):
 
 
                 elif alt25 == 2:
-                    # C.g:200:4: pointer
-                    self.following.append(self.FOLLOW_pointer_in_declarator716)
+                    # C.g:215:4: pointer
+                    self.following.append(self.FOLLOW_pointer_in_declarator720)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -2217,7 +2236,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_declarator
-    # C.g:203:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
+    # C.g:218:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );
     def direct_declarator(self, ):
 
         direct_declarator_StartIndex = self.input.index()
@@ -2226,7 +2245,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
                     return 
 
-                # C.g:204:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
+                # C.g:219:2: ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ )
                 alt28 = 2
                 LA28_0 = self.input.LA(1)
 
@@ -2239,16 +2258,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("203:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 28, 0, self.input)
+                    nvae = NoViableAltException("218:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' declarator ')' ( declarator_suffix )+ );", 28, 0, self.input)
 
                     raise nvae
 
                 if alt28 == 1:
-                    # C.g:204:4: IDENTIFIER ( declarator_suffix )*
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator727)
+                    # C.g:219:4: IDENTIFIER ( declarator_suffix )*
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator731)
                     if self.failed:
                         return 
-                    # C.g:204:15: ( declarator_suffix )*
+                    # C.g:219:15: ( declarator_suffix )*
                     while True: #loop26
                         alt26 = 2
                         LA26_0 = self.input.LA(1)
@@ -2424,7 +2443,7 @@ class CParser(Parser):
 
                         if alt26 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator729)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator733)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -2438,19 +2457,19 @@ class CParser(Parser):
 
 
                 elif alt28 == 2:
-                    # C.g:205:4: '(' declarator ')' ( declarator_suffix )+
-                    self.match(self.input, 51, self.FOLLOW_51_in_direct_declarator735)
+                    # C.g:220:4: '(' declarator ')' ( declarator_suffix )+
+                    self.match(self.input, 51, self.FOLLOW_51_in_direct_declarator739)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_declarator_in_direct_declarator737)
+                    self.following.append(self.FOLLOW_declarator_in_direct_declarator741)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_direct_declarator739)
+                    self.match(self.input, 52, self.FOLLOW_52_in_direct_declarator743)
                     if self.failed:
                         return 
-                    # C.g:205:23: ( declarator_suffix )+
+                    # C.g:220:23: ( declarator_suffix )+
                     cnt27 = 0
                     while True: #loop27
                         alt27 = 2
@@ -2627,7 +2646,7 @@ class CParser(Parser):
 
                         if alt27 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator741)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator745)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -2666,7 +2685,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator_suffix
-    # C.g:208:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
+    # C.g:223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
     def declarator_suffix(self, ):
 
         declarator_suffix_StartIndex = self.input.index()
@@ -2675,7 +2694,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 24):
                     return 
 
-                # C.g:209:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
+                # C.g:224:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
                 alt29 = 5
                 LA29_0 = self.input.LA(1)
 
@@ -2691,7 +2710,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("208:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 1, self.input)
+                        nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 1, self.input)
 
                         raise nvae
 
@@ -2711,7 +2730,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("208:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 12, self.input)
+                            nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 12, self.input)
 
                             raise nvae
 
@@ -2722,7 +2741,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("208:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 2, self.input)
+                        nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 2, self.input)
 
                         raise nvae
 
@@ -2731,71 +2750,71 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("208:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 0, self.input)
+                    nvae = NoViableAltException("223:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 29, 0, self.input)
 
                     raise nvae
 
                 if alt29 == 1:
-                    # C.g:209:6: '[' constant_expression ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix755)
+                    # C.g:224:6: '[' constant_expression ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix759)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix757)
+                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix761)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix759)
+                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix763)
                     if self.failed:
                         return 
 
 
                 elif alt29 == 2:
-                    # C.g:210:9: '[' ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix769)
+                    # C.g:225:9: '[' ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_declarator_suffix773)
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix771)
+                    self.match(self.input, 54, self.FOLLOW_54_in_declarator_suffix775)
                     if self.failed:
                         return 
 
 
                 elif alt29 == 3:
-                    # C.g:211:9: '(' parameter_type_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix781)
+                    # C.g:226:9: '(' parameter_type_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix785)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix783)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix787)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix785)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix789)
                     if self.failed:
                         return 
 
 
                 elif alt29 == 4:
-                    # C.g:212:9: '(' identifier_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix795)
+                    # C.g:227:9: '(' identifier_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix799)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix797)
+                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix801)
                     self.identifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix799)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix803)
                     if self.failed:
                         return 
 
 
                 elif alt29 == 5:
-                    # C.g:213:9: '(' ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix809)
+                    # C.g:228:9: '(' ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_declarator_suffix813)
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix811)
+                    self.match(self.input, 52, self.FOLLOW_52_in_declarator_suffix815)
                     if self.failed:
                         return 
 
@@ -2816,7 +2835,7 @@ class CParser(Parser):
 
 
     # $ANTLR start pointer
-    # C.g:216:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
+    # C.g:231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
     def pointer(self, ):
 
         pointer_StartIndex = self.input.index()
@@ -2825,7 +2844,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 25):
                     return 
 
-                # C.g:217:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
+                # C.g:232:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
                 alt32 = 3
                 LA32_0 = self.input.LA(1)
 
@@ -2843,7 +2862,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("216:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 2, self.input)
+                            nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 2, self.input)
 
                             raise nvae
 
@@ -2861,7 +2880,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("216:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 18, self.input)
+                            nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 18, self.input)
 
                             raise nvae
 
@@ -2870,7 +2889,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("216:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 1, self.input)
+                        nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 1, self.input)
 
                         raise nvae
 
@@ -2879,16 +2898,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("216:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 0, self.input)
+                    nvae = NoViableAltException("231:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 32, 0, self.input)
 
                     raise nvae
 
                 if alt32 == 1:
-                    # C.g:217:4: '*' ( type_qualifier )+ ( pointer )?
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer822)
+                    # C.g:232:4: '*' ( type_qualifier )+ ( pointer )?
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer826)
                     if self.failed:
                         return 
-                    # C.g:217:8: ( type_qualifier )+
+                    # C.g:232:8: ( type_qualifier )+
                     cnt30 = 0
                     while True: #loop30
                         alt30 = 2
@@ -2905,7 +2924,7 @@ class CParser(Parser):
 
                         if alt30 == 1:
                             # C.g:0:0: type_qualifier
-                            self.following.append(self.FOLLOW_type_qualifier_in_pointer824)
+                            self.following.append(self.FOLLOW_type_qualifier_in_pointer828)
                             self.type_qualifier()
                             self.following.pop()
                             if self.failed:
@@ -2926,7 +2945,7 @@ class CParser(Parser):
                         cnt30 += 1
 
 
-                    # C.g:217:24: ( pointer )?
+                    # C.g:232:24: ( pointer )?
                     alt31 = 2
                     LA31_0 = self.input.LA(1)
 
@@ -2937,7 +2956,7 @@ class CParser(Parser):
                             alt31 = 1
                     if alt31 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_pointer827)
+                        self.following.append(self.FOLLOW_pointer_in_pointer831)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -2948,11 +2967,11 @@ class CParser(Parser):
 
 
                 elif alt32 == 2:
-                    # C.g:218:4: '*' pointer
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer833)
+                    # C.g:233:4: '*' pointer
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer837)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_pointer_in_pointer835)
+                    self.following.append(self.FOLLOW_pointer_in_pointer839)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -2960,8 +2979,8 @@ class CParser(Parser):
 
 
                 elif alt32 == 3:
-                    # C.g:219:4: '*'
-                    self.match(self.input, 55, self.FOLLOW_55_in_pointer840)
+                    # C.g:234:4: '*'
+                    self.match(self.input, 55, self.FOLLOW_55_in_pointer844)
                     if self.failed:
                         return 
 
@@ -2982,7 +3001,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_type_list
-    # C.g:222:1: parameter_type_list : parameter_list ( ',' '...' )? ;
+    # C.g:237:1: parameter_type_list : parameter_list ( ',' '...' )? ;
     def parameter_type_list(self, ):
 
         parameter_type_list_StartIndex = self.input.index()
@@ -2991,25 +3010,25 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 26):
                     return 
 
-                # C.g:223:2: ( parameter_list ( ',' '...' )? )
-                # C.g:223:4: parameter_list ( ',' '...' )?
-                self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list851)
+                # C.g:238:2: ( parameter_list ( ',' '...' )? )
+                # C.g:238: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:223:19: ( ',' '...' )?
+                # C.g:238:19: ( ',' '...' )?
                 alt33 = 2
                 LA33_0 = self.input.LA(1)
 
                 if (LA33_0 == 26) :
                     alt33 = 1
                 if alt33 == 1:
-                    # C.g:223:20: ',' '...'
-                    self.match(self.input, 26, self.FOLLOW_26_in_parameter_type_list854)
+                    # C.g:238:20: ',' '...'
+                    self.match(self.input, 26, self.FOLLOW_26_in_parameter_type_list858)
                     if self.failed:
                         return 
-                    self.match(self.input, 56, self.FOLLOW_56_in_parameter_type_list856)
+                    self.match(self.input, 56, self.FOLLOW_56_in_parameter_type_list860)
                     if self.failed:
                         return 
 
@@ -3034,7 +3053,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_list
-    # C.g:226:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
+    # C.g:241:1: parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
     def parameter_list(self, ):
 
         parameter_list_StartIndex = self.input.index()
@@ -3043,14 +3062,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 27):
                     return 
 
-                # C.g:227:2: ( parameter_declaration ( ',' parameter_declaration )* )
-                # C.g:227:4: parameter_declaration ( ',' parameter_declaration )*
-                self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list869)
+                # C.g:242:2: ( parameter_declaration ( ',' parameter_declaration )* )
+                # C.g:242: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:227:26: ( ',' parameter_declaration )*
+                # C.g:242:26: ( ',' parameter_declaration )*
                 while True: #loop34
                     alt34 = 2
                     LA34_0 = self.input.LA(1)
@@ -3065,11 +3084,11 @@ class CParser(Parser):
 
 
                     if alt34 == 1:
-                        # C.g:227:27: ',' parameter_declaration
-                        self.match(self.input, 26, self.FOLLOW_26_in_parameter_list872)
+                        # C.g:242:27: ',' parameter_declaration
+                        self.match(self.input, 26, self.FOLLOW_26_in_parameter_list876)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list874)
+                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list878)
                         self.parameter_declaration()
                         self.following.pop()
                         if self.failed:
@@ -3099,7 +3118,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_declaration
-    # C.g:230:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
+    # C.g:245:1: parameter_declaration : declaration_specifiers ( declarator | abstract_declarator )+ ;
     def parameter_declaration(self, ):
 
         parameter_declaration_StartIndex = self.input.index()
@@ -3108,14 +3127,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 28):
                     return 
 
-                # C.g:231:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
-                # C.g:231:4: declaration_specifiers ( declarator | abstract_declarator )+
-                self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration887)
+                # C.g:246:2: ( declaration_specifiers ( declarator | abstract_declarator )+ )
+                # C.g:246: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:231:27: ( declarator | abstract_declarator )+
+                # C.g:246:27: ( declarator | abstract_declarator )+
                 cnt35 = 0
                 while True: #loop35
                     alt35 = 3
@@ -3167,8 +3186,8 @@ class CParser(Parser):
                         alt35 = 2
 
                     if alt35 == 1:
-                        # C.g:231:28: declarator
-                        self.following.append(self.FOLLOW_declarator_in_parameter_declaration890)
+                        # C.g:246:28: declarator
+                        self.following.append(self.FOLLOW_declarator_in_parameter_declaration894)
                         self.declarator()
                         self.following.pop()
                         if self.failed:
@@ -3176,8 +3195,8 @@ class CParser(Parser):
 
 
                     elif alt35 == 2:
-                        # C.g:231:39: abstract_declarator
-                        self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration892)
+                        # C.g:246:39: abstract_declarator
+                        self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration896)
                         self.abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3217,7 +3236,7 @@ class CParser(Parser):
 
 
     # $ANTLR start identifier_list
-    # C.g:234:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
+    # C.g:249:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
     def identifier_list(self, ):
 
         identifier_list_StartIndex = self.input.index()
@@ -3226,12 +3245,12 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 29):
                     return 
 
-                # C.g:235:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
-                # C.g:235:4: IDENTIFIER ( ',' IDENTIFIER )*
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list905)
+                # C.g:250:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
+                # C.g:250:4: IDENTIFIER ( ',' IDENTIFIER )*
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list909)
                 if self.failed:
                     return 
-                # C.g:236:2: ( ',' IDENTIFIER )*
+                # C.g:251:2: ( ',' IDENTIFIER )*
                 while True: #loop36
                     alt36 = 2
                     LA36_0 = self.input.LA(1)
@@ -3241,11 +3260,11 @@ class CParser(Parser):
 
 
                     if alt36 == 1:
-                        # C.g:236:3: ',' IDENTIFIER
-                        self.match(self.input, 26, self.FOLLOW_26_in_identifier_list909)
+                        # C.g:251:3: ',' IDENTIFIER
+                        self.match(self.input, 26, self.FOLLOW_26_in_identifier_list913)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list911)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list915)
                         if self.failed:
                             return 
 
@@ -3273,7 +3292,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_name
-    # C.g:239:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
+    # C.g:254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
     def type_name(self, ):
 
         type_name_StartIndex = self.input.index()
@@ -3282,7 +3301,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 30):
                     return 
 
-                # C.g:240:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
+                # C.g:255:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
                 alt38 = 2
                 LA38_0 = self.input.LA(1)
 
@@ -3300,7 +3319,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("239:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 13, self.input)
+                        nvae = NoViableAltException("254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 13, self.input)
 
                         raise nvae
 
@@ -3309,18 +3328,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("239:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 0, self.input)
+                    nvae = NoViableAltException("254:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 38, 0, self.input)
 
                     raise nvae
 
                 if alt38 == 1:
-                    # C.g:240:4: specifier_qualifier_list ( abstract_declarator )?
-                    self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name924)
+                    # C.g:255: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:240:29: ( abstract_declarator )?
+                    # C.g:255:29: ( abstract_declarator )?
                     alt37 = 2
                     LA37_0 = self.input.LA(1)
 
@@ -3328,7 +3347,7 @@ class CParser(Parser):
                         alt37 = 1
                     if alt37 == 1:
                         # C.g:0:0: abstract_declarator
-                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name926)
+                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name930)
                         self.abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3339,8 +3358,8 @@ class CParser(Parser):
 
 
                 elif alt38 == 2:
-                    # C.g:241:4: type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_name932)
+                    # C.g:256:4: type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_name936)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -3363,7 +3382,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator
-    # C.g:244:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
+    # C.g:259:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
     def abstract_declarator(self, ):
 
         abstract_declarator_StartIndex = self.input.index()
@@ -3372,7 +3391,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 31):
                     return 
 
-                # C.g:245:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
+                # C.g:260:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
                 alt40 = 2
                 LA40_0 = self.input.LA(1)
 
@@ -3385,18 +3404,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("244:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 40, 0, self.input)
+                    nvae = NoViableAltException("259:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 40, 0, self.input)
 
                     raise nvae
 
                 if alt40 == 1:
-                    # C.g:245:4: pointer ( direct_abstract_declarator )?
-                    self.following.append(self.FOLLOW_pointer_in_abstract_declarator943)
+                    # C.g:260: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:245:12: ( direct_abstract_declarator )?
+                    # C.g:260:12: ( direct_abstract_declarator )?
                     alt39 = 2
                     LA39_0 = self.input.LA(1)
 
@@ -3536,7 +3555,7 @@ class CParser(Parser):
                                 alt39 = 1
                     if alt39 == 1:
                         # C.g:0:0: direct_abstract_declarator
-                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator945)
+                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator949)
                         self.direct_abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3547,8 +3566,8 @@ class CParser(Parser):
 
 
                 elif alt40 == 2:
-                    # C.g:246:4: direct_abstract_declarator
-                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator951)
+                    # C.g:261:4: direct_abstract_declarator
+                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator955)
                     self.direct_abstract_declarator()
                     self.following.pop()
                     if self.failed:
@@ -3571,7 +3590,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_abstract_declarator
-    # C.g:249:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
+    # C.g:264:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
     def direct_abstract_declarator(self, ):
 
         direct_abstract_declarator_StartIndex = self.input.index()
@@ -3580,9 +3599,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 32):
                     return 
 
-                # C.g:250:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
-                # C.g:250:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
-                # C.g:250:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
+                # 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 )
                 alt41 = 2
                 LA41_0 = self.input.LA(1)
 
@@ -3598,7 +3617,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("250:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 1, self.input)
+                        nvae = NoViableAltException("265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 1, self.input)
 
                         raise nvae
 
@@ -3609,28 +3628,28 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("250:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 0, self.input)
+                    nvae = NoViableAltException("265:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 41, 0, self.input)
 
                     raise nvae
 
                 if alt41 == 1:
-                    # C.g:250:6: '(' abstract_declarator ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_direct_abstract_declarator964)
+                    # C.g:265:6: '(' abstract_declarator ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_direct_abstract_declarator968)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator966)
+                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator970)
                     self.abstract_declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_direct_abstract_declarator968)
+                    self.match(self.input, 52, self.FOLLOW_52_in_direct_abstract_declarator972)
                     if self.failed:
                         return 
 
 
                 elif alt41 == 2:
-                    # C.g:250:36: abstract_declarator_suffix
-                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator972)
+                    # C.g:265:36: abstract_declarator_suffix
+                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator976)
                     self.abstract_declarator_suffix()
                     self.following.pop()
                     if self.failed:
@@ -3638,7 +3657,7 @@ class CParser(Parser):
 
 
 
-                # C.g:250:65: ( abstract_declarator_suffix )*
+                # C.g:265:65: ( abstract_declarator_suffix )*
                 while True: #loop42
                     alt42 = 2
                     LA42_0 = self.input.LA(1)
@@ -3814,7 +3833,7 @@ class CParser(Parser):
 
                     if alt42 == 1:
                         # C.g:0:0: abstract_declarator_suffix
-                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator976)
+                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator980)
                         self.abstract_declarator_suffix()
                         self.following.pop()
                         if self.failed:
@@ -3844,7 +3863,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator_suffix
-    # C.g:253:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
+    # C.g:268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
     def abstract_declarator_suffix(self, ):
 
         abstract_declarator_suffix_StartIndex = self.input.index()
@@ -3853,7 +3872,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 33):
                     return 
 
-                # C.g:254:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
+                # C.g:269:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
                 alt43 = 4
                 LA43_0 = self.input.LA(1)
 
@@ -3869,7 +3888,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("253:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 1, self.input)
+                        nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 1, self.input)
 
                         raise nvae
 
@@ -3885,7 +3904,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("253:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 2, self.input)
+                        nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 2, self.input)
 
                         raise nvae
 
@@ -3894,56 +3913,56 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("253:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 0, self.input)
+                    nvae = NoViableAltException("268:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 43, 0, self.input)
 
                     raise nvae
 
                 if alt43 == 1:
-                    # C.g:254:4: '[' ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix988)
+                    # C.g:269:4: '[' ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix992)
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix990)
+                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix994)
                     if self.failed:
                         return 
 
 
                 elif alt43 == 2:
-                    # C.g:255:4: '[' constant_expression ']'
-                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix995)
+                    # C.g:270:4: '[' constant_expression ']'
+                    self.match(self.input, 53, self.FOLLOW_53_in_abstract_declarator_suffix999)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix997)
+                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix1001)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix999)
+                    self.match(self.input, 54, self.FOLLOW_54_in_abstract_declarator_suffix1003)
                     if self.failed:
                         return 
 
 
                 elif alt43 == 3:
-                    # C.g:256:4: '(' ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1004)
+                    # C.g:271:4: '(' ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1008)
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1006)
+                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1010)
                     if self.failed:
                         return 
 
 
                 elif alt43 == 4:
-                    # C.g:257:4: '(' parameter_type_list ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1011)
+                    # C.g:272:4: '(' parameter_type_list ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_abstract_declarator_suffix1015)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1013)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1017)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1015)
+                    self.match(self.input, 52, self.FOLLOW_52_in_abstract_declarator_suffix1019)
                     if self.failed:
                         return 
 
@@ -3964,7 +3983,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer
-    # C.g:260:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
+    # C.g:275:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
     def initializer(self, ):
 
         initializer_StartIndex = self.input.index()
@@ -3973,7 +3992,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 34):
                     return 
 
-                # C.g:262:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
+                # C.g:277:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
                 alt45 = 2
                 LA45_0 = self.input.LA(1)
 
@@ -3986,13 +4005,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("260:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 45, 0, self.input)
+                    nvae = NoViableAltException("275:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 45, 0, self.input)
 
                     raise nvae
 
                 if alt45 == 1:
-                    # C.g:262:4: assignment_expression
-                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1028)
+                    # C.g:277:4: assignment_expression
+                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1032)
                     self.assignment_expression()
                     self.following.pop()
                     if self.failed:
@@ -4000,16 +4019,16 @@ class CParser(Parser):
 
 
                 elif alt45 == 2:
-                    # C.g:263:4: '{' initializer_list ( ',' )? '}'
-                    self.match(self.input, 41, self.FOLLOW_41_in_initializer1033)
+                    # C.g:278:4: '{' initializer_list ( ',' )? '}'
+                    self.match(self.input, 41, self.FOLLOW_41_in_initializer1037)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_list_in_initializer1035)
+                    self.following.append(self.FOLLOW_initializer_list_in_initializer1039)
                     self.initializer_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:263:25: ( ',' )?
+                    # C.g:278:25: ( ',' )?
                     alt44 = 2
                     LA44_0 = self.input.LA(1)
 
@@ -4017,13 +4036,13 @@ class CParser(Parser):
                         alt44 = 1
                     if alt44 == 1:
                         # C.g:0:0: ','
-                        self.match(self.input, 26, self.FOLLOW_26_in_initializer1037)
+                        self.match(self.input, 26, self.FOLLOW_26_in_initializer1041)
                         if self.failed:
                             return 
 
 
 
-                    self.match(self.input, 42, self.FOLLOW_42_in_initializer1040)
+                    self.match(self.input, 42, self.FOLLOW_42_in_initializer1044)
                     if self.failed:
                         return 
 
@@ -4044,7 +4063,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer_list
-    # C.g:266:1: initializer_list : initializer ( ',' initializer )* ;
+    # C.g:281:1: initializer_list : initializer ( ',' initializer )* ;
     def initializer_list(self, ):
 
         initializer_list_StartIndex = self.input.index()
@@ -4053,14 +4072,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 35):
                     return 
 
-                # C.g:267:2: ( initializer ( ',' initializer )* )
-                # C.g:267:4: initializer ( ',' initializer )*
-                self.following.append(self.FOLLOW_initializer_in_initializer_list1051)
+                # C.g:282:2: ( initializer ( ',' initializer )* )
+                # C.g:282:4: initializer ( ',' initializer )*
+                self.following.append(self.FOLLOW_initializer_in_initializer_list1055)
                 self.initializer()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:267:16: ( ',' initializer )*
+                # C.g:282:16: ( ',' initializer )*
                 while True: #loop46
                     alt46 = 2
                     LA46_0 = self.input.LA(1)
@@ -4075,11 +4094,11 @@ class CParser(Parser):
 
 
                     if alt46 == 1:
-                        # C.g:267:17: ',' initializer
-                        self.match(self.input, 26, self.FOLLOW_26_in_initializer_list1054)
+                        # C.g:282:17: ',' initializer
+                        self.match(self.input, 26, self.FOLLOW_26_in_initializer_list1058)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_initializer_in_initializer_list1056)
+                        self.following.append(self.FOLLOW_initializer_in_initializer_list1060)
                         self.initializer()
                         self.following.pop()
                         if self.failed:
@@ -4107,25 +4126,33 @@ class CParser(Parser):
 
     # $ANTLR end initializer_list
 
+    class argument_expression_list_return(object):
+        def __init__(self):
+            self.start = None
+            self.stop = None
+
+
 
     # $ANTLR start argument_expression_list
-    # C.g:272:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:287:1: argument_expression_list : assignment_expression ( ',' assignment_expression )* ;
     def argument_expression_list(self, ):
 
+        retval = self.argument_expression_list_return()
+        retval.start = self.input.LT(1)
         argument_expression_list_StartIndex = self.input.index()
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 36):
-                    return 
+                    return retval
 
-                # C.g:273:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:273:6: assignment_expression ( ',' assignment_expression )*
-                self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1074)
+                # C.g:288:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:288: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 
-                # C.g:273:28: ( ',' assignment_expression )*
+                    return retval
+                # C.g:288:28: ( ',' assignment_expression )*
                 while True: #loop47
                     alt47 = 2
                     LA47_0 = self.input.LA(1)
@@ -4135,15 +4162,15 @@ class CParser(Parser):
 
 
                     if alt47 == 1:
-                        # C.g:273:29: ',' assignment_expression
-                        self.match(self.input, 26, self.FOLLOW_26_in_argument_expression_list1077)
+                        # C.g:288:29: ',' assignment_expression
+                        self.match(self.input, 26, self.FOLLOW_26_in_argument_expression_list1081)
                         if self.failed:
-                            return 
-                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1079)
+                            return retval
+                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1083)
                         self.assignment_expression()
                         self.following.pop()
                         if self.failed:
-                            return 
+                            return retval
 
 
                     else:
@@ -4153,6 +4180,8 @@ class CParser(Parser):
 
 
 
+                retval.stop = self.input.LT(-1)
+
 
             except RecognitionException, re:
                 self.reportError(re)
@@ -4163,13 +4192,13 @@ class CParser(Parser):
 
             pass
 
-        return 
+        return retval
 
     # $ANTLR end argument_expression_list
 
 
     # $ANTLR start additive_expression
-    # C.g:276:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
+    # C.g:291:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
     def additive_expression(self, ):
 
         additive_expression_StartIndex = self.input.index()
@@ -4178,11 +4207,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 37):
                     return 
 
-                # C.g:277:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
-                # C.g:277:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
-                # C.g:277:4: ( multiplicative_expression )
-                # C.g:277:5: multiplicative_expression
-                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1093)
+                # 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
+                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1097)
                 self.multiplicative_expression()
                 self.following.pop()
                 if self.failed:
@@ -4190,7 +4219,7 @@ class CParser(Parser):
 
 
 
-                # C.g:277:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:292:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
                 while True: #loop48
                     alt48 = 3
                     LA48_0 = self.input.LA(1)
@@ -4202,11 +4231,11 @@ class CParser(Parser):
 
 
                     if alt48 == 1:
-                        # C.g:277:33: '+' multiplicative_expression
-                        self.match(self.input, 57, self.FOLLOW_57_in_additive_expression1097)
+                        # C.g:292:33: '+' multiplicative_expression
+                        self.match(self.input, 57, self.FOLLOW_57_in_additive_expression1101)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1099)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1103)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -4214,11 +4243,11 @@ class CParser(Parser):
 
 
                     elif alt48 == 2:
-                        # C.g:277:65: '-' multiplicative_expression
-                        self.match(self.input, 58, self.FOLLOW_58_in_additive_expression1103)
+                        # C.g:292:65: '-' multiplicative_expression
+                        self.match(self.input, 58, self.FOLLOW_58_in_additive_expression1107)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1105)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1109)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -4248,7 +4277,7 @@ class CParser(Parser):
 
 
     # $ANTLR start multiplicative_expression
-    # C.g:280:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
+    # C.g:295:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
     def multiplicative_expression(self, ):
 
         multiplicative_expression_StartIndex = self.input.index()
@@ -4257,11 +4286,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 38):
                     return 
 
-                # C.g:281:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
-                # C.g:281:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
-                # C.g:281:4: ( cast_expression )
-                # C.g:281:5: cast_expression
-                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1119)
+                # 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
+                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1123)
                 self.cast_expression()
                 self.following.pop()
                 if self.failed:
@@ -4269,7 +4298,7 @@ class CParser(Parser):
 
 
 
-                # C.g:281:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:296:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
                 while True: #loop49
                     alt49 = 4
                     LA49 = self.input.LA(1)
@@ -4281,11 +4310,11 @@ class CParser(Parser):
                         alt49 = 3
 
                     if alt49 == 1:
-                        # C.g:281:23: '*' cast_expression
-                        self.match(self.input, 55, self.FOLLOW_55_in_multiplicative_expression1123)
+                        # C.g:296:23: '*' cast_expression
+                        self.match(self.input, 55, self.FOLLOW_55_in_multiplicative_expression1127)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1125)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1129)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4293,11 +4322,11 @@ class CParser(Parser):
 
 
                     elif alt49 == 2:
-                        # C.g:281:45: '/' cast_expression
-                        self.match(self.input, 59, self.FOLLOW_59_in_multiplicative_expression1129)
+                        # C.g:296:45: '/' cast_expression
+                        self.match(self.input, 59, self.FOLLOW_59_in_multiplicative_expression1133)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1131)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1135)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4305,11 +4334,11 @@ class CParser(Parser):
 
 
                     elif alt49 == 3:
-                        # C.g:281:67: '%' cast_expression
-                        self.match(self.input, 60, self.FOLLOW_60_in_multiplicative_expression1135)
+                        # C.g:296:67: '%' cast_expression
+                        self.match(self.input, 60, self.FOLLOW_60_in_multiplicative_expression1139)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1137)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1141)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -4339,7 +4368,7 @@ class CParser(Parser):
 
 
     # $ANTLR start cast_expression
-    # C.g:284:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
+    # C.g:299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
     def cast_expression(self, ):
 
         cast_expression_StartIndex = self.input.index()
@@ -4348,7 +4377,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 39):
                     return 
 
-                # C.g:285:2: ( '(' type_name ')' cast_expression | unary_expression )
+                # C.g:300:2: ( '(' type_name ')' cast_expression | unary_expression )
                 alt50 = 2
                 LA50_0 = self.input.LA(1)
 
@@ -4368,7 +4397,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("284:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 20, self.input)
+                            nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 20, self.input)
 
                             raise nvae
 
@@ -4379,7 +4408,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("284:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 1, self.input)
+                        nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 1, self.input)
 
                         raise nvae
 
@@ -4390,24 +4419,24 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("284:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 0, self.input)
+                    nvae = NoViableAltException("299:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 50, 0, self.input)
 
                     raise nvae
 
                 if alt50 == 1:
-                    # C.g:285:4: '(' type_name ')' cast_expression
-                    self.match(self.input, 51, self.FOLLOW_51_in_cast_expression1150)
+                    # C.g:300:4: '(' type_name ')' cast_expression
+                    self.match(self.input, 51, self.FOLLOW_51_in_cast_expression1154)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_cast_expression1152)
+                    self.following.append(self.FOLLOW_type_name_in_cast_expression1156)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_cast_expression1154)
+                    self.match(self.input, 52, self.FOLLOW_52_in_cast_expression1158)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1156)
+                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1160)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -4415,8 +4444,8 @@ class CParser(Parser):
 
 
                 elif alt50 == 2:
-                    # C.g:286:4: unary_expression
-                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1161)
+                    # C.g:301:4: unary_expression
+                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1165)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4439,7 +4468,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_expression
-    # C.g:289:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );
+    # C.g:304: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()
@@ -4448,7 +4477,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 40):
                     return 
 
-                # C.g:290:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
+                # C.g:305: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:
@@ -4474,7 +4503,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("289: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("304: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
 
@@ -4485,7 +4514,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("289: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("304: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
 
@@ -4494,13 +4523,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("289: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("304: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:290:4: postfix_expression
-                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1172)
+                    # C.g:305:4: postfix_expression
+                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1176)
                     self.postfix_expression()
                     self.following.pop()
                     if self.failed:
@@ -4508,11 +4537,11 @@ class CParser(Parser):
 
 
                 elif alt51 == 2:
-                    # C.g:291:4: '++' unary_expression
-                    self.match(self.input, 61, self.FOLLOW_61_in_unary_expression1177)
+                    # C.g:306:4: '++' unary_expression
+                    self.match(self.input, 61, self.FOLLOW_61_in_unary_expression1181)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1179)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1183)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4520,11 +4549,11 @@ class CParser(Parser):
 
 
                 elif alt51 == 3:
-                    # C.g:292:4: '--' unary_expression
-                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1184)
+                    # C.g:307:4: '--' unary_expression
+                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1188)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1186)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1190)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4532,13 +4561,13 @@ class CParser(Parser):
 
 
                 elif alt51 == 4:
-                    # C.g:293:4: unary_operator cast_expression
-                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1191)
+                    # C.g:308:4: unary_operator cast_expression
+                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1195)
                     self.unary_operator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1193)
+                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1197)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -4546,11 +4575,11 @@ class CParser(Parser):
 
 
                 elif alt51 == 5:
-                    # C.g:294:4: 'sizeof' unary_expression
-                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1198)
+                    # C.g:309:4: 'sizeof' unary_expression
+                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1202)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1200)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1204)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -4558,19 +4587,19 @@ class CParser(Parser):
 
 
                 elif alt51 == 6:
-                    # C.g:295:4: 'sizeof' '(' type_name ')'
-                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1205)
+                    # C.g:310:4: 'sizeof' '(' type_name ')'
+                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1209)
                     if self.failed:
                         return 
-                    self.match(self.input, 51, self.FOLLOW_51_in_unary_expression1207)
+                    self.match(self.input, 51, self.FOLLOW_51_in_unary_expression1211)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_unary_expression1209)
+                    self.following.append(self.FOLLOW_type_name_in_unary_expression1213)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_unary_expression1211)
+                    self.match(self.input, 52, self.FOLLOW_52_in_unary_expression1215)
                     if self.failed:
                         return 
 
@@ -4591,26 +4620,30 @@ class CParser(Parser):
 
 
     # $ANTLR start postfix_expression
-    # C.g:298:1: postfix_expression : p= primary_expression ( '[' expression ']' | '(' ')' | a= '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* ;
+    # C.g:313: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()
         a = None
         b = None
+        p = None
+
+        c = None
+
 
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 41):
                     return 
 
-                # C.g:299:2: (p= primary_expression ( '[' expression ']' | '(' ')' | a= '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )* )
-                # C.g:299:6: p= primary_expression ( '[' expression ']' | '(' ')' | a= '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
-                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1226)
-                self.primary_expression()
+                # 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 | '++' | '--' )*
+                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1230)
+                p = self.primary_expression()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:300:9: ( '[' expression ']' | '(' ')' | a= '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
+                # C.g:315:9: ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '.' IDENTIFIER | '*' IDENTIFIER | '->' IDENTIFIER | '++' | '--' )*
                 while True: #loop52
                     alt52 = 9
                     LA52 = self.input.LA(1)
@@ -4647,87 +4680,93 @@ class CParser(Parser):
                         alt52 = 8
 
                     if alt52 == 1:
-                        # C.g:300:13: '[' expression ']'
-                        self.match(self.input, 53, self.FOLLOW_53_in_postfix_expression1240)
+                        # C.g:315:13: '[' expression ']'
+                        self.match(self.input, 53, self.FOLLOW_53_in_postfix_expression1244)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_expression_in_postfix_expression1242)
+                        self.following.append(self.FOLLOW_expression_in_postfix_expression1246)
                         self.expression()
                         self.following.pop()
                         if self.failed:
                             return 
-                        self.match(self.input, 54, self.FOLLOW_54_in_postfix_expression1244)
+                        self.match(self.input, 54, self.FOLLOW_54_in_postfix_expression1248)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 2:
-                        # C.g:301:13: '(' ')'
-                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1258)
+                        # C.g:316:13: '(' a= ')'
+                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1262)
                         if self.failed:
                             return 
-                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1260)
+                        a = self.input.LT(1)
+                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1266)
                         if self.failed:
                             return 
+                        if self.backtracking == 0:
+                            self.StoreFunctionCalling(p.start.line, p.start.charPositionInLine, a.line, a.charPositionInLine, self.input.toString(p.start,p.stop), '')
+
 
 
                     elif alt52 == 3:
-                        # C.g:302:13: a= '(' c= argument_expression_list b= ')'
-                        a = self.input.LT(1)
-                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1276)
+                        # C.g:317:13: '(' c= argument_expression_list b= ')'
+                        self.match(self.input, 51, self.FOLLOW_51_in_postfix_expression1281)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1280)
-                        self.argument_expression_list()
+                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1285)
+                        c = self.argument_expression_list()
                         self.following.pop()
                         if self.failed:
                             return 
                         b = self.input.LT(1)
-                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1284)
+                        self.match(self.input, 52, self.FOLLOW_52_in_postfix_expression1289)
                         if self.failed:
                             return 
+                        if self.backtracking == 0:
+                            self.StoreFunctionCalling(p.start.line, p.start.charPositionInLine, b.line, b.charPositionInLine, self.input.toString(p.start,p.stop), self.input.toString(c.start,c.stop))
+
 
 
                     elif alt52 == 4:
-                        # C.g:303:13: '.' IDENTIFIER
-                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1299)
+                        # C.g:318:13: '.' IDENTIFIER
+                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1305)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1301)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1307)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 5:
-                        # C.g:304:13: '*' IDENTIFIER
-                        self.match(self.input, 55, self.FOLLOW_55_in_postfix_expression1315)
+                        # C.g:319:13: '*' IDENTIFIER
+                        self.match(self.input, 55, self.FOLLOW_55_in_postfix_expression1321)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1317)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1323)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 6:
-                        # C.g:305:13: '->' IDENTIFIER
-                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1331)
+                        # C.g:320:13: '->' IDENTIFIER
+                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1337)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1333)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1339)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 7:
-                        # C.g:306:13: '++'
-                        self.match(self.input, 61, self.FOLLOW_61_in_postfix_expression1347)
+                        # C.g:321:13: '++'
+                        self.match(self.input, 61, self.FOLLOW_61_in_postfix_expression1353)
                         if self.failed:
                             return 
 
 
                     elif alt52 == 8:
-                        # C.g:307:13: '--'
-                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1361)
+                        # C.g:322:13: '--'
+                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1367)
                         if self.failed:
                             return 
 
@@ -4755,7 +4794,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_operator
-    # C.g:311:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
+    # C.g:326:1: unary_operator : ( '&' | '*' | '+' | '-' | '~' | '!' );
     def unary_operator(self, ):
 
         unary_operator_StartIndex = self.input.index()
@@ -4764,7 +4803,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 42):
                     return 
 
-                # C.g:312:2: ( '&' | '*' | '+' | '-' | '~' | '!' )
+                # C.g:327: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();
@@ -4800,18 +4839,26 @@ class CParser(Parser):
 
     # $ANTLR end unary_operator
 
+    class primary_expression_return(object):
+        def __init__(self):
+            self.start = None
+            self.stop = None
+
+
 
     # $ANTLR start primary_expression
-    # C.g:320:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
+    # C.g:335:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );
     def primary_expression(self, ):
 
+        retval = self.primary_expression_return()
+        retval.start = self.input.LT(1)
         primary_expression_StartIndex = self.input.index()
         try:
             try:
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 43):
-                    return 
+                    return retval
 
-                # C.g:321:2: ( IDENTIFIER | constant | '(' expression ')' )
+                # C.g:336:2: ( IDENTIFIER | constant | '(' expression ')' )
                 alt53 = 3
                 LA53 = self.input.LA(1)
                 if LA53 == IDENTIFIER:
@@ -4823,43 +4870,45 @@ class CParser(Parser):
                 else:
                     if self.backtracking > 0:
                         self.failed = True
-                        return 
+                        return retval
 
-                    nvae = NoViableAltException("320:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 53, 0, self.input)
+                    nvae = NoViableAltException("335:1: primary_expression : ( IDENTIFIER | constant | '(' expression ')' );", 53, 0, self.input)
 
                     raise nvae
 
                 if alt53 == 1:
-                    # C.g:321:4: IDENTIFIER
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_primary_expression1419)
+                    # C.g:336:4: IDENTIFIER
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_primary_expression1425)
                     if self.failed:
-                        return 
+                        return retval
 
 
                 elif alt53 == 2:
-                    # C.g:322:4: constant
-                    self.following.append(self.FOLLOW_constant_in_primary_expression1424)
+                    # C.g:337:4: constant
+                    self.following.append(self.FOLLOW_constant_in_primary_expression1430)
                     self.constant()
                     self.following.pop()
                     if self.failed:
-                        return 
+                        return retval
 
 
                 elif alt53 == 3:
-                    # C.g:323:4: '(' expression ')'
-                    self.match(self.input, 51, self.FOLLOW_51_in_primary_expression1429)
+                    # C.g:338:4: '(' expression ')'
+                    self.match(self.input, 51, self.FOLLOW_51_in_primary_expression1435)
                     if self.failed:
-                        return 
-                    self.following.append(self.FOLLOW_expression_in_primary_expression1431)
+                        return retval
+                    self.following.append(self.FOLLOW_expression_in_primary_expression1437)
                     self.expression()
                     self.following.pop()
                     if self.failed:
-                        return 
-                    self.match(self.input, 52, self.FOLLOW_52_in_primary_expression1433)
+                        return retval
+                    self.match(self.input, 52, self.FOLLOW_52_in_primary_expression1439)
                     if self.failed:
-                        return 
+                        return retval
 
 
+                retval.stop = self.input.LT(-1)
+
 
             except RecognitionException, re:
                 self.reportError(re)
@@ -4870,13 +4919,13 @@ class CParser(Parser):
 
             pass
 
-        return 
+        return retval
 
     # $ANTLR end primary_expression
 
 
     # $ANTLR start constant
-    # C.g:326:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
+    # C.g:341:1: constant : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL );
     def constant(self, ):
 
         constant_StartIndex = self.input.index()
@@ -4885,7 +4934,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 44):
                     return 
 
-                # C.g:327:5: ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | FLOATING_POINT_LITERAL )
+                # C.g:342: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();
@@ -4929,7 +4978,7 @@ class CParser(Parser):
 
 
     # $ANTLR start expression
-    # C.g:337:1: expression : assignment_expression ( ',' assignment_expression )* ;
+    # C.g:352:1: expression : assignment_expression ( ',' assignment_expression )* ;
     def expression(self, ):
 
         retval = self.expression_return()
@@ -4940,14 +4989,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 45):
                     return retval
 
-                # C.g:338:2: ( assignment_expression ( ',' assignment_expression )* )
-                # C.g:338:4: assignment_expression ( ',' assignment_expression )*
-                self.following.append(self.FOLLOW_assignment_expression_in_expression1511)
+                # C.g:353:2: ( assignment_expression ( ',' assignment_expression )* )
+                # C.g:353: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:338:26: ( ',' assignment_expression )*
+                # C.g:353:26: ( ',' assignment_expression )*
                 while True: #loop54
                     alt54 = 2
                     LA54_0 = self.input.LA(1)
@@ -4957,11 +5006,11 @@ class CParser(Parser):
 
 
                     if alt54 == 1:
-                        # C.g:338:27: ',' assignment_expression
-                        self.match(self.input, 26, self.FOLLOW_26_in_expression1514)
+                        # C.g:353:27: ',' assignment_expression
+                        self.match(self.input, 26, self.FOLLOW_26_in_expression1520)
                         if self.failed:
                             return retval
-                        self.following.append(self.FOLLOW_assignment_expression_in_expression1516)
+                        self.following.append(self.FOLLOW_assignment_expression_in_expression1522)
                         self.assignment_expression()
                         self.following.pop()
                         if self.failed:
@@ -4993,7 +5042,7 @@ class CParser(Parser):
 
 
     # $ANTLR start constant_expression
-    # C.g:341:1: constant_expression : conditional_expression ;
+    # C.g:356:1: constant_expression : conditional_expression ;
     def constant_expression(self, ):
 
         constant_expression_StartIndex = self.input.index()
@@ -5002,9 +5051,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 46):
                     return 
 
-                # C.g:342:2: ( conditional_expression )
-                # C.g:342:4: conditional_expression
-                self.following.append(self.FOLLOW_conditional_expression_in_constant_expression1529)
+                # C.g:357:2: ( conditional_expression )
+                # C.g:357:4: conditional_expression
+                self.following.append(self.FOLLOW_conditional_expression_in_constant_expression1535)
                 self.conditional_expression()
                 self.following.pop()
                 if self.failed:
@@ -5028,7 +5077,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_expression
-    # C.g:345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
+    # C.g:360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );
     def assignment_expression(self, ):
 
         assignment_expression_StartIndex = self.input.index()
@@ -5037,7 +5086,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 47):
                     return 
 
-                # C.g:346:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
+                # C.g:361:2: ( lvalue assignment_operator assignment_expression | conditional_expression )
                 alt55 = 2
                 LA55 = self.input.LA(1)
                 if LA55 == IDENTIFIER:
@@ -5054,7 +5103,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 8, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 8, self.input)
 
                             raise nvae
 
@@ -5070,7 +5119,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 9, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 9, self.input)
 
                             raise nvae
 
@@ -5086,7 +5135,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 10, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 10, self.input)
 
                             raise nvae
 
@@ -5102,7 +5151,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 11, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 11, self.input)
 
                             raise nvae
 
@@ -5118,7 +5167,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 12, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 12, self.input)
 
                             raise nvae
 
@@ -5134,7 +5183,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 13, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 13, self.input)
 
                             raise nvae
 
@@ -5150,7 +5199,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 14, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 14, self.input)
 
                             raise nvae
 
@@ -5163,7 +5212,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 1, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 1, self.input)
 
                         raise nvae
 
@@ -5181,7 +5230,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 36, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 36, self.input)
 
                             raise nvae
 
@@ -5197,7 +5246,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 37, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 37, self.input)
 
                             raise nvae
 
@@ -5213,7 +5262,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 38, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 38, self.input)
 
                             raise nvae
 
@@ -5229,7 +5278,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 39, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 39, self.input)
 
                             raise nvae
 
@@ -5245,7 +5294,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 40, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 40, self.input)
 
                             raise nvae
 
@@ -5261,7 +5310,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 41, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 41, self.input)
 
                             raise nvae
 
@@ -5277,7 +5326,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 42, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 42, self.input)
 
                             raise nvae
 
@@ -5290,7 +5339,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 2, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 2, self.input)
 
                         raise nvae
 
@@ -5308,7 +5357,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 64, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 64, self.input)
 
                             raise nvae
 
@@ -5324,7 +5373,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 65, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 65, self.input)
 
                             raise nvae
 
@@ -5340,7 +5389,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 66, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 66, self.input)
 
                             raise nvae
 
@@ -5356,7 +5405,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 67, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 67, self.input)
 
                             raise nvae
 
@@ -5372,7 +5421,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 68, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 68, self.input)
 
                             raise nvae
 
@@ -5388,7 +5437,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 69, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 69, self.input)
 
                             raise nvae
 
@@ -5404,7 +5453,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 70, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 70, self.input)
 
                             raise nvae
 
@@ -5415,7 +5464,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 3, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 3, self.input)
 
                         raise nvae
 
@@ -5433,7 +5482,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 83, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 83, self.input)
 
                             raise nvae
 
@@ -5449,7 +5498,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 84, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 84, self.input)
 
                             raise nvae
 
@@ -5465,7 +5514,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 85, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 85, self.input)
 
                             raise nvae
 
@@ -5481,7 +5530,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 86, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 86, self.input)
 
                             raise nvae
 
@@ -5497,7 +5546,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 87, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 87, self.input)
 
                             raise nvae
 
@@ -5513,7 +5562,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 88, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 88, self.input)
 
                             raise nvae
 
@@ -5529,7 +5578,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 89, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 89, self.input)
 
                             raise nvae
 
@@ -5538,7 +5587,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 4, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 4, self.input)
 
                         raise nvae
 
@@ -5556,7 +5605,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 90, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 90, self.input)
 
                             raise nvae
 
@@ -5572,7 +5621,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 91, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 91, self.input)
 
                             raise nvae
 
@@ -5588,7 +5637,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 92, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 92, self.input)
 
                             raise nvae
 
@@ -5604,7 +5653,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 93, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 93, self.input)
 
                             raise nvae
 
@@ -5620,7 +5669,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 94, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 94, self.input)
 
                             raise nvae
 
@@ -5636,7 +5685,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 95, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 95, self.input)
 
                             raise nvae
 
@@ -5652,7 +5701,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 96, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 96, self.input)
 
                             raise nvae
 
@@ -5661,7 +5710,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 5, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 5, self.input)
 
                         raise nvae
 
@@ -5679,7 +5728,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 97, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 97, self.input)
 
                             raise nvae
 
@@ -5695,7 +5744,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 98, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 98, self.input)
 
                             raise nvae
 
@@ -5711,7 +5760,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 99, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 99, self.input)
 
                             raise nvae
 
@@ -5727,7 +5776,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 100, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 100, self.input)
 
                             raise nvae
 
@@ -5743,7 +5792,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 101, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 101, self.input)
 
                             raise nvae
 
@@ -5759,7 +5808,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 102, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 102, self.input)
 
                             raise nvae
 
@@ -5775,7 +5824,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 103, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 103, self.input)
 
                             raise nvae
 
@@ -5784,7 +5833,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 6, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 6, self.input)
 
                         raise nvae
 
@@ -5802,7 +5851,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 104, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 104, self.input)
 
                             raise nvae
 
@@ -5818,7 +5867,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 105, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 105, self.input)
 
                             raise nvae
 
@@ -5834,7 +5883,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 106, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 106, self.input)
 
                             raise nvae
 
@@ -5850,7 +5899,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 107, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 107, self.input)
 
                             raise nvae
 
@@ -5866,7 +5915,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 108, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 108, self.input)
 
                             raise nvae
 
@@ -5882,7 +5931,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 109, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 109, self.input)
 
                             raise nvae
 
@@ -5898,7 +5947,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 110, self.input)
+                            nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 110, self.input)
 
                             raise nvae
 
@@ -5907,7 +5956,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 7, self.input)
+                        nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 7, self.input)
 
                         raise nvae
 
@@ -5916,23 +5965,23 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("345:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 0, self.input)
+                    nvae = NoViableAltException("360:1: assignment_expression : ( lvalue assignment_operator assignment_expression | conditional_expression );", 55, 0, self.input)
 
                     raise nvae
 
                 if alt55 == 1:
-                    # C.g:346:4: lvalue assignment_operator assignment_expression
-                    self.following.append(self.FOLLOW_lvalue_in_assignment_expression1540)
+                    # C.g:361:4: lvalue assignment_operator assignment_expression
+                    self.following.append(self.FOLLOW_lvalue_in_assignment_expression1546)
                     self.lvalue()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_assignment_operator_in_assignment_expression1542)
+                    self.following.append(self.FOLLOW_assignment_operator_in_assignment_expression1548)
                     self.assignment_operator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_assignment_expression_in_assignment_expression1544)
+                    self.following.append(self.FOLLOW_assignment_expression_in_assignment_expression1550)
                     self.assignment_expression()
                     self.following.pop()
                     if self.failed:
@@ -5940,8 +5989,8 @@ class CParser(Parser):
 
 
                 elif alt55 == 2:
-                    # C.g:347:4: conditional_expression
-                    self.following.append(self.FOLLOW_conditional_expression_in_assignment_expression1549)
+                    # C.g:362:4: conditional_expression
+                    self.following.append(self.FOLLOW_conditional_expression_in_assignment_expression1555)
                     self.conditional_expression()
                     self.following.pop()
                     if self.failed:
@@ -5964,7 +6013,7 @@ class CParser(Parser):
 
 
     # $ANTLR start lvalue
-    # C.g:350:1: lvalue : unary_expression ;
+    # C.g:365:1: lvalue : unary_expression ;
     def lvalue(self, ):
 
         lvalue_StartIndex = self.input.index()
@@ -5973,9 +6022,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 48):
                     return 
 
-                # C.g:351:2: ( unary_expression )
-                # C.g:351:4: unary_expression
-                self.following.append(self.FOLLOW_unary_expression_in_lvalue1561)
+                # C.g:366:2: ( unary_expression )
+                # C.g:366:4: unary_expression
+                self.following.append(self.FOLLOW_unary_expression_in_lvalue1567)
                 self.unary_expression()
                 self.following.pop()
                 if self.failed:
@@ -5999,7 +6048,7 @@ class CParser(Parser):
 
 
     # $ANTLR start assignment_operator
-    # C.g:354:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
+    # C.g:369:1: assignment_operator : ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' );
     def assignment_operator(self, ):
 
         assignment_operator_StartIndex = self.input.index()
@@ -6008,7 +6057,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 49):
                     return 
 
-                # C.g:355:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
+                # C.g:370:2: ( '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|=' )
                 # C.g:
                 if self.input.LA(1) == 27 or (69 <= self.input.LA(1) <= 78):
                     self.input.consume();
@@ -6046,7 +6095,7 @@ class CParser(Parser):
 
 
     # $ANTLR start conditional_expression
-    # C.g:368:1: conditional_expression : e= logical_or_expression ( '?' expression ':' conditional_expression )? ;
+    # C.g:383:1: conditional_expression : e= logical_or_expression ( '?' expression ':' conditional_expression )? ;
     def conditional_expression(self, ):
 
         conditional_expression_StartIndex = self.input.index()
@@ -6058,33 +6107,33 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 50):
                     return 
 
-                # C.g:369:2: (e= logical_or_expression ( '?' expression ':' conditional_expression )? )
-                # C.g:369:4: e= logical_or_expression ( '?' expression ':' conditional_expression )?
-                self.following.append(self.FOLLOW_logical_or_expression_in_conditional_expression1635)
+                # C.g:384:2: (e= logical_or_expression ( '?' expression ':' conditional_expression )? )
+                # C.g:384: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:369:28: ( '?' expression ':' conditional_expression )?
+                # C.g:384:28: ( '?' expression ':' conditional_expression )?
                 alt56 = 2
                 LA56_0 = self.input.LA(1)
 
                 if (LA56_0 == 79) :
                     alt56 = 1
                 if alt56 == 1:
-                    # C.g:369:29: '?' expression ':' conditional_expression
-                    self.match(self.input, 79, self.FOLLOW_79_in_conditional_expression1638)
+                    # C.g:384:29: '?' expression ':' conditional_expression
+                    self.match(self.input, 79, self.FOLLOW_79_in_conditional_expression1644)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_expression_in_conditional_expression1640)
+                    self.following.append(self.FOLLOW_expression_in_conditional_expression1646)
                     self.expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 45, self.FOLLOW_45_in_conditional_expression1642)
+                    self.match(self.input, 45, self.FOLLOW_45_in_conditional_expression1648)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_conditional_expression_in_conditional_expression1644)
+                    self.following.append(self.FOLLOW_conditional_expression_in_conditional_expression1650)
                     self.conditional_expression()
                     self.following.pop()
                     if self.failed:
@@ -6120,7 +6169,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_or_expression
-    # C.g:372:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
+    # C.g:387:1: logical_or_expression : logical_and_expression ( '||' logical_and_expression )* ;
     def logical_or_expression(self, ):
 
         retval = self.logical_or_expression_return()
@@ -6131,14 +6180,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 51):
                     return retval
 
-                # C.g:373:2: ( logical_and_expression ( '||' logical_and_expression )* )
-                # C.g:373:4: logical_and_expression ( '||' logical_and_expression )*
-                self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1659)
+                # C.g:388:2: ( logical_and_expression ( '||' logical_and_expression )* )
+                # C.g:388: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:373:27: ( '||' logical_and_expression )*
+                # C.g:388:27: ( '||' logical_and_expression )*
                 while True: #loop57
                     alt57 = 2
                     LA57_0 = self.input.LA(1)
@@ -6148,11 +6197,11 @@ class CParser(Parser):
 
 
                     if alt57 == 1:
-                        # C.g:373:28: '||' logical_and_expression
-                        self.match(self.input, 80, self.FOLLOW_80_in_logical_or_expression1662)
+                        # C.g:388:28: '||' logical_and_expression
+                        self.match(self.input, 80, self.FOLLOW_80_in_logical_or_expression1668)
                         if self.failed:
                             return retval
-                        self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1664)
+                        self.following.append(self.FOLLOW_logical_and_expression_in_logical_or_expression1670)
                         self.logical_and_expression()
                         self.following.pop()
                         if self.failed:
@@ -6184,7 +6233,7 @@ class CParser(Parser):
 
 
     # $ANTLR start logical_and_expression
-    # C.g:376:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
+    # C.g:391:1: logical_and_expression : inclusive_or_expression ( '&&' inclusive_or_expression )* ;
     def logical_and_expression(self, ):
 
         logical_and_expression_StartIndex = self.input.index()
@@ -6193,14 +6242,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 52):
                     return 
 
-                # C.g:377:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
-                # C.g:377:4: inclusive_or_expression ( '&&' inclusive_or_expression )*
-                self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1677)
+                # C.g:392:2: ( inclusive_or_expression ( '&&' inclusive_or_expression )* )
+                # C.g:392: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:377:28: ( '&&' inclusive_or_expression )*
+                # C.g:392:28: ( '&&' inclusive_or_expression )*
                 while True: #loop58
                     alt58 = 2
                     LA58_0 = self.input.LA(1)
@@ -6210,11 +6259,11 @@ class CParser(Parser):
 
 
                     if alt58 == 1:
-                        # C.g:377:29: '&&' inclusive_or_expression
-                        self.match(self.input, 81, self.FOLLOW_81_in_logical_and_expression1680)
+                        # C.g:392:29: '&&' inclusive_or_expression
+                        self.match(self.input, 81, self.FOLLOW_81_in_logical_and_expression1686)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1682)
+                        self.following.append(self.FOLLOW_inclusive_or_expression_in_logical_and_expression1688)
                         self.inclusive_or_expression()
                         self.following.pop()
                         if self.failed:
@@ -6244,7 +6293,7 @@ class CParser(Parser):
 
 
     # $ANTLR start inclusive_or_expression
-    # C.g:380:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
+    # C.g:395:1: inclusive_or_expression : exclusive_or_expression ( '|' exclusive_or_expression )* ;
     def inclusive_or_expression(self, ):
 
         inclusive_or_expression_StartIndex = self.input.index()
@@ -6253,14 +6302,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 53):
                     return 
 
-                # C.g:381:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
-                # C.g:381:4: exclusive_or_expression ( '|' exclusive_or_expression )*
-                self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1695)
+                # C.g:396:2: ( exclusive_or_expression ( '|' exclusive_or_expression )* )
+                # C.g:396: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:381:28: ( '|' exclusive_or_expression )*
+                # C.g:396:28: ( '|' exclusive_or_expression )*
                 while True: #loop59
                     alt59 = 2
                     LA59_0 = self.input.LA(1)
@@ -6270,11 +6319,11 @@ class CParser(Parser):
 
 
                     if alt59 == 1:
-                        # C.g:381:29: '|' exclusive_or_expression
-                        self.match(self.input, 82, self.FOLLOW_82_in_inclusive_or_expression1698)
+                        # C.g:396:29: '|' exclusive_or_expression
+                        self.match(self.input, 82, self.FOLLOW_82_in_inclusive_or_expression1704)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1700)
+                        self.following.append(self.FOLLOW_exclusive_or_expression_in_inclusive_or_expression1706)
                         self.exclusive_or_expression()
                         self.following.pop()
                         if self.failed:
@@ -6304,7 +6353,7 @@ class CParser(Parser):
 
 
     # $ANTLR start exclusive_or_expression
-    # C.g:384:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
+    # C.g:399:1: exclusive_or_expression : and_expression ( '^' and_expression )* ;
     def exclusive_or_expression(self, ):
 
         exclusive_or_expression_StartIndex = self.input.index()
@@ -6313,14 +6362,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 54):
                     return 
 
-                # C.g:385:2: ( and_expression ( '^' and_expression )* )
-                # C.g:385:4: and_expression ( '^' and_expression )*
-                self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1713)
+                # C.g:400:2: ( and_expression ( '^' and_expression )* )
+                # C.g:400: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:385:19: ( '^' and_expression )*
+                # C.g:400:19: ( '^' and_expression )*
                 while True: #loop60
                     alt60 = 2
                     LA60_0 = self.input.LA(1)
@@ -6330,11 +6379,11 @@ class CParser(Parser):
 
 
                     if alt60 == 1:
-                        # C.g:385:20: '^' and_expression
-                        self.match(self.input, 83, self.FOLLOW_83_in_exclusive_or_expression1716)
+                        # C.g:400:20: '^' and_expression
+                        self.match(self.input, 83, self.FOLLOW_83_in_exclusive_or_expression1722)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1718)
+                        self.following.append(self.FOLLOW_and_expression_in_exclusive_or_expression1724)
                         self.and_expression()
                         self.following.pop()
                         if self.failed:
@@ -6364,7 +6413,7 @@ class CParser(Parser):
 
 
     # $ANTLR start and_expression
-    # C.g:388:1: and_expression : equality_expression ( '&' equality_expression )* ;
+    # C.g:403:1: and_expression : equality_expression ( '&' equality_expression )* ;
     def and_expression(self, ):
 
         and_expression_StartIndex = self.input.index()
@@ -6373,14 +6422,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 55):
                     return 
 
-                # C.g:389:2: ( equality_expression ( '&' equality_expression )* )
-                # C.g:389:4: equality_expression ( '&' equality_expression )*
-                self.following.append(self.FOLLOW_equality_expression_in_and_expression1731)
+                # C.g:404:2: ( equality_expression ( '&' equality_expression )* )
+                # C.g:404: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:389:24: ( '&' equality_expression )*
+                # C.g:404:24: ( '&' equality_expression )*
                 while True: #loop61
                     alt61 = 2
                     LA61_0 = self.input.LA(1)
@@ -6390,11 +6439,11 @@ class CParser(Parser):
 
 
                     if alt61 == 1:
-                        # C.g:389:25: '&' equality_expression
-                        self.match(self.input, 66, self.FOLLOW_66_in_and_expression1734)
+                        # C.g:404:25: '&' equality_expression
+                        self.match(self.input, 66, self.FOLLOW_66_in_and_expression1740)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_equality_expression_in_and_expression1736)
+                        self.following.append(self.FOLLOW_equality_expression_in_and_expression1742)
                         self.equality_expression()
                         self.following.pop()
                         if self.failed:
@@ -6424,7 +6473,7 @@ class CParser(Parser):
 
 
     # $ANTLR start equality_expression
-    # C.g:391:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
+    # C.g:406:1: equality_expression : relational_expression ( ( '==' | '!=' ) relational_expression )* ;
     def equality_expression(self, ):
 
         equality_expression_StartIndex = self.input.index()
@@ -6433,14 +6482,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 56):
                     return 
 
-                # C.g:392:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
-                # C.g:392:4: relational_expression ( ( '==' | '!=' ) relational_expression )*
-                self.following.append(self.FOLLOW_relational_expression_in_equality_expression1748)
+                # C.g:407:2: ( relational_expression ( ( '==' | '!=' ) relational_expression )* )
+                # C.g:407: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:392:26: ( ( '==' | '!=' ) relational_expression )*
+                # C.g:407:26: ( ( '==' | '!=' ) relational_expression )*
                 while True: #loop62
                     alt62 = 2
                     LA62_0 = self.input.LA(1)
@@ -6450,7 +6499,7 @@ class CParser(Parser):
 
 
                     if alt62 == 1:
-                        # C.g:392:27: ( '==' | '!=' ) relational_expression
+                        # C.g:407:27: ( '==' | '!=' ) relational_expression
                         if (84 <= self.input.LA(1) <= 85):
                             self.input.consume();
                             self.errorRecovery = False
@@ -6463,12 +6512,12 @@ class CParser(Parser):
 
                             mse = MismatchedSetException(None, self.input)
                             self.recoverFromMismatchedSet(
-                                self.input, mse, self.FOLLOW_set_in_equality_expression1751
+                                self.input, mse, self.FOLLOW_set_in_equality_expression1757
                                 )
                             raise mse
 
 
-   &