1. Add file header for all __init__.py
authorqhuang8 <qhuang8@c2973edb-eda0-4c78-bc6a-9341b269661f>
Wed, 24 Feb 2010 02:40:19 +0000 (02:40 +0000)
committerqhuang8 <qhuang8@c2973edb-eda0-4c78-bc6a-9341b269661f>
Wed, 24 Feb 2010 02:40:19 +0000 (02:40 +0000)
2. Update ANTLR grammar file C.g to inject file header to the output CLexer.py and CParser.py

git-svn-id: https://edk2-buildtools.svn.sourceforge.net/svnroot/edk2-buildtools/trunk/BaseTools@1887 c2973edb-eda0-4c78-bc6a-9341b269661f

24 files changed:
Source/Python/AutoGen/__init__.py
Source/Python/Common/__init__.py
Source/Python/CommonDataClass/__init__.py
Source/Python/Ecc/C.g
Source/Python/Ecc/CLexer.py
Source/Python/Ecc/CParser.py
Source/Python/Ecc/__init__.py
Source/Python/Eot/CLexer.py
Source/Python/Eot/CParser.py
Source/Python/Eot/__init__.py
Source/Python/Fdb/__init__.py
Source/Python/FixFlash/__init__.py
Source/Python/GenFds/__init__.py
Source/Python/GenPatchPcdTable/__init__.py
Source/Python/MigrationMsa2Inf/__init__.py
Source/Python/MkBOM/__init__.py
Source/Python/PatchPcdValue/__init__.py
Source/Python/Table/__init__.py
Source/Python/TargetTool/__init__.py
Source/Python/Workspace/__init__.py
Source/Python/build/__init__.py
Source/Python/fpd2dsc/__init__.py
Source/Python/msa2inf/__init__.py
Source/Python/spd2dec/__init__.py

index d6fa5ec..737cb0c 100644 (file)
@@ -1,4 +1,10 @@
-# Copyright (c) 2007, Intel Corporation\r
+## @file\r
+# Python 'AutoGen' package initialization file.\r
+#\r
+# This file is required to make Python interpreter treat the directory\r
+# as containing package.\r
+#\r
+# Copyright (c) 2007 - 2010, Intel Corporation<BR>\r
 # All rights reserved. This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -6,5 +12,6 @@
 #\r
 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
 \r
 __all__ = ["AutoGen"]\r
index e69de29..b289a2b 100644 (file)
@@ -0,0 +1,15 @@
+## @file\r
+# Python 'Common' package initialization file.\r
+#\r
+# This file is required to make Python interpreter treat the directory\r
+# as containing package.\r
+#\r
+# Copyright (c) 2007 - 2010, Intel Corporation<BR>\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution.  The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
index e69de29..8f81773 100644 (file)
@@ -0,0 +1,15 @@
+## @file\r
+# Python 'CommonDataClass' package initialization file.\r
+#\r
+# This file is required to make Python interpreter treat the directory\r
+# as containing package.\r
+#\r
+# Copyright (c) 2007 - 2010, Intel Corporation<BR>\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution.  The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
index 70d9891..a34f590 100644 (file)
@@ -19,9 +19,49 @@ options {
     k=2;\r
 }\r
 \r
+@lexer::header{\r
+## @file\r
+# The file defines the Lexer for C source files.\r
+#\r
+# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
+# This file is generated by running:\r
+# java org.antlr.Tool C.g\r
+#\r
+# Copyright (c) 2009 - 2010, Intel Corporation  All rights reserved.\r
+#\r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution.  The full text of the license may be found at:\r
+#   http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+}\r
+\r
 @header {\r
-    import CodeFragment\r
-    import FileProfile\r
+## @file\r
+# The file defines the parser for C source files.\r
+#\r
+# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
+# This file is generated by running:\r
+# java org.antlr.Tool C.g\r
+#\r
+# Copyright (c) 2009 - 2010, Intel Corporation  All rights reserved.\r
+#\r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution.  The full text of the license may be found at:\r
+#   http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+\r
+import CodeFragment\r
+import FileProfile\r
 }\r
 \r
 @members {\r
index 82fb8d0..947ac4c 100644 (file)
@@ -1,7 +1,27 @@
-# $ANTLR 3.0.1 C.g 2010-01-21 14:45:07
+# $ANTLR 3.0.1 C.g 2010-02-23 09:58:53
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
+                        \r
+## @file\r
+# The file defines the Lexer for C source files.\r
+#\r
+# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
+# This file is generated by running:\r
+# java org.antlr.Tool C.g\r
+#\r
+# Copyright (c) 2009 - 2010, Intel Corporation  All rights reserved.\r
+#\r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution.  The full text of the license may be found at:\r
+#   http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+
 
 
 # for convenience in actions
@@ -163,8 +183,8 @@ class CLexer(Lexer):
         try:
             self.type = T25
 
-            # C.g:7:5: ( ';' )
-            # C.g:7:7: ';'
+            # C.g:27:5: ( ';' )
+            # C.g:27:7: ';'
             self.match(u';')
 
 
@@ -185,8 +205,8 @@ class CLexer(Lexer):
         try:
             self.type = T26
 
-            # C.g:8:5: ( 'typedef' )
-            # C.g:8:7: 'typedef'
+            # C.g:28:5: ( 'typedef' )
+            # C.g:28:7: 'typedef'
             self.match("typedef")
 
 
@@ -208,8 +228,8 @@ class CLexer(Lexer):
         try:
             self.type = T27
 
-            # C.g:9:5: ( ',' )
-            # C.g:9:7: ','
+            # C.g:29:5: ( ',' )
+            # C.g:29:7: ','
             self.match(u',')
 
 
@@ -230,8 +250,8 @@ class CLexer(Lexer):
         try:
             self.type = T28
 
-            # C.g:10:5: ( '=' )
-            # C.g:10:7: '='
+            # C.g:30:5: ( '=' )
+            # C.g:30:7: '='
             self.match(u'=')
 
 
@@ -252,8 +272,8 @@ class CLexer(Lexer):
         try:
             self.type = T29
 
-            # C.g:11:5: ( 'extern' )
-            # C.g:11:7: 'extern'
+            # C.g:31:5: ( 'extern' )
+            # C.g:31:7: 'extern'
             self.match("extern")
 
 
@@ -275,8 +295,8 @@ class CLexer(Lexer):
         try:
             self.type = T30
 
-            # C.g:12:5: ( 'static' )
-            # C.g:12:7: 'static'
+            # C.g:32:5: ( 'static' )
+            # C.g:32:7: 'static'
             self.match("static")
 
 
@@ -298,8 +318,8 @@ class CLexer(Lexer):
         try:
             self.type = T31
 
-            # C.g:13:5: ( 'auto' )
-            # C.g:13:7: 'auto'
+            # C.g:33:5: ( 'auto' )
+            # C.g:33:7: 'auto'
             self.match("auto")
 
 
@@ -321,8 +341,8 @@ class CLexer(Lexer):
         try:
             self.type = T32
 
-            # C.g:14:5: ( 'register' )
-            # C.g:14:7: 'register'
+            # C.g:34:5: ( 'register' )
+            # C.g:34:7: 'register'
             self.match("register")
 
 
@@ -344,8 +364,8 @@ class CLexer(Lexer):
         try:
             self.type = T33
 
-            # C.g:15:5: ( 'STATIC' )
-            # C.g:15:7: 'STATIC'
+            # C.g:35:5: ( 'STATIC' )
+            # C.g:35:7: 'STATIC'
             self.match("STATIC")
 
 
@@ -367,8 +387,8 @@ class CLexer(Lexer):
         try:
             self.type = T34
 
-            # C.g:16:5: ( 'void' )
-            # C.g:16:7: 'void'
+            # C.g:36:5: ( 'void' )
+            # C.g:36:7: 'void'
             self.match("void")
 
 
@@ -390,8 +410,8 @@ class CLexer(Lexer):
         try:
             self.type = T35
 
-            # C.g:17:5: ( 'char' )
-            # C.g:17:7: 'char'
+            # C.g:37:5: ( 'char' )
+            # C.g:37:7: 'char'
             self.match("char")
 
 
@@ -413,8 +433,8 @@ class CLexer(Lexer):
         try:
             self.type = T36
 
-            # C.g:18:5: ( 'short' )
-            # C.g:18:7: 'short'
+            # C.g:38:5: ( 'short' )
+            # C.g:38:7: 'short'
             self.match("short")
 
 
@@ -436,8 +456,8 @@ class CLexer(Lexer):
         try:
             self.type = T37
 
-            # C.g:19:5: ( 'int' )
-            # C.g:19:7: 'int'
+            # C.g:39:5: ( 'int' )
+            # C.g:39:7: 'int'
             self.match("int")
 
 
@@ -459,8 +479,8 @@ class CLexer(Lexer):
         try:
             self.type = T38
 
-            # C.g:20:5: ( 'long' )
-            # C.g:20:7: 'long'
+            # C.g:40:5: ( 'long' )
+            # C.g:40:7: 'long'
             self.match("long")
 
 
@@ -482,8 +502,8 @@ class CLexer(Lexer):
         try:
             self.type = T39
 
-            # C.g:21:5: ( 'float' )
-            # C.g:21:7: 'float'
+            # C.g:41:5: ( 'float' )
+            # C.g:41:7: 'float'
             self.match("float")
 
 
@@ -505,8 +525,8 @@ class CLexer(Lexer):
         try:
             self.type = T40
 
-            # C.g:22:5: ( 'double' )
-            # C.g:22:7: 'double'
+            # C.g:42:5: ( 'double' )
+            # C.g:42:7: 'double'
             self.match("double")
 
 
@@ -528,8 +548,8 @@ class CLexer(Lexer):
         try:
             self.type = T41
 
-            # C.g:23:5: ( 'signed' )
-            # C.g:23:7: 'signed'
+            # C.g:43:5: ( 'signed' )
+            # C.g:43:7: 'signed'
             self.match("signed")
 
 
@@ -551,8 +571,8 @@ class CLexer(Lexer):
         try:
             self.type = T42
 
-            # C.g:24:5: ( 'unsigned' )
-            # C.g:24:7: 'unsigned'
+            # C.g:44:5: ( 'unsigned' )
+            # C.g:44:7: 'unsigned'
             self.match("unsigned")
 
 
@@ -574,8 +594,8 @@ class CLexer(Lexer):
         try:
             self.type = T43
 
-            # C.g:25:5: ( '{' )
-            # C.g:25:7: '{'
+            # C.g:45:5: ( '{' )
+            # C.g:45:7: '{'
             self.match(u'{')
 
 
@@ -596,8 +616,8 @@ class CLexer(Lexer):
         try:
             self.type = T44
 
-            # C.g:26:5: ( '}' )
-            # C.g:26:7: '}'
+            # C.g:46:5: ( '}' )
+            # C.g:46:7: '}'
             self.match(u'}')
 
 
@@ -618,8 +638,8 @@ class CLexer(Lexer):
         try:
             self.type = T45
 
-            # C.g:27:5: ( 'struct' )
-            # C.g:27:7: 'struct'
+            # C.g:47:5: ( 'struct' )
+            # C.g:47:7: 'struct'
             self.match("struct")
 
 
@@ -641,8 +661,8 @@ class CLexer(Lexer):
         try:
             self.type = T46
 
-            # C.g:28:5: ( 'union' )
-            # C.g:28:7: 'union'
+            # C.g:48:5: ( 'union' )
+            # C.g:48:7: 'union'
             self.match("union")
 
 
@@ -664,8 +684,8 @@ class CLexer(Lexer):
         try:
             self.type = T47
 
-            # C.g:29:5: ( ':' )
-            # C.g:29:7: ':'
+            # C.g:49:5: ( ':' )
+            # C.g:49:7: ':'
             self.match(u':')
 
 
@@ -686,8 +706,8 @@ class CLexer(Lexer):
         try:
             self.type = T48
 
-            # C.g:30:5: ( 'enum' )
-            # C.g:30:7: 'enum'
+            # C.g:50:5: ( 'enum' )
+            # C.g:50:7: 'enum'
             self.match("enum")
 
 
@@ -709,8 +729,8 @@ class CLexer(Lexer):
         try:
             self.type = T49
 
-            # C.g:31:5: ( 'const' )
-            # C.g:31:7: 'const'
+            # C.g:51:5: ( 'const' )
+            # C.g:51:7: 'const'
             self.match("const")
 
 
@@ -732,8 +752,8 @@ class CLexer(Lexer):
         try:
             self.type = T50
 
-            # C.g:32:5: ( 'volatile' )
-            # C.g:32:7: 'volatile'
+            # C.g:52:5: ( 'volatile' )
+            # C.g:52:7: 'volatile'
             self.match("volatile")
 
 
@@ -755,8 +775,8 @@ class CLexer(Lexer):
         try:
             self.type = T51
 
-            # C.g:33:5: ( 'IN' )
-            # C.g:33:7: 'IN'
+            # C.g:53:5: ( 'IN' )
+            # C.g:53:7: 'IN'
             self.match("IN")
 
 
@@ -778,8 +798,8 @@ class CLexer(Lexer):
         try:
             self.type = T52
 
-            # C.g:34:5: ( 'OUT' )
-            # C.g:34:7: 'OUT'
+            # C.g:54:5: ( 'OUT' )
+            # C.g:54:7: 'OUT'
             self.match("OUT")
 
 
@@ -801,8 +821,8 @@ class CLexer(Lexer):
         try:
             self.type = T53
 
-            # C.g:35:5: ( 'OPTIONAL' )
-            # C.g:35:7: 'OPTIONAL'
+            # C.g:55:5: ( 'OPTIONAL' )
+            # C.g:55:7: 'OPTIONAL'
             self.match("OPTIONAL")
 
 
@@ -824,8 +844,8 @@ class CLexer(Lexer):
         try:
             self.type = T54
 
-            # C.g:36:5: ( 'CONST' )
-            # C.g:36:7: 'CONST'
+            # C.g:56:5: ( 'CONST' )
+            # C.g:56:7: 'CONST'
             self.match("CONST")
 
 
@@ -847,8 +867,8 @@ class CLexer(Lexer):
         try:
             self.type = T55
 
-            # C.g:37:5: ( 'UNALIGNED' )
-            # C.g:37:7: 'UNALIGNED'
+            # C.g:57:5: ( 'UNALIGNED' )
+            # C.g:57:7: 'UNALIGNED'
             self.match("UNALIGNED")
 
 
@@ -870,8 +890,8 @@ class CLexer(Lexer):
         try:
             self.type = T56
 
-            # C.g:38:5: ( 'VOLATILE' )
-            # C.g:38:7: 'VOLATILE'
+            # C.g:58:5: ( 'VOLATILE' )
+            # C.g:58:7: 'VOLATILE'
             self.match("VOLATILE")
 
 
@@ -893,8 +913,8 @@ class CLexer(Lexer):
         try:
             self.type = T57
 
-            # C.g:39:5: ( 'GLOBAL_REMOVE_IF_UNREFERENCED' )
-            # C.g:39:7: 'GLOBAL_REMOVE_IF_UNREFERENCED'
+            # C.g:59:5: ( 'GLOBAL_REMOVE_IF_UNREFERENCED' )
+            # C.g:59:7: 'GLOBAL_REMOVE_IF_UNREFERENCED'
             self.match("GLOBAL_REMOVE_IF_UNREFERENCED")
 
 
@@ -916,8 +936,8 @@ class CLexer(Lexer):
         try:
             self.type = T58
 
-            # C.g:40:5: ( 'EFIAPI' )
-            # C.g:40:7: 'EFIAPI'
+            # C.g:60:5: ( 'EFIAPI' )
+            # C.g:60:7: 'EFIAPI'
             self.match("EFIAPI")
 
 
@@ -939,8 +959,8 @@ class CLexer(Lexer):
         try:
             self.type = T59
 
-            # C.g:41:5: ( 'EFI_BOOTSERVICE' )
-            # C.g:41:7: 'EFI_BOOTSERVICE'
+            # C.g:61:5: ( 'EFI_BOOTSERVICE' )
+            # C.g:61:7: 'EFI_BOOTSERVICE'
             self.match("EFI_BOOTSERVICE")
 
 
@@ -962,8 +982,8 @@ class CLexer(Lexer):
         try:
             self.type = T60
 
-            # C.g:42:5: ( 'EFI_RUNTIMESERVICE' )
-            # C.g:42:7: 'EFI_RUNTIMESERVICE'
+            # C.g:62:5: ( 'EFI_RUNTIMESERVICE' )
+            # C.g:62:7: 'EFI_RUNTIMESERVICE'
             self.match("EFI_RUNTIMESERVICE")
 
 
@@ -985,8 +1005,8 @@ class CLexer(Lexer):
         try:
             self.type = T61
 
-            # C.g:43:5: ( 'PACKED' )
-            # C.g:43:7: 'PACKED'
+            # C.g:63:5: ( 'PACKED' )
+            # C.g:63:7: 'PACKED'
             self.match("PACKED")
 
 
@@ -1008,8 +1028,8 @@ class CLexer(Lexer):
         try:
             self.type = T62
 
-            # C.g:44:5: ( '(' )
-            # C.g:44:7: '('
+            # C.g:64:5: ( '(' )
+            # C.g:64:7: '('
             self.match(u'(')
 
 
@@ -1030,8 +1050,8 @@ class CLexer(Lexer):
         try:
             self.type = T63
 
-            # C.g:45:5: ( ')' )
-            # C.g:45:7: ')'
+            # C.g:65:5: ( ')' )
+            # C.g:65:7: ')'
             self.match(u')')
 
 
@@ -1052,8 +1072,8 @@ class CLexer(Lexer):
         try:
             self.type = T64
 
-            # C.g:46:5: ( '[' )
-            # C.g:46:7: '['
+            # C.g:66:5: ( '[' )
+            # C.g:66:7: '['
             self.match(u'[')
 
 
@@ -1074,8 +1094,8 @@ class CLexer(Lexer):
         try:
             self.type = T65
 
-            # C.g:47:5: ( ']' )
-            # C.g:47:7: ']'
+            # C.g:67:5: ( ']' )
+            # C.g:67:7: ']'
             self.match(u']')
 
 
@@ -1096,8 +1116,8 @@ class CLexer(Lexer):
         try:
             self.type = T66
 
-            # C.g:48:5: ( '*' )
-            # C.g:48:7: '*'
+            # C.g:68:5: ( '*' )
+            # C.g:68:7: '*'
             self.match(u'*')
 
 
@@ -1118,8 +1138,8 @@ class CLexer(Lexer):
         try:
             self.type = T67
 
-            # C.g:49:5: ( '...' )
-            # C.g:49:7: '...'
+            # C.g:69:5: ( '...' )
+            # C.g:69:7: '...'
             self.match("...")
 
 
@@ -1141,8 +1161,8 @@ class CLexer(Lexer):
         try:
             self.type = T68
 
-            # C.g:50:5: ( '+' )
-            # C.g:50:7: '+'
+            # C.g:70:5: ( '+' )
+            # C.g:70:7: '+'
             self.match(u'+')
 
 
@@ -1163,8 +1183,8 @@ class CLexer(Lexer):
         try:
             self.type = T69
 
-            # C.g:51:5: ( '-' )
-            # C.g:51:7: '-'
+            # C.g:71:5: ( '-' )
+            # C.g:71:7: '-'
             self.match(u'-')
 
 
@@ -1185,8 +1205,8 @@ class CLexer(Lexer):
         try:
             self.type = T70
 
-            # C.g:52:5: ( '/' )
-            # C.g:52:7: '/'
+            # C.g:72:5: ( '/' )
+            # C.g:72:7: '/'
             self.match(u'/')
 
 
@@ -1207,8 +1227,8 @@ class CLexer(Lexer):
         try:
             self.type = T71
 
-            # C.g:53:5: ( '%' )
-            # C.g:53:7: '%'
+            # C.g:73:5: ( '%' )
+            # C.g:73:7: '%'
             self.match(u'%')
 
 
@@ -1229,8 +1249,8 @@ class CLexer(Lexer):
         try:
             self.type = T72
 
-            # C.g:54:5: ( '++' )
-            # C.g:54:7: '++'
+            # C.g:74:5: ( '++' )
+            # C.g:74:7: '++'
             self.match("++")
 
 
@@ -1252,8 +1272,8 @@ class CLexer(Lexer):
         try:
             self.type = T73
 
-            # C.g:55:5: ( '--' )
-            # C.g:55:7: '--'
+            # C.g:75:5: ( '--' )
+            # C.g:75:7: '--'
             self.match("--")
 
 
@@ -1275,8 +1295,8 @@ class CLexer(Lexer):
         try:
             self.type = T74
 
-            # C.g:56:5: ( 'sizeof' )
-            # C.g:56:7: 'sizeof'
+            # C.g:76:5: ( 'sizeof' )
+            # C.g:76:7: 'sizeof'
             self.match("sizeof")
 
 
@@ -1298,8 +1318,8 @@ class CLexer(Lexer):
         try:
             self.type = T75
 
-            # C.g:57:5: ( '.' )
-            # C.g:57:7: '.'
+            # C.g:77:5: ( '.' )
+            # C.g:77:7: '.'
             self.match(u'.')
 
 
@@ -1320,8 +1340,8 @@ class CLexer(Lexer):
         try:
             self.type = T76
 
-            # C.g:58:5: ( '->' )
-            # C.g:58:7: '->'
+            # C.g:78:5: ( '->' )
+            # C.g:78:7: '->'
             self.match("->")
 
 
@@ -1343,8 +1363,8 @@ class CLexer(Lexer):
         try:
             self.type = T77
 
-            # C.g:59:5: ( '&' )
-            # C.g:59:7: '&'
+            # C.g:79:5: ( '&' )
+            # C.g:79:7: '&'
             self.match(u'&')
 
 
@@ -1365,8 +1385,8 @@ class CLexer(Lexer):
         try:
             self.type = T78
 
-            # C.g:60:5: ( '~' )
-            # C.g:60:7: '~'
+            # C.g:80:5: ( '~' )
+            # C.g:80:7: '~'
             self.match(u'~')
 
 
@@ -1387,8 +1407,8 @@ class CLexer(Lexer):
         try:
             self.type = T79
 
-            # C.g:61:5: ( '!' )
-            # C.g:61:7: '!'
+            # C.g:81:5: ( '!' )
+            # C.g:81:7: '!'
             self.match(u'!')
 
 
@@ -1409,8 +1429,8 @@ class CLexer(Lexer):
         try:
             self.type = T80
 
-            # C.g:62:5: ( '*=' )
-            # C.g:62:7: '*='
+            # C.g:82:5: ( '*=' )
+            # C.g:82:7: '*='
             self.match("*=")
 
 
@@ -1432,8 +1452,8 @@ class CLexer(Lexer):
         try:
             self.type = T81
 
-            # C.g:63:5: ( '/=' )
-            # C.g:63:7: '/='
+            # C.g:83:5: ( '/=' )
+            # C.g:83:7: '/='
             self.match("/=")
 
 
@@ -1455,8 +1475,8 @@ class CLexer(Lexer):
         try:
             self.type = T82
 
-            # C.g:64:5: ( '%=' )
-            # C.g:64:7: '%='
+            # C.g:84:5: ( '%=' )
+            # C.g:84:7: '%='
             self.match("%=")
 
 
@@ -1478,8 +1498,8 @@ class CLexer(Lexer):
         try:
             self.type = T83
 
-            # C.g:65:5: ( '+=' )
-            # C.g:65:7: '+='
+            # C.g:85:5: ( '+=' )
+            # C.g:85:7: '+='
             self.match("+=")
 
 
@@ -1501,8 +1521,8 @@ class CLexer(Lexer):
         try:
             self.type = T84
 
-            # C.g:66:5: ( '-=' )
-            # C.g:66:7: '-='
+            # C.g:86:5: ( '-=' )
+            # C.g:86:7: '-='
             self.match("-=")
 
 
@@ -1524,8 +1544,8 @@ class CLexer(Lexer):
         try:
             self.type = T85
 
-            # C.g:67:5: ( '<<=' )
-            # C.g:67:7: '<<='
+            # C.g:87:5: ( '<<=' )
+            # C.g:87:7: '<<='
             self.match("<<=")
 
 
@@ -1547,8 +1567,8 @@ class CLexer(Lexer):
         try:
             self.type = T86
 
-            # C.g:68:5: ( '>>=' )
-            # C.g:68:7: '>>='
+            # C.g:88:5: ( '>>=' )
+            # C.g:88:7: '>>='
             self.match(">>=")
 
 
@@ -1570,8 +1590,8 @@ class CLexer(Lexer):
         try:
             self.type = T87
 
-            # C.g:69:5: ( '&=' )
-            # C.g:69:7: '&='
+            # C.g:89:5: ( '&=' )
+            # C.g:89:7: '&='
             self.match("&=")
 
 
@@ -1593,8 +1613,8 @@ class CLexer(Lexer):
         try:
             self.type = T88
 
-            # C.g:70:5: ( '^=' )
-            # C.g:70:7: '^='
+            # C.g:90:5: ( '^=' )
+            # C.g:90:7: '^='
             self.match("^=")
 
 
@@ -1616,8 +1636,8 @@ class CLexer(Lexer):
         try:
             self.type = T89
 
-            # C.g:71:5: ( '|=' )
-            # C.g:71:7: '|='
+            # C.g:91:5: ( '|=' )
+            # C.g:91:7: '|='
             self.match("|=")
 
 
@@ -1639,8 +1659,8 @@ class CLexer(Lexer):
         try:
             self.type = T90
 
-            # C.g:72:5: ( '?' )
-            # C.g:72:7: '?'
+            # C.g:92:5: ( '?' )
+            # C.g:92:7: '?'
             self.match(u'?')
 
 
@@ -1661,8 +1681,8 @@ class CLexer(Lexer):
         try:
             self.type = T91
 
-            # C.g:73:5: ( '||' )
-            # C.g:73:7: '||'
+            # C.g:93:5: ( '||' )
+            # C.g:93:7: '||'
             self.match("||")
 
 
@@ -1684,8 +1704,8 @@ class CLexer(Lexer):
         try:
             self.type = T92
 
-            # C.g:74:5: ( '&&' )
-            # C.g:74:7: '&&'
+            # C.g:94:5: ( '&&' )
+            # C.g:94:7: '&&'
             self.match("&&")
 
 
@@ -1707,8 +1727,8 @@ class CLexer(Lexer):
         try:
             self.type = T93
 
-            # C.g:75:5: ( '|' )
-            # C.g:75:7: '|'
+            # C.g:95:5: ( '|' )
+            # C.g:95:7: '|'
             self.match(u'|')
 
 
@@ -1729,8 +1749,8 @@ class CLexer(Lexer):
         try:
             self.type = T94
 
-            # C.g:76:5: ( '^' )
-            # C.g:76:7: '^'
+            # C.g:96:5: ( '^' )
+            # C.g:96:7: '^'
             self.match(u'^')
 
 
@@ -1751,8 +1771,8 @@ class CLexer(Lexer):
         try:
             self.type = T95
 
-            # C.g:77:5: ( '==' )
-            # C.g:77:7: '=='
+            # C.g:97:5: ( '==' )
+            # C.g:97:7: '=='
             self.match("==")
 
 
@@ -1774,8 +1794,8 @@ class CLexer(Lexer):
         try:
             self.type = T96
 
-            # C.g:78:5: ( '!=' )
-            # C.g:78:7: '!='
+            # C.g:98:5: ( '!=' )
+            # C.g:98:7: '!='
             self.match("!=")
 
 
@@ -1797,8 +1817,8 @@ class CLexer(Lexer):
         try:
             self.type = T97
 
-            # C.g:79:5: ( '<' )
-            # C.g:79:7: '<'
+            # C.g:99:5: ( '<' )
+            # C.g:99:7: '<'
             self.match(u'<')
 
 
@@ -1819,8 +1839,8 @@ class CLexer(Lexer):
         try:
             self.type = T98
 
-            # C.g:80:5: ( '>' )
-            # C.g:80:7: '>'
+            # C.g:100:5: ( '>' )
+            # C.g:100:7: '>'
             self.match(u'>')
 
 
@@ -1841,8 +1861,8 @@ class CLexer(Lexer):
         try:
             self.type = T99
 
-            # C.g:81:5: ( '<=' )
-            # C.g:81:7: '<='
+            # C.g:101:5: ( '<=' )
+            # C.g:101:7: '<='
             self.match("<=")
 
 
@@ -1864,8 +1884,8 @@ class CLexer(Lexer):
         try:
             self.type = T100
 
-            # C.g:82:6: ( '>=' )
-            # C.g:82:8: '>='
+            # C.g:102:6: ( '>=' )
+            # C.g:102:8: '>='
             self.match(">=")
 
 
@@ -1887,8 +1907,8 @@ class CLexer(Lexer):
         try:
             self.type = T101
 
-            # C.g:83:6: ( '<<' )
-            # C.g:83:8: '<<'
+            # C.g:103:6: ( '<<' )
+            # C.g:103:8: '<<'
             self.match("<<")
 
 
@@ -1910,8 +1930,8 @@ class CLexer(Lexer):
         try:
             self.type = T102
 
-            # C.g:84:6: ( '>>' )
-            # C.g:84:8: '>>'
+            # C.g:104:6: ( '>>' )
+            # C.g:104:8: '>>'
             self.match(">>")
 
 
@@ -1933,8 +1953,8 @@ class CLexer(Lexer):
         try:
             self.type = T103
 
-            # C.g:85:6: ( '__asm__' )
-            # C.g:85:8: '__asm__'
+            # C.g:105:6: ( '__asm__' )
+            # C.g:105:8: '__asm__'
             self.match("__asm__")
 
 
@@ -1956,8 +1976,8 @@ class CLexer(Lexer):
         try:
             self.type = T104
 
-            # C.g:86:6: ( '_asm' )
-            # C.g:86:8: '_asm'
+            # C.g:106:6: ( '_asm' )
+            # C.g:106:8: '_asm'
             self.match("_asm")
 
 
@@ -1979,8 +1999,8 @@ class CLexer(Lexer):
         try:
             self.type = T105
 
-            # C.g:87:6: ( '__asm' )
-            # C.g:87:8: '__asm'
+            # C.g:107:6: ( '__asm' )
+            # C.g:107:8: '__asm'
             self.match("__asm")
 
 
@@ -2002,8 +2022,8 @@ class CLexer(Lexer):
         try:
             self.type = T106
 
-            # C.g:88:6: ( 'case' )
-            # C.g:88:8: 'case'
+            # C.g:108:6: ( 'case' )
+            # C.g:108:8: 'case'
             self.match("case")
 
 
@@ -2025,8 +2045,8 @@ class CLexer(Lexer):
         try:
             self.type = T107
 
-            # C.g:89:6: ( 'default' )
-            # C.g:89:8: 'default'
+            # C.g:109:6: ( 'default' )
+            # C.g:109:8: 'default'
             self.match("default")
 
 
@@ -2048,8 +2068,8 @@ class CLexer(Lexer):
         try:
             self.type = T108
 
-            # C.g:90:6: ( 'if' )
-            # C.g:90:8: 'if'
+            # C.g:110:6: ( 'if' )
+            # C.g:110:8: 'if'
             self.match("if")
 
 
@@ -2071,8 +2091,8 @@ class CLexer(Lexer):
         try:
             self.type = T109
 
-            # C.g:91:6: ( 'else' )
-            # C.g:91:8: 'else'
+            # C.g:111:6: ( 'else' )
+            # C.g:111:8: 'else'
             self.match("else")
 
 
@@ -2094,8 +2114,8 @@ class CLexer(Lexer):
         try:
             self.type = T110
 
-            # C.g:92:6: ( 'switch' )
-            # C.g:92:8: 'switch'
+            # C.g:112:6: ( 'switch' )
+            # C.g:112:8: 'switch'
             self.match("switch")
 
 
@@ -2117,8 +2137,8 @@ class CLexer(Lexer):
         try:
             self.type = T111
 
-            # C.g:93:6: ( 'while' )
-            # C.g:93:8: 'while'
+            # C.g:113:6: ( 'while' )
+            # C.g:113:8: 'while'
             self.match("while")
 
 
@@ -2140,8 +2160,8 @@ class CLexer(Lexer):
         try:
             self.type = T112
 
-            # C.g:94:6: ( 'do' )
-            # C.g:94:8: 'do'
+            # C.g:114:6: ( 'do' )
+            # C.g:114:8: 'do'
             self.match("do")
 
 
@@ -2163,8 +2183,8 @@ class CLexer(Lexer):
         try:
             self.type = T113
 
-            # C.g:95:6: ( 'for' )
-            # C.g:95:8: 'for'
+            # C.g:115:6: ( 'for' )
+            # C.g:115:8: 'for'
             self.match("for")
 
 
@@ -2186,8 +2206,8 @@ class CLexer(Lexer):
         try:
             self.type = T114
 
-            # C.g:96:6: ( 'goto' )
-            # C.g:96:8: 'goto'
+            # C.g:116:6: ( 'goto' )
+            # C.g:116:8: 'goto'
             self.match("goto")
 
 
@@ -2209,8 +2229,8 @@ class CLexer(Lexer):
         try:
             self.type = T115
 
-            # C.g:97:6: ( 'continue' )
-            # C.g:97:8: 'continue'
+            # C.g:117:6: ( 'continue' )
+            # C.g:117:8: 'continue'
             self.match("continue")
 
 
@@ -2232,8 +2252,8 @@ class CLexer(Lexer):
         try:
             self.type = T116
 
-            # C.g:98:6: ( 'break' )
-            # C.g:98:8: 'break'
+            # C.g:118:6: ( 'break' )
+            # C.g:118:8: 'break'
             self.match("break")
 
 
@@ -2255,8 +2275,8 @@ class CLexer(Lexer):
         try:
             self.type = T117
 
-            # C.g:99:6: ( 'return' )
-            # C.g:99:8: 'return'
+            # C.g:119:6: ( 'return' )
+            # C.g:119:8: 'return'
             self.match("return")
 
 
@@ -2278,11 +2298,11 @@ class CLexer(Lexer):
         try:
             self.type = IDENTIFIER
 
-            # C.g:534:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:534:4: LETTER ( LETTER | '0' .. '9' )*
+            # C.g:586:2: ( LETTER ( LETTER | '0' .. '9' )* )
+            # C.g:586:4: LETTER ( LETTER | '0' .. '9' )*
             self.mLETTER()
 
-            # C.g:534:11: ( LETTER | '0' .. '9' )*
+            # C.g:586:11: ( LETTER | '0' .. '9' )*
             while True: #loop1
                 alt1 = 2
                 LA1_0 = self.input.LA(1)
@@ -2324,7 +2344,7 @@ class CLexer(Lexer):
     def mLETTER(self, ):
 
         try:
-            # C.g:539:2: ( '$' | 'A' .. 'Z' | 'a' .. 'z' | '_' )
+            # C.g:591: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();
@@ -2353,16 +2373,16 @@ class CLexer(Lexer):
         try:
             self.type = CHARACTER_LITERAL
 
-            # C.g:546:5: ( ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:546:9: ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
-            # C.g:546:9: ( 'L' )?
+            # C.g:598:5: ( ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
+            # C.g:598:9: ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
+            # C.g:598:9: ( 'L' )?
             alt2 = 2
             LA2_0 = self.input.LA(1)
 
             if (LA2_0 == u'L') :
                 alt2 = 1
             if alt2 == 1:
-                # C.g:546:10: 'L'
+                # C.g:598:10: 'L'
                 self.match(u'L')
 
 
@@ -2370,7 +2390,7 @@ class CLexer(Lexer):
 
             self.match(u'\'')
 
-            # C.g:546:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:598:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
@@ -2379,18 +2399,18 @@ class CLexer(Lexer):
             elif ((u'\u0000' <= LA3_0 <= u'&') or (u'(' <= LA3_0 <= u'[') or (u']' <= LA3_0 <= u'\uFFFE')) :
                 alt3 = 2
             else:
-                nvae = NoViableAltException("546:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
+                nvae = NoViableAltException("598:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
 
                 raise nvae
 
             if alt3 == 1:
-                # C.g:546:23: EscapeSequence
+                # C.g:598:23: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt3 == 2:
-                # C.g:546:40: ~ ( '\\'' | '\\\\' )
+                # C.g:598:40: ~ ( '\\'' | '\\\\' )
                 if (u'\u0000' <= self.input.LA(1) <= u'&') or (u'(' <= self.input.LA(1) <= u'[') or (u']' <= self.input.LA(1) <= u'\uFFFE'):
                     self.input.consume();
 
@@ -2423,16 +2443,16 @@ class CLexer(Lexer):
         try:
             self.type = STRING_LITERAL
 
-            # C.g:550:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:550:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:550:8: ( 'L' )?
+            # C.g:602:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+            # C.g:602:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+            # C.g:602:8: ( 'L' )?
             alt4 = 2
             LA4_0 = self.input.LA(1)
 
             if (LA4_0 == u'L') :
                 alt4 = 1
             if alt4 == 1:
-                # C.g:550:9: 'L'
+                # C.g:602:9: 'L'
                 self.match(u'L')
 
 
@@ -2440,7 +2460,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:550:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:602:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             while True: #loop5
                 alt5 = 3
                 LA5_0 = self.input.LA(1)
@@ -2452,13 +2472,13 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:550:21: EscapeSequence
+                    # C.g:602:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt5 == 2:
-                    # C.g:550:38: ~ ( '\\\\' | '\"' )
+                    # C.g:602: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();
 
@@ -2494,8 +2514,8 @@ class CLexer(Lexer):
         try:
             self.type = HEX_LITERAL
 
-            # C.g:553:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:553:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
+            # C.g:605:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
+            # C.g:605:15: '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
             if self.input.LA(1) == u'X' or self.input.LA(1) == u'x':
@@ -2507,7 +2527,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:553:29: ( HexDigit )+
+            # C.g:605:29: ( HexDigit )+
             cnt6 = 0
             while True: #loop6
                 alt6 = 2
@@ -2518,7 +2538,7 @@ class CLexer(Lexer):
 
 
                 if alt6 == 1:
-                    # C.g:553:29: HexDigit
+                    # C.g:605:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2533,14 +2553,14 @@ class CLexer(Lexer):
                 cnt6 += 1
 
 
-            # C.g:553:39: ( IntegerTypeSuffix )?
+            # C.g:605:39: ( IntegerTypeSuffix )?
             alt7 = 2
             LA7_0 = self.input.LA(1)
 
             if (LA7_0 == u'L' or LA7_0 == u'U' or LA7_0 == u'l' or LA7_0 == u'u') :
                 alt7 = 1
             if alt7 == 1:
-                # C.g:553:39: IntegerTypeSuffix
+                # C.g:605:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2564,9 +2584,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:555:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:555:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:555:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
+            # C.g:607:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
+            # C.g:607:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
+            # C.g:607:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )
             alt9 = 2
             LA9_0 = self.input.LA(1)
 
@@ -2575,21 +2595,21 @@ class CLexer(Lexer):
             elif ((u'1' <= LA9_0 <= u'9')) :
                 alt9 = 2
             else:
-                nvae = NoViableAltException("555:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 9, 0, self.input)
+                nvae = NoViableAltException("607:19: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 9, 0, self.input)
 
                 raise nvae
 
             if alt9 == 1:
-                # C.g:555:20: '0'
+                # C.g:607:20: '0'
                 self.match(u'0')
 
 
 
             elif alt9 == 2:
-                # C.g:555:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:607:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:555:35: ( '0' .. '9' )*
+                # C.g:607:35: ( '0' .. '9' )*
                 while True: #loop8
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
@@ -2599,7 +2619,7 @@ class CLexer(Lexer):
 
 
                     if alt8 == 1:
-                        # C.g:555:35: '0' .. '9'
+                        # C.g:607:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2611,14 +2631,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:555:46: ( IntegerTypeSuffix )?
+            # C.g:607:46: ( IntegerTypeSuffix )?
             alt10 = 2
             LA10_0 = self.input.LA(1)
 
             if (LA10_0 == u'L' or LA10_0 == u'U' or LA10_0 == u'l' or LA10_0 == u'u') :
                 alt10 = 1
             if alt10 == 1:
-                # C.g:555:46: IntegerTypeSuffix
+                # C.g:607:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2642,11 +2662,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:557:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:557:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
+            # C.g:609:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
+            # C.g:609:17: '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )?
             self.match(u'0')
 
-            # C.g:557:21: ( '0' .. '7' )+
+            # C.g:609:21: ( '0' .. '7' )+
             cnt11 = 0
             while True: #loop11
                 alt11 = 2
@@ -2657,7 +2677,7 @@ class CLexer(Lexer):
 
 
                 if alt11 == 1:
-                    # C.g:557:22: '0' .. '7'
+                    # C.g:609:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2672,14 +2692,14 @@ class CLexer(Lexer):
                 cnt11 += 1
 
 
-            # C.g:557:33: ( IntegerTypeSuffix )?
+            # C.g:609:33: ( IntegerTypeSuffix )?
             alt12 = 2
             LA12_0 = self.input.LA(1)
 
             if (LA12_0 == u'L' or LA12_0 == u'U' or LA12_0 == u'l' or LA12_0 == u'u') :
                 alt12 = 1
             if alt12 == 1:
-                # C.g:557:33: IntegerTypeSuffix
+                # C.g:609:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2701,8 +2721,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:560:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:560:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            # C.g:612:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            # C.g:612: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();
 
@@ -2728,7 +2748,7 @@ class CLexer(Lexer):
     def mIntegerTypeSuffix(self, ):
 
         try:
-            # C.g:564:2: ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) )
+            # C.g:616:2: ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) )
             alt13 = 4
             LA13_0 = self.input.LA(1)
 
@@ -2747,12 +2767,12 @@ class CLexer(Lexer):
             elif (LA13_0 == u'L' or LA13_0 == u'l') :
                 alt13 = 2
             else:
-                nvae = NoViableAltException("562:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) );", 13, 0, self.input)
+                nvae = NoViableAltException("614:1: fragment IntegerTypeSuffix : ( ( 'u' | 'U' ) | ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) | ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' ) );", 13, 0, self.input)
 
                 raise nvae
 
             if alt13 == 1:
-                # C.g:564:4: ( 'u' | 'U' )
+                # C.g:616:4: ( 'u' | 'U' )
                 if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
                     self.input.consume();
 
@@ -2765,7 +2785,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 2:
-                # C.g:565:4: ( 'l' | 'L' )
+                # C.g:617:4: ( 'l' | 'L' )
                 if self.input.LA(1) == u'L' or self.input.LA(1) == u'l':
                     self.input.consume();
 
@@ -2778,7 +2798,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 3:
-                # C.g:566:4: ( 'u' | 'U' ) ( 'l' | 'L' )
+                # C.g:618:4: ( 'u' | 'U' ) ( 'l' | 'L' )
                 if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
                     self.input.consume();
 
@@ -2800,7 +2820,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 4:
-                # C.g:567:4: ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' )
+                # C.g:619:4: ( 'u' | 'U' ) ( 'l' | 'L' ) ( 'l' | 'L' )
                 if self.input.LA(1) == u'U' or self.input.LA(1) == u'u':
                     self.input.consume();
 
@@ -2845,12 +2865,12 @@ class CLexer(Lexer):
         try:
             self.type = FLOATING_POINT_LITERAL
 
-            # C.g:571:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
+            # C.g:623:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix )
             alt25 = 4
             alt25 = self.dfa25.predict(self.input)
             if alt25 == 1:
-                # C.g:571:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:571:9: ( '0' .. '9' )+
+                # C.g:623:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:623:9: ( '0' .. '9' )+
                 cnt14 = 0
                 while True: #loop14
                     alt14 = 2
@@ -2861,7 +2881,7 @@ class CLexer(Lexer):
 
 
                     if alt14 == 1:
-                        # C.g:571:10: '0' .. '9'
+                        # C.g:623:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2878,7 +2898,7 @@ class CLexer(Lexer):
 
                 self.match(u'.')
 
-                # C.g:571:25: ( '0' .. '9' )*
+                # C.g:623:25: ( '0' .. '9' )*
                 while True: #loop15
                     alt15 = 2
                     LA15_0 = self.input.LA(1)
@@ -2888,7 +2908,7 @@ class CLexer(Lexer):
 
 
                     if alt15 == 1:
-                        # C.g:571:26: '0' .. '9'
+                        # C.g:623:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2897,27 +2917,27 @@ class CLexer(Lexer):
                         break #loop15
 
 
-                # C.g:571:37: ( Exponent )?
+                # C.g:623:37: ( Exponent )?
                 alt16 = 2
                 LA16_0 = self.input.LA(1)
 
                 if (LA16_0 == u'E' or LA16_0 == u'e') :
                     alt16 = 1
                 if alt16 == 1:
-                    # C.g:571:37: Exponent
+                    # C.g:623:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:571:47: ( FloatTypeSuffix )?
+                # C.g:623:47: ( FloatTypeSuffix )?
                 alt17 = 2
                 LA17_0 = self.input.LA(1)
 
                 if (LA17_0 == u'D' or LA17_0 == u'F' or LA17_0 == u'd' or LA17_0 == u'f') :
                     alt17 = 1
                 if alt17 == 1:
-                    # C.g:571:47: FloatTypeSuffix
+                    # C.g:623:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2926,10 +2946,10 @@ class CLexer(Lexer):
 
 
             elif alt25 == 2:
-                # C.g:572:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:624:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:572:13: ( '0' .. '9' )+
+                # C.g:624:13: ( '0' .. '9' )+
                 cnt18 = 0
                 while True: #loop18
                     alt18 = 2
@@ -2940,7 +2960,7 @@ class CLexer(Lexer):
 
 
                     if alt18 == 1:
-                        # C.g:572:14: '0' .. '9'
+                        # C.g:624:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2955,27 +2975,27 @@ class CLexer(Lexer):
                     cnt18 += 1
 
 
-                # C.g:572:25: ( Exponent )?
+                # C.g:624:25: ( Exponent )?
                 alt19 = 2
                 LA19_0 = self.input.LA(1)
 
                 if (LA19_0 == u'E' or LA19_0 == u'e') :
                     alt19 = 1
                 if alt19 == 1:
-                    # C.g:572:25: Exponent
+                    # C.g:624:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:572:35: ( FloatTypeSuffix )?
+                # C.g:624:35: ( FloatTypeSuffix )?
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
                 if (LA20_0 == u'D' or LA20_0 == u'F' or LA20_0 == u'd' or LA20_0 == u'f') :
                     alt20 = 1
                 if alt20 == 1:
-                    # C.g:572:35: FloatTypeSuffix
+                    # C.g:624:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2984,8 +3004,8 @@ class CLexer(Lexer):
 
 
             elif alt25 == 3:
-                # C.g:573:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:573:9: ( '0' .. '9' )+
+                # C.g:625:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:625:9: ( '0' .. '9' )+
                 cnt21 = 0
                 while True: #loop21
                     alt21 = 2
@@ -2996,7 +3016,7 @@ class CLexer(Lexer):
 
 
                     if alt21 == 1:
-                        # C.g:573:10: '0' .. '9'
+                        # C.g:625:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -3013,14 +3033,14 @@ class CLexer(Lexer):
 
                 self.mExponent()
 
-                # C.g:573:30: ( FloatTypeSuffix )?
+                # C.g:625:30: ( FloatTypeSuffix )?
                 alt22 = 2
                 LA22_0 = self.input.LA(1)
 
                 if (LA22_0 == u'D' or LA22_0 == u'F' or LA22_0 == u'd' or LA22_0 == u'f') :
                     alt22 = 1
                 if alt22 == 1:
-                    # C.g:573:30: FloatTypeSuffix
+                    # C.g:625:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -3029,8 +3049,8 @@ class CLexer(Lexer):
 
 
             elif alt25 == 4:
-                # C.g:574:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:574:9: ( '0' .. '9' )+
+                # C.g:626:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:626:9: ( '0' .. '9' )+
                 cnt23 = 0
                 while True: #loop23
                     alt23 = 2
@@ -3041,7 +3061,7 @@ class CLexer(Lexer):
 
 
                     if alt23 == 1:
-                        # C.g:574:10: '0' .. '9'
+                        # C.g:626:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -3056,14 +3076,14 @@ class CLexer(Lexer):
                     cnt23 += 1
 
 
-                # C.g:574:21: ( Exponent )?
+                # C.g:626:21: ( Exponent )?
                 alt24 = 2
                 LA24_0 = self.input.LA(1)
 
                 if (LA24_0 == u'E' or LA24_0 == u'e') :
                     alt24 = 1
                 if alt24 == 1:
-                    # C.g:574:21: Exponent
+                    # C.g:626:21: Exponent
                     self.mExponent()
 
 
@@ -3086,8 +3106,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:578:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:578:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+            # C.g:630:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
+            # C.g:630:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
             if self.input.LA(1) == u'E' or self.input.LA(1) == u'e':
                 self.input.consume();
 
@@ -3097,7 +3117,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:578:22: ( '+' | '-' )?
+            # C.g:630:22: ( '+' | '-' )?
             alt26 = 2
             LA26_0 = self.input.LA(1)
 
@@ -3117,7 +3137,7 @@ class CLexer(Lexer):
 
 
 
-            # C.g:578:33: ( '0' .. '9' )+
+            # C.g:630:33: ( '0' .. '9' )+
             cnt27 = 0
             while True: #loop27
                 alt27 = 2
@@ -3128,7 +3148,7 @@ class CLexer(Lexer):
 
 
                 if alt27 == 1:
-                    # C.g:578:34: '0' .. '9'
+                    # C.g:630:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
@@ -3159,8 +3179,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:581:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:581:19: ( 'f' | 'F' | 'd' | 'D' )
+            # C.g:633:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
+            # C.g:633: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();
 
@@ -3186,7 +3206,7 @@ class CLexer(Lexer):
     def mEscapeSequence(self, ):
 
         try:
-            # C.g:585:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
+            # C.g:637:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape )
             alt28 = 2
             LA28_0 = self.input.LA(1)
 
@@ -3198,17 +3218,17 @@ class CLexer(Lexer):
                 elif ((u'0' <= LA28_1 <= u'7')) :
                     alt28 = 2
                 else:
-                    nvae = NoViableAltException("583:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 1, self.input)
+                    nvae = NoViableAltException("635:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("583:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 0, self.input)
+                nvae = NoViableAltException("635:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | OctalEscape );", 28, 0, self.input)
 
                 raise nvae
 
             if alt28 == 1:
-                # C.g:585:8: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
+                # C.g:637:8: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                 self.match(u'\\')
 
                 if self.input.LA(1) == u'"' or self.input.LA(1) == u'\'' or self.input.LA(1) == u'\\' or self.input.LA(1) == u'b' or self.input.LA(1) == u'f' or self.input.LA(1) == u'n' or self.input.LA(1) == u'r' or self.input.LA(1) == u't':
@@ -3223,7 +3243,7 @@ class CLexer(Lexer):
 
 
             elif alt28 == 2:
-                # C.g:586:9: OctalEscape
+                # C.g:638:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -3241,7 +3261,7 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:591:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            # C.g:643:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             alt29 = 3
             LA29_0 = self.input.LA(1)
 
@@ -3268,35 +3288,35 @@ class CLexer(Lexer):
                     else:
                         alt29 = 3
                 else:
-                    nvae = NoViableAltException("589:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 1, self.input)
+                    nvae = NoViableAltException("641:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 1, self.input)
 
                     raise nvae
 
             else:
-                nvae = NoViableAltException("589:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 0, self.input)
+                nvae = NoViableAltException("641:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 29, 0, self.input)
 
                 raise nvae
 
             if alt29 == 1:
-                # C.g:591:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:643:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:591:14: ( '0' .. '3' )
-                # C.g:591:15: '0' .. '3'
+                # C.g:643:14: ( '0' .. '3' )
+                # C.g:643:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:591:25: ( '0' .. '7' )
-                # C.g:591:26: '0' .. '7'
+                # C.g:643:25: ( '0' .. '7' )
+                # C.g:643:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:591:36: ( '0' .. '7' )
-                # C.g:591:37: '0' .. '7'
+                # C.g:643:36: ( '0' .. '7' )
+                # C.g:643:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3305,18 +3325,18 @@ class CLexer(Lexer):
 
 
             elif alt29 == 2:
-                # C.g:592:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:644:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:592:14: ( '0' .. '7' )
-                # C.g:592:15: '0' .. '7'
+                # C.g:644:14: ( '0' .. '7' )
+                # C.g:644:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:592:25: ( '0' .. '7' )
-                # C.g:592:26: '0' .. '7'
+                # C.g:644:25: ( '0' .. '7' )
+                # C.g:644:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3325,11 +3345,11 @@ class CLexer(Lexer):
 
 
             elif alt29 == 3:
-                # C.g:593:9: '\\\\' ( '0' .. '7' )
+                # C.g:645:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:593:14: ( '0' .. '7' )
-                # C.g:593:15: '0' .. '7'
+                # C.g:645:14: ( '0' .. '7' )
+                # C.g:645:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3350,8 +3370,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:598:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:598:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            # C.g:650:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            # C.g:650:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             self.match(u'\\')
 
             self.match(u'u')
@@ -3382,8 +3402,8 @@ class CLexer(Lexer):
         try:
             self.type = WS
 
-            # C.g:601:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:601:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
+            # C.g:653:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
+            # C.g:653: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();
 
@@ -3414,10 +3434,10 @@ class CLexer(Lexer):
         try:
             self.type = BS
 
-            # C.g:605:5: ( ( '\\\\' ) )
-            # C.g:605:7: ( '\\\\' )
-            # C.g:605:7: ( '\\\\' )
-            # C.g:605:8: '\\\\'
+            # C.g:657:5: ( ( '\\\\' ) )
+            # C.g:657:7: ( '\\\\' )
+            # C.g:657:7: ( '\\\\' )
+            # C.g:657:8: '\\\\'
             self.match(u'\\')
 
 
@@ -3444,8 +3464,8 @@ class CLexer(Lexer):
         try:
             self.type = UnicodeVocabulary
 
-            # C.g:613:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:613:7: '\\u0003' .. '\\uFFFE'
+            # C.g:665:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:665:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3466,12 +3486,12 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:616:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:616:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:668:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:668:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:616:14: ( options {greedy=false; } : . )*
+            # C.g:668:14: ( options {greedy=false; } : . )*
             while True: #loop30
                 alt30 = 2
                 LA30_0 = self.input.LA(1)
@@ -3490,7 +3510,7 @@ class CLexer(Lexer):
 
 
                 if alt30 == 1:
-                    # C.g:616:42: .
+                    # C.g:668:42: .
                     self.matchAny()
 
 
@@ -3523,12 +3543,12 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:621:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:621:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:673:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:673:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match("//")
 
 
-            # C.g:621:12: (~ ( '\\n' | '\\r' ) )*
+            # C.g:673:12: (~ ( '\\n' | '\\r' ) )*
             while True: #loop31
                 alt31 = 2
                 LA31_0 = self.input.LA(1)
@@ -3538,7 +3558,7 @@ class CLexer(Lexer):
 
 
                 if alt31 == 1:
-                    # C.g:621:12: ~ ( '\\n' | '\\r' )
+                    # C.g:673: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();
 
@@ -3554,14 +3574,14 @@ class CLexer(Lexer):
                     break #loop31
 
 
-            # C.g:621:26: ( '\\r' )?
+            # C.g:673:26: ( '\\r' )?
             alt32 = 2
             LA32_0 = self.input.LA(1)
 
             if (LA32_0 == u'\r') :
                 alt32 = 1
             if alt32 == 1:
-                # C.g:621:26: '\\r'
+                # C.g:673:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3590,11 +3610,11 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:626:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:626:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
+            # C.g:678:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
+            # C.g:678:7: '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
             self.match(u'#')
 
-            # C.g:626:11: (~ ( '\\n' | '\\r' ) )*
+            # C.g:678:11: (~ ( '\\n' | '\\r' ) )*
             while True: #loop33
                 alt33 = 2
                 LA33_0 = self.input.LA(1)
@@ -3604,7 +3624,7 @@ class CLexer(Lexer):
 
 
                 if alt33 == 1:
-                    # C.g:626:11: ~ ( '\\n' | '\\r' )
+                    # C.g:678: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();
 
@@ -3620,14 +3640,14 @@ class CLexer(Lexer):
                     break #loop33
 
 
-            # C.g:626:25: ( '\\r' )?
+            # C.g:678:25: ( '\\r' )?
             alt34 = 2
             LA34_0 = self.input.LA(1)
 
             if (LA34_0 == u'\r') :
                 alt34 = 1
             if alt34 == 1:
-                # C.g:626:25: '\\r'
+                # C.g:678:25: '\\r'
                 self.match(u'\r')
 
 
index bf946b7..e56a79a 100644 (file)
@@ -1,8 +1,27 @@
-# $ANTLR 3.0.1 C.g 2010-01-21 14:45:06
+# $ANTLR 3.0.1 C.g 2010-02-23 09:58:53
 
 from antlr3 import *
 from antlr3.compat import set, frozenset
          \r
+## @file\r
+# The file defines the parser for C source files.\r
+#\r
+# THIS FILE IS AUTO-GENENERATED. PLEASE DON NOT MODIFY THIS FILE.\r
+# This file is generated by running:\r
+# java org.antlr.Tool C.g\r
+#\r
+# Copyright (c) 2009 - 2010, Intel Corporation  All rights reserved.\r
+#\r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution.  The full text of the license may be found at:\r
+#   http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+##\r
+\r
 import CodeFragment\r
 import FileProfile\r
 
@@ -124,7 +143,7 @@ class CParser(Parser):
 
 
     # $ANTLR start translation_unit
-    # C.g:50:1: translation_unit : ( external_declaration )* ;
+    # C.g:102:1: translation_unit : ( external_declaration )* ;
     def translation_unit(self, ):
 
         translation_unit_StartIndex = self.input.index()
@@ -133,9 +152,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 1):
                     return 
 
-                # C.g:51:2: ( ( external_declaration )* )
-                # C.g:51:4: ( external_declaration )*
-                # C.g:51:4: ( external_declaration )*
+                # C.g:103:2: ( ( external_declaration )* )
+                # C.g:103:4: ( external_declaration )*
+                # C.g:103:4: ( external_declaration )*
                 while True: #loop1
                     alt1 = 2
                     LA1_0 = self.input.LA(1)
@@ -146,7 +165,7 @@ class CParser(Parser):
 
                     if alt1 == 1:
                         # C.g:0:0: external_declaration
-                        self.following.append(self.FOLLOW_external_declaration_in_translation_unit64)
+                        self.following.append(self.FOLLOW_external_declaration_in_translation_unit74)
                         self.external_declaration()
                         self.following.pop()
                         if self.failed:
@@ -176,7 +195,7 @@ class CParser(Parser):
 
 
     # $ANTLR start external_declaration
-    # C.g:62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );
+    # C.g:114: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()
@@ -185,7 +204,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 2):
                     return 
 
-                # C.g:67:2: ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? )
+                # C.g:119:2: ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? )
                 alt3 = 3
                 LA3_0 = self.input.LA(1)
 
@@ -201,7 +220,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 1, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 1, self.input)
 
                         raise nvae
 
@@ -217,7 +236,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 2, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 2, self.input)
 
                         raise nvae
 
@@ -233,7 +252,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 3, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 3, self.input)
 
                         raise nvae
 
@@ -249,7 +268,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 4, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 4, self.input)
 
                         raise nvae
 
@@ -265,7 +284,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 5, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 5, self.input)
 
                         raise nvae
 
@@ -281,7 +300,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 6, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 6, self.input)
 
                         raise nvae
 
@@ -297,7 +316,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 7, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 7, self.input)
 
                         raise nvae
 
@@ -313,7 +332,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 8, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 8, self.input)
 
                         raise nvae
 
@@ -329,7 +348,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 9, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 9, self.input)
 
                         raise nvae
 
@@ -345,7 +364,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 10, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 10, self.input)
 
                         raise nvae
 
@@ -361,7 +380,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 11, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 11, self.input)
 
                         raise nvae
 
@@ -377,7 +396,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 12, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 12, self.input)
 
                         raise nvae
 
@@ -395,7 +414,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 13, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 13, self.input)
 
                         raise nvae
 
@@ -411,7 +430,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 14, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 14, self.input)
 
                         raise nvae
 
@@ -429,7 +448,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 16, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 16, self.input)
 
                         raise nvae
 
@@ -445,7 +464,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 17, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 17, self.input)
 
                         raise nvae
 
@@ -461,7 +480,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 18, self.input)
+                        nvae = NoViableAltException("114:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 18, self.input)
 
                         raise nvae
 
@@ -474,13 +493,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("62:1: external_declaration options {k=1; } : ( ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition | declaration | macro_statement ( ';' )? );", 3, 0, self.input)
+                    nvae = NoViableAltException("114: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:67:4: ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition
-                    self.following.append(self.FOLLOW_function_definition_in_external_declaration103)
+                    # C.g:119:4: ( ( declaration_specifiers )? declarator ( declaration )* '{' )=> function_definition
+                    self.following.append(self.FOLLOW_function_definition_in_external_declaration113)
                     self.function_definition()
                     self.following.pop()
                     if self.failed:
@@ -488,8 +507,8 @@ class CParser(Parser):
 
 
                 elif alt3 == 2:
-                    # C.g:68:4: declaration
-                    self.following.append(self.FOLLOW_declaration_in_external_declaration108)
+                    # C.g:120:4: declaration
+                    self.following.append(self.FOLLOW_declaration_in_external_declaration118)
                     self.declaration()
                     self.following.pop()
                     if self.failed:
@@ -497,21 +516,21 @@ class CParser(Parser):
 
 
                 elif alt3 == 3:
-                    # C.g:69:4: macro_statement ( ';' )?
-                    self.following.append(self.FOLLOW_macro_statement_in_external_declaration113)
+                    # C.g:121:4: macro_statement ( ';' )?
+                    self.following.append(self.FOLLOW_macro_statement_in_external_declaration123)
                     self.macro_statement()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:69:20: ( ';' )?
+                    # C.g:121:20: ( ';' )?
                     alt2 = 2
                     LA2_0 = self.input.LA(1)
 
                     if (LA2_0 == 25) :
                         alt2 = 1
                     if alt2 == 1:
-                        # C.g:69:21: ';'
-                        self.match(self.input, 25, self.FOLLOW_25_in_external_declaration116)
+                        # C.g:121:21: ';'
+                        self.match(self.input, 25, self.FOLLOW_25_in_external_declaration126)
                         if self.failed:
                             return 
 
@@ -541,7 +560,7 @@ class CParser(Parser):
 
 
     # $ANTLR start function_definition
-    # C.g:74:1: function_definition : (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) ;
+    # C.g:126:1: function_definition : (d= 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()
@@ -569,9 +588,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 3):
                     return retval
 
-                # C.g:94:2: ( (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) )
-                # C.g:94:4: (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement )
-                # C.g:94:5: (d= declaration_specifiers )?
+                # C.g:146:2: ( (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement ) )
+                # C.g:146:4: (d= declaration_specifiers )? declarator ( ( declaration )+ a= compound_statement | b= compound_statement )
+                # C.g:146:5: (d= declaration_specifiers )?
                 alt4 = 2
                 LA4 = self.input.LA(1)
                 if LA4 == 29 or LA4 == 30 or LA4 == 31 or LA4 == 32 or LA4 == 33 or LA4 == 34 or LA4 == 35 or LA4 == 36 or LA4 == 37 or LA4 == 38 or LA4 == 39 or LA4 == 40 or LA4 == 41 or LA4 == 42 or LA4 == 45 or LA4 == 46 or LA4 == 48 or LA4 == 49 or LA4 == 50 or LA4 == 51 or LA4 == 52 or LA4 == 53 or LA4 == 54 or LA4 == 55 or LA4 == 56 or LA4 == 57 or LA4 == 61:
@@ -687,7 +706,7 @@ class CParser(Parser):
                         alt4 = 1
                 if alt4 == 1:
                     # C.g:0:0: d= declaration_specifiers
-                    self.following.append(self.FOLLOW_declaration_specifiers_in_function_definition147)
+                    self.following.append(self.FOLLOW_declaration_specifiers_in_function_definition157)
                     d = self.declaration_specifiers()
                     self.following.pop()
                     if self.failed:
@@ -695,12 +714,12 @@ class CParser(Parser):
 
 
 
-                self.following.append(self.FOLLOW_declarator_in_function_definition150)
+                self.following.append(self.FOLLOW_declarator_in_function_definition160)
                 declarator1 = self.declarator()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:95:3: ( ( declaration )+ a= compound_statement | b= compound_statement )
+                # C.g:147:3: ( ( declaration )+ a= compound_statement | b= compound_statement )
                 alt6 = 2
                 LA6_0 = self.input.LA(1)
 
@@ -713,13 +732,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("95:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)
+                    nvae = NoViableAltException("147:3: ( ( declaration )+ a= compound_statement | b= compound_statement )", 6, 0, self.input)
 
                     raise nvae
 
                 if alt6 == 1:
-                    # C.g:95:5: ( declaration )+ a= compound_statement
-                    # C.g:95:5: ( declaration )+
+                    # C.g:147:5: ( declaration )+ a= compound_statement
+                    # C.g:147:5: ( declaration )+
                     cnt5 = 0
                     while True: #loop5
                         alt5 = 2
@@ -731,7 +750,7 @@ class CParser(Parser):
 
                         if alt5 == 1:
                             # C.g:0:0: declaration
-                            self.following.append(self.FOLLOW_declaration_in_function_definition156)
+                            self.following.append(self.FOLLOW_declaration_in_function_definition166)
                             self.declaration()
                             self.following.pop()
                             if self.failed:
@@ -752,7 +771,7 @@ class CParser(Parser):
                         cnt5 += 1
 
 
-                    self.following.append(self.FOLLOW_compound_statement_in_function_definition161)
+                    self.following.append(self.FOLLOW_compound_statement_in_function_definition171)
                     a = self.compound_statement()
                     self.following.pop()
                     if self.failed:
@@ -760,8 +779,8 @@ class CParser(Parser):
 
 
                 elif alt6 == 2:
-                    # C.g:96:5: b= compound_statement
-                    self.following.append(self.FOLLOW_compound_statement_in_function_definition170)
+                    # C.g:148:5: b= compound_statement
+                    self.following.append(self.FOLLOW_compound_statement_in_function_definition180)
                     b = self.compound_statement()
                     self.following.pop()
                     if self.failed:
@@ -813,7 +832,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration
-    # C.g:114:1: declaration : (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' );
+    # C.g:166: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()
@@ -834,7 +853,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 4):
                     return 
 
-                # C.g:115:2: (a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';' | s= declaration_specifiers (t= init_declarator_list )? e= ';' )
+                # C.g:167: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)
 
@@ -847,17 +866,17 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("114: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("166: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:115:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'
+                    # C.g:167:4: a= 'typedef' (b= declaration_specifiers )? c= init_declarator_list d= ';'
                     a = self.input.LT(1)
-                    self.match(self.input, 26, self.FOLLOW_26_in_declaration193)
+                    self.match(self.input, 26, self.FOLLOW_26_in_declaration203)
                     if self.failed:
                         return 
-                    # C.g:115:17: (b= declaration_specifiers )?
+                    # C.g:167:17: (b= declaration_specifiers )?
                     alt7 = 2
                     LA7 = self.input.LA(1)
                     if LA7 == 29 or LA7 == 30 or LA7 == 31 or LA7 == 32 or LA7 == 33 or LA7 == 34 or LA7 == 35 or LA7 == 36 or LA7 == 37 or LA7 == 38 or LA7 == 39 or LA7 == 40 or LA7 == 41 or LA7 == 42 or LA7 == 45 or LA7 == 46 or LA7 == 48 or LA7 == 49 or LA7 == 50 or LA7 == 51 or LA7 == 52 or LA7 == 53 or LA7 == 54 or LA7 == 55 or LA7 == 56 or LA7 == 57 or LA7 == 61:
@@ -889,7 +908,7 @@ class CParser(Parser):
                             alt7 = 1
                     if alt7 == 1:
                         # C.g:0:0: b= declaration_specifiers
-                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration197)
+                        self.following.append(self.FOLLOW_declaration_specifiers_in_declaration207)
                         b = self.declaration_specifiers()
                         self.following.pop()
                         if self.failed:
@@ -897,13 +916,13 @@ class CParser(Parser):
 
 
 
-                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration206)
+                    self.following.append(self.FOLLOW_init_declarator_list_in_declaration216)
                     c = self.init_declarator_list()
                     self.following.pop()
                     if self.failed:
                         return 
                     d = self.input.LT(1)
-                    self.match(self.input, 25, self.FOLLOW_25_in_declaration210)
+                    self.match(self.input, 25, self.FOLLOW_25_in_declaration220)
                     if self.failed:
                         return 
                     if self.backtracking == 0:
@@ -917,13 +936,13 @@ class CParser(Parser):
 
 
                 elif alt9 == 2:
-                    # C.g:123:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'
-                    self.following.append(self.FOLLOW_declaration_specifiers_in_declaration224)
+                    # C.g:175:4: s= declaration_specifiers (t= init_declarator_list )? e= ';'
+                    self.following.append(self.FOLLOW_declaration_specifiers_in_declaration234)
                     s = self.declaration_specifiers()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:123:30: (t= init_declarator_list )?
+                    # C.g:175:30: (t= init_declarator_list )?
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
 
@@ -931,7 +950,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_declaration228)
+                        self.following.append(self.FOLLOW_init_declarator_list_in_declaration238)
                         t = self.init_declarator_list()
                         self.following.pop()
                         if self.failed:
@@ -940,7 +959,7 @@ class CParser(Parser):
 
 
                     e = self.input.LT(1)
-                    self.match(self.input, 25, self.FOLLOW_25_in_declaration233)
+                    self.match(self.input, 25, self.FOLLOW_25_in_declaration243)
                     if self.failed:
                         return 
                     if self.backtracking == 0:
@@ -973,7 +992,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declaration_specifiers
-    # C.g:130:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
+    # C.g:182:1: declaration_specifiers : ( storage_class_specifier | type_specifier | type_qualifier )+ ;
     def declaration_specifiers(self, ):
 
         retval = self.declaration_specifiers_return()
@@ -984,9 +1003,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 5):
                     return retval
 
-                # C.g:131:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
-                # C.g:131:6: ( storage_class_specifier | type_specifier | type_qualifier )+
-                # C.g:131:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:183:2: ( ( storage_class_specifier | type_specifier | type_qualifier )+ )
+                # C.g:183:6: ( storage_class_specifier | type_specifier | type_qualifier )+
+                # C.g:183:6: ( storage_class_specifier | type_specifier | type_qualifier )+
                 cnt10 = 0
                 while True: #loop10
                     alt10 = 4
@@ -1034,8 +1053,8 @@ class CParser(Parser):
                         alt10 = 3
 
                     if alt10 == 1:
-                        # C.g:131:10: storage_class_specifier
-                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers254)
+                        # C.g:183:10: storage_class_specifier
+                        self.following.append(self.FOLLOW_storage_class_specifier_in_declaration_specifiers264)
                         self.storage_class_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1043,8 +1062,8 @@ class CParser(Parser):
 
 
                     elif alt10 == 2:
-                        # C.g:132:7: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers262)
+                        # C.g:184:7: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_declaration_specifiers272)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1052,8 +1071,8 @@ class CParser(Parser):
 
 
                     elif alt10 == 3:
-                        # C.g:133:13: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers276)
+                        # C.g:185:13: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_declaration_specifiers286)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -1101,7 +1120,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator_list
-    # C.g:137:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
+    # C.g:189:1: init_declarator_list : init_declarator ( ',' init_declarator )* ;
     def init_declarator_list(self, ):
 
         retval = self.init_declarator_list_return()
@@ -1112,14 +1131,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 6):
                     return retval
 
-                # C.g:138:2: ( init_declarator ( ',' init_declarator )* )
-                # C.g:138:4: init_declarator ( ',' init_declarator )*
-                self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list298)
+                # C.g:190:2: ( init_declarator ( ',' init_declarator )* )
+                # C.g:190:4: init_declarator ( ',' init_declarator )*
+                self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list308)
                 self.init_declarator()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:138:20: ( ',' init_declarator )*
+                # C.g:190:20: ( ',' init_declarator )*
                 while True: #loop11
                     alt11 = 2
                     LA11_0 = self.input.LA(1)
@@ -1129,11 +1148,11 @@ class CParser(Parser):
 
 
                     if alt11 == 1:
-                        # C.g:138:21: ',' init_declarator
-                        self.match(self.input, 27, self.FOLLOW_27_in_init_declarator_list301)
+                        # C.g:190:21: ',' init_declarator
+                        self.match(self.input, 27, self.FOLLOW_27_in_init_declarator_list311)
                         if self.failed:
                             return retval
-                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list303)
+                        self.following.append(self.FOLLOW_init_declarator_in_init_declarator_list313)
                         self.init_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1165,7 +1184,7 @@ class CParser(Parser):
 
 
     # $ANTLR start init_declarator
-    # C.g:141:1: init_declarator : declarator ( '=' initializer )? ;
+    # C.g:193:1: init_declarator : declarator ( '=' initializer )? ;
     def init_declarator(self, ):
 
         init_declarator_StartIndex = self.input.index()
@@ -1174,25 +1193,25 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 7):
                     return 
 
-                # C.g:142:2: ( declarator ( '=' initializer )? )
-                # C.g:142:4: declarator ( '=' initializer )?
-                self.following.append(self.FOLLOW_declarator_in_init_declarator316)
+                # C.g:194:2: ( declarator ( '=' initializer )? )
+                # C.g:194:4: declarator ( '=' initializer )?
+                self.following.append(self.FOLLOW_declarator_in_init_declarator326)
                 self.declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:142:15: ( '=' initializer )?
+                # C.g:194:15: ( '=' initializer )?
                 alt12 = 2
                 LA12_0 = self.input.LA(1)
 
                 if (LA12_0 == 28) :
                     alt12 = 1
                 if alt12 == 1:
-                    # C.g:142:16: '=' initializer
-                    self.match(self.input, 28, self.FOLLOW_28_in_init_declarator319)
+                    # C.g:194:16: '=' initializer
+                    self.match(self.input, 28, self.FOLLOW_28_in_init_declarator329)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_in_init_declarator321)
+                    self.following.append(self.FOLLOW_initializer_in_init_declarator331)
                     self.initializer()
                     self.following.pop()
                     if self.failed:
@@ -1219,7 +1238,7 @@ class CParser(Parser):
 
 
     # $ANTLR start storage_class_specifier
-    # C.g:145:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' );
+    # C.g:197:1: storage_class_specifier : ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' );
     def storage_class_specifier(self, ):
 
         storage_class_specifier_StartIndex = self.input.index()
@@ -1228,7 +1247,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 8):
                     return 
 
-                # C.g:146:2: ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' )
+                # C.g:198:2: ( 'extern' | 'static' | 'auto' | 'register' | 'STATIC' )
                 # C.g:
                 if (29 <= self.input.LA(1) <= 33):
                     self.input.consume();
@@ -1266,7 +1285,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_specifier
-    # C.g:153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );
+    # C.g:205:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );
     def type_specifier(self, ):
 
         type_specifier_StartIndex = self.input.index()
@@ -1280,7 +1299,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 9):
                     return 
 
-                # C.g:154:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id )
+                # C.g:206:2: ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id )
                 alt13 = 12
                 LA13_0 = self.input.LA(1)
 
@@ -1313,76 +1332,76 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("153:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );", 13, 0, self.input)
+                    nvae = NoViableAltException("205:1: type_specifier : ( 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double' | 'signed' | 'unsigned' | s= struct_or_union_specifier | e= enum_specifier | ( IDENTIFIER ( type_qualifier )* declarator )=> type_id );", 13, 0, self.input)
 
                     raise nvae
 
                 if alt13 == 1:
-                    # C.g:154:4: 'void'
-                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier366)
+                    # C.g:206:4: 'void'
+                    self.match(self.input, 34, self.FOLLOW_34_in_type_specifier376)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 2:
-                    # C.g:155:4: 'char'
-                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier371)
+                    # C.g:207:4: 'char'
+                    self.match(self.input, 35, self.FOLLOW_35_in_type_specifier381)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 3:
-                    # C.g:156:4: 'short'
-                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier376)
+                    # C.g:208:4: 'short'
+                    self.match(self.input, 36, self.FOLLOW_36_in_type_specifier386)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 4:
-                    # C.g:157:4: 'int'
-                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier381)
+                    # C.g:209:4: 'int'
+                    self.match(self.input, 37, self.FOLLOW_37_in_type_specifier391)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 5:
-                    # C.g:158:4: 'long'
-                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier386)
+                    # C.g:210:4: 'long'
+                    self.match(self.input, 38, self.FOLLOW_38_in_type_specifier396)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 6:
-                    # C.g:159:4: 'float'
-                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier391)
+                    # C.g:211:4: 'float'
+                    self.match(self.input, 39, self.FOLLOW_39_in_type_specifier401)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 7:
-                    # C.g:160:4: 'double'
-                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier396)
+                    # C.g:212:4: 'double'
+                    self.match(self.input, 40, self.FOLLOW_40_in_type_specifier406)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 8:
-                    # C.g:161:4: 'signed'
-                    self.match(self.input, 41, self.FOLLOW_41_in_type_specifier401)
+                    # C.g:213:4: 'signed'
+                    self.match(self.input, 41, self.FOLLOW_41_in_type_specifier411)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 9:
-                    # C.g:162:4: 'unsigned'
-                    self.match(self.input, 42, self.FOLLOW_42_in_type_specifier406)
+                    # C.g:214:4: 'unsigned'
+                    self.match(self.input, 42, self.FOLLOW_42_in_type_specifier416)
                     if self.failed:
                         return 
 
 
                 elif alt13 == 10:
-                    # C.g:163:4: s= struct_or_union_specifier
-                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier413)
+                    # C.g:215:4: s= struct_or_union_specifier
+                    self.following.append(self.FOLLOW_struct_or_union_specifier_in_type_specifier423)
                     s = self.struct_or_union_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1396,8 +1415,8 @@ class CParser(Parser):
 
 
                 elif alt13 == 11:
-                    # C.g:168:4: e= enum_specifier
-                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier423)
+                    # C.g:220:4: e= enum_specifier
+                    self.following.append(self.FOLLOW_enum_specifier_in_type_specifier433)
                     e = self.enum_specifier()
                     self.following.pop()
                     if self.failed:
@@ -1411,8 +1430,8 @@ class CParser(Parser):
 
 
                 elif alt13 == 12:
-                    # C.g:173:4: ( IDENTIFIER ( type_qualifier )* declarator )=> type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_specifier441)
+                    # C.g:225:4: ( IDENTIFIER ( type_qualifier )* declarator )=> type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_specifier451)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -1435,7 +1454,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_id
-    # C.g:176:1: type_id : IDENTIFIER ;
+    # C.g:228:1: type_id : IDENTIFIER ;
     def type_id(self, ):
 
         type_id_StartIndex = self.input.index()
@@ -1444,9 +1463,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 10):
                     return 
 
-                # C.g:177:5: ( IDENTIFIER )
-                # C.g:177:9: IDENTIFIER
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id457)
+                # C.g:229:5: ( IDENTIFIER )
+                # C.g:229:9: IDENTIFIER
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_type_id467)
                 if self.failed:
                     return 
 
@@ -1474,7 +1493,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union_specifier
-    # C.g:181:1: struct_or_union_specifier options {k=3; } : ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER );
+    # C.g:233: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()
@@ -1485,7 +1504,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 11):
                     return retval
 
-                # C.g:183:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
+                # C.g:235:2: ( struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}' | struct_or_union IDENTIFIER )
                 alt15 = 2
                 LA15_0 = self.input.LA(1)
 
@@ -1504,7 +1523,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("181: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("233: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
 
@@ -1515,7 +1534,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("181: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("233: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
 
@@ -1524,18 +1543,18 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("181: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("233: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:183:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier484)
+                    # C.g:235:4: struct_or_union ( IDENTIFIER )? '{' struct_declaration_list '}'
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier494)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    # C.g:183:20: ( IDENTIFIER )?
+                    # C.g:235:20: ( IDENTIFIER )?
                     alt14 = 2
                     LA14_0 = self.input.LA(1)
 
@@ -1543,33 +1562,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_specifier486)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier496)
                         if self.failed:
                             return retval
 
 
 
-                    self.match(self.input, 43, self.FOLLOW_43_in_struct_or_union_specifier489)
+                    self.match(self.input, 43, self.FOLLOW_43_in_struct_or_union_specifier499)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier491)
+                    self.following.append(self.FOLLOW_struct_declaration_list_in_struct_or_union_specifier501)
                     self.struct_declaration_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, 44, self.FOLLOW_44_in_struct_or_union_specifier493)
+                    self.match(self.input, 44, self.FOLLOW_44_in_struct_or_union_specifier503)
                     if self.failed:
                         return retval
 
 
                 elif alt15 == 2:
-                    # C.g:184:4: struct_or_union IDENTIFIER
-                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier498)
+                    # C.g:236:4: struct_or_union IDENTIFIER
+                    self.following.append(self.FOLLOW_struct_or_union_in_struct_or_union_specifier508)
                     self.struct_or_union()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier500)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_struct_or_union_specifier510)
                     if self.failed:
                         return retval
 
@@ -1592,7 +1611,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_or_union
-    # C.g:187:1: struct_or_union : ( 'struct' | 'union' );
+    # C.g:239:1: struct_or_union : ( 'struct' | 'union' );
     def struct_or_union(self, ):
 
         struct_or_union_StartIndex = self.input.index()
@@ -1601,7 +1620,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 12):
                     return 
 
-                # C.g:188:2: ( 'struct' | 'union' )
+                # C.g:240:2: ( 'struct' | 'union' )
                 # C.g:
                 if (45 <= self.input.LA(1) <= 46):
                     self.input.consume();
@@ -1639,7 +1658,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration_list
-    # C.g:192:1: struct_declaration_list : ( struct_declaration )+ ;
+    # C.g:244:1: struct_declaration_list : ( struct_declaration )+ ;
     def struct_declaration_list(self, ):
 
         struct_declaration_list_StartIndex = self.input.index()
@@ -1648,9 +1667,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 13):
                     return 
 
-                # C.g:193:2: ( ( struct_declaration )+ )
-                # C.g:193:4: ( struct_declaration )+
-                # C.g:193:4: ( struct_declaration )+
+                # C.g:245:2: ( ( struct_declaration )+ )
+                # C.g:245:4: ( struct_declaration )+
+                # C.g:245:4: ( struct_declaration )+
                 cnt16 = 0
                 while True: #loop16
                     alt16 = 2
@@ -1662,7 +1681,7 @@ class CParser(Parser):
 
                     if alt16 == 1:
                         # C.g:0:0: struct_declaration
-                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list527)
+                        self.following.append(self.FOLLOW_struct_declaration_in_struct_declaration_list537)
                         self.struct_declaration()
                         self.following.pop()
                         if self.failed:
@@ -1702,7 +1721,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declaration
-    # C.g:196:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
+    # C.g:248:1: struct_declaration : specifier_qualifier_list struct_declarator_list ';' ;
     def struct_declaration(self, ):
 
         struct_declaration_StartIndex = self.input.index()
@@ -1711,19 +1730,19 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 14):
                     return 
 
-                # C.g:197:2: ( specifier_qualifier_list struct_declarator_list ';' )
-                # C.g:197:4: specifier_qualifier_list struct_declarator_list ';'
-                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration539)
+                # C.g:249:2: ( specifier_qualifier_list struct_declarator_list ';' )
+                # C.g:249:4: specifier_qualifier_list struct_declarator_list ';'
+                self.following.append(self.FOLLOW_specifier_qualifier_list_in_struct_declaration549)
                 self.specifier_qualifier_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration541)
+                self.following.append(self.FOLLOW_struct_declarator_list_in_struct_declaration551)
                 self.struct_declarator_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration543)
+                self.match(self.input, 25, self.FOLLOW_25_in_struct_declaration553)
                 if self.failed:
                     return 
 
@@ -1745,7 +1764,7 @@ class CParser(Parser):
 
 
     # $ANTLR start specifier_qualifier_list
-    # C.g:200:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
+    # C.g:252:1: specifier_qualifier_list : ( type_qualifier | type_specifier )+ ;
     def specifier_qualifier_list(self, ):
 
         specifier_qualifier_list_StartIndex = self.input.index()
@@ -1754,9 +1773,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 15):
                     return 
 
-                # C.g:201:2: ( ( type_qualifier | type_specifier )+ )
-                # C.g:201:4: ( type_qualifier | type_specifier )+
-                # C.g:201:4: ( type_qualifier | type_specifier )+
+                # C.g:253:2: ( ( type_qualifier | type_specifier )+ )
+                # C.g:253:4: ( type_qualifier | type_specifier )+
+                # C.g:253:4: ( type_qualifier | type_specifier )+
                 cnt17 = 0
                 while True: #loop17
                     alt17 = 3
@@ -1814,8 +1833,8 @@ class CParser(Parser):
                         alt17 = 2
 
                     if alt17 == 1:
-                        # C.g:201:6: type_qualifier
-                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list556)
+                        # C.g:253:6: type_qualifier
+                        self.following.append(self.FOLLOW_type_qualifier_in_specifier_qualifier_list566)
                         self.type_qualifier()
                         self.following.pop()
                         if self.failed:
@@ -1823,8 +1842,8 @@ class CParser(Parser):
 
 
                     elif alt17 == 2:
-                        # C.g:201:23: type_specifier
-                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list560)
+                        # C.g:253:23: type_specifier
+                        self.following.append(self.FOLLOW_type_specifier_in_specifier_qualifier_list570)
                         self.type_specifier()
                         self.following.pop()
                         if self.failed:
@@ -1864,7 +1883,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator_list
-    # C.g:204:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
+    # C.g:256:1: struct_declarator_list : struct_declarator ( ',' struct_declarator )* ;
     def struct_declarator_list(self, ):
 
         struct_declarator_list_StartIndex = self.input.index()
@@ -1873,14 +1892,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 16):
                     return 
 
-                # C.g:205:2: ( struct_declarator ( ',' struct_declarator )* )
-                # C.g:205:4: struct_declarator ( ',' struct_declarator )*
-                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list574)
+                # C.g:257:2: ( struct_declarator ( ',' struct_declarator )* )
+                # C.g:257:4: struct_declarator ( ',' struct_declarator )*
+                self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list584)
                 self.struct_declarator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:205:22: ( ',' struct_declarator )*
+                # C.g:257:22: ( ',' struct_declarator )*
                 while True: #loop18
                     alt18 = 2
                     LA18_0 = self.input.LA(1)
@@ -1890,11 +1909,11 @@ class CParser(Parser):
 
 
                     if alt18 == 1:
-                        # C.g:205:23: ',' struct_declarator
-                        self.match(self.input, 27, self.FOLLOW_27_in_struct_declarator_list577)
+                        # C.g:257:23: ',' struct_declarator
+                        self.match(self.input, 27, self.FOLLOW_27_in_struct_declarator_list587)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list579)
+                        self.following.append(self.FOLLOW_struct_declarator_in_struct_declarator_list589)
                         self.struct_declarator()
                         self.following.pop()
                         if self.failed:
@@ -1924,7 +1943,7 @@ class CParser(Parser):
 
 
     # $ANTLR start struct_declarator
-    # C.g:208:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
+    # C.g:260:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );
     def struct_declarator(self, ):
 
         struct_declarator_StartIndex = self.input.index()
@@ -1933,7 +1952,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 17):
                     return 
 
-                # C.g:209:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
+                # C.g:261:2: ( declarator ( ':' constant_expression )? | ':' constant_expression )
                 alt20 = 2
                 LA20_0 = self.input.LA(1)
 
@@ -1946,29 +1965,29 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("208:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
+                    nvae = NoViableAltException("260:1: struct_declarator : ( declarator ( ':' constant_expression )? | ':' constant_expression );", 20, 0, self.input)
 
                     raise nvae
 
                 if alt20 == 1:
-                    # C.g:209:4: declarator ( ':' constant_expression )?
-                    self.following.append(self.FOLLOW_declarator_in_struct_declarator592)
+                    # C.g:261:4: declarator ( ':' constant_expression )?
+                    self.following.append(self.FOLLOW_declarator_in_struct_declarator602)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:209:15: ( ':' constant_expression )?
+                    # C.g:261:15: ( ':' constant_expression )?
                     alt19 = 2
                     LA19_0 = self.input.LA(1)
 
                     if (LA19_0 == 47) :
                         alt19 = 1
                     if alt19 == 1:
-                        # C.g:209:16: ':' constant_expression
-                        self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator595)
+                        # C.g:261:16: ':' constant_expression
+                        self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator605)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator597)
+                        self.following.append(self.FOLLOW_constant_expression_in_struct_declarator607)
                         self.constant_expression()
                         self.following.pop()
                         if self.failed:
@@ -1979,11 +1998,11 @@ class CParser(Parser):
 
 
                 elif alt20 == 2:
-                    # C.g:210:4: ':' constant_expression
-                    self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator604)
+                    # C.g:262:4: ':' constant_expression
+                    self.match(self.input, 47, self.FOLLOW_47_in_struct_declarator614)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator606)
+                    self.following.append(self.FOLLOW_constant_expression_in_struct_declarator616)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -2012,7 +2031,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enum_specifier
-    # C.g:213:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );
+    # C.g:265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );
     def enum_specifier(self, ):
 
         retval = self.enum_specifier_return()
@@ -2023,7 +2042,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 18):
                     return retval
 
-                # C.g:215:2: ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER )
+                # C.g:267:2: ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER )
                 alt23 = 3
                 LA23_0 = self.input.LA(1)
 
@@ -2042,7 +2061,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return retval
 
-                            nvae = NoViableAltException("213:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 2, self.input)
+                            nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 2, self.input)
 
                             raise nvae
 
@@ -2053,7 +2072,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("213:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 1, self.input)
+                        nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 1, self.input)
 
                         raise nvae
 
@@ -2062,24 +2081,24 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("213:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 0, self.input)
+                    nvae = NoViableAltException("265:1: enum_specifier options {k=3; } : ( 'enum' '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}' | 'enum' IDENTIFIER );", 23, 0, self.input)
 
                     raise nvae
 
                 if alt23 == 1:
-                    # C.g:215:4: 'enum' '{' enumerator_list ( ',' )? '}'
-                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier624)
+                    # C.g:267:4: 'enum' '{' enumerator_list ( ',' )? '}'
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier634)
                     if self.failed:
                         return retval
-                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier626)
+                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier636)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier628)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier638)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    # C.g:215:31: ( ',' )?
+                    # C.g:267:31: ( ',' )?
                     alt21 = 2
                     LA21_0 = self.input.LA(1)
 
@@ -2087,34 +2106,34 @@ class CParser(Parser):
                         alt21 = 1
                     if alt21 == 1:
                         # C.g:0:0: ','
-                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier630)
+                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier640)
                         if self.failed:
                             return retval
 
 
 
-                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier633)
+                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier643)
                     if self.failed:
                         return retval
 
 
                 elif alt23 == 2:
-                    # C.g:216:4: 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}'
-                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier638)
+                    # C.g:268:4: 'enum' IDENTIFIER '{' enumerator_list ( ',' )? '}'
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier648)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier640)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier650)
                     if self.failed:
                         return retval
-                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier642)
+                    self.match(self.input, 43, self.FOLLOW_43_in_enum_specifier652)
                     if self.failed:
                         return retval
-                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier644)
+                    self.following.append(self.FOLLOW_enumerator_list_in_enum_specifier654)
                     self.enumerator_list()
                     self.following.pop()
                     if self.failed:
                         return retval
-                    # C.g:216:42: ( ',' )?
+                    # C.g:268:42: ( ',' )?
                     alt22 = 2
                     LA22_0 = self.input.LA(1)
 
@@ -2122,23 +2141,23 @@ class CParser(Parser):
                         alt22 = 1
                     if alt22 == 1:
                         # C.g:0:0: ','
-                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier646)
+                        self.match(self.input, 27, self.FOLLOW_27_in_enum_specifier656)
                         if self.failed:
                             return retval
 
 
 
-                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier649)
+                    self.match(self.input, 44, self.FOLLOW_44_in_enum_specifier659)
                     if self.failed:
                         return retval
 
 
                 elif alt23 == 3:
-                    # C.g:217:4: 'enum' IDENTIFIER
-                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier654)
+                    # C.g:269:4: 'enum' IDENTIFIER
+                    self.match(self.input, 48, self.FOLLOW_48_in_enum_specifier664)
                     if self.failed:
                         return retval
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier656)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enum_specifier666)
                     if self.failed:
                         return retval
 
@@ -2161,7 +2180,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator_list
-    # C.g:220:1: enumerator_list : enumerator ( ',' enumerator )* ;
+    # C.g:272:1: enumerator_list : enumerator ( ',' enumerator )* ;
     def enumerator_list(self, ):
 
         enumerator_list_StartIndex = self.input.index()
@@ -2170,14 +2189,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 19):
                     return 
 
-                # C.g:221:2: ( enumerator ( ',' enumerator )* )
-                # C.g:221:4: enumerator ( ',' enumerator )*
-                self.following.append(self.FOLLOW_enumerator_in_enumerator_list667)
+                # C.g:273:2: ( enumerator ( ',' enumerator )* )
+                # C.g:273:4: enumerator ( ',' enumerator )*
+                self.following.append(self.FOLLOW_enumerator_in_enumerator_list677)
                 self.enumerator()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:221:15: ( ',' enumerator )*
+                # C.g:273:15: ( ',' enumerator )*
                 while True: #loop24
                     alt24 = 2
                     LA24_0 = self.input.LA(1)
@@ -2192,11 +2211,11 @@ class CParser(Parser):
 
 
                     if alt24 == 1:
-                        # C.g:221:16: ',' enumerator
-                        self.match(self.input, 27, self.FOLLOW_27_in_enumerator_list670)
+                        # C.g:273:16: ',' enumerator
+                        self.match(self.input, 27, self.FOLLOW_27_in_enumerator_list680)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list672)
+                        self.following.append(self.FOLLOW_enumerator_in_enumerator_list682)
                         self.enumerator()
                         self.following.pop()
                         if self.failed:
@@ -2226,7 +2245,7 @@ class CParser(Parser):
 
 
     # $ANTLR start enumerator
-    # C.g:224:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
+    # C.g:276:1: enumerator : IDENTIFIER ( '=' constant_expression )? ;
     def enumerator(self, ):
 
         enumerator_StartIndex = self.input.index()
@@ -2235,23 +2254,23 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 20):
                     return 
 
-                # C.g:225:2: ( IDENTIFIER ( '=' constant_expression )? )
-                # C.g:225:4: IDENTIFIER ( '=' constant_expression )?
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator685)
+                # C.g:277:2: ( IDENTIFIER ( '=' constant_expression )? )
+                # C.g:277:4: IDENTIFIER ( '=' constant_expression )?
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_enumerator695)
                 if self.failed:
                     return 
-                # C.g:225:15: ( '=' constant_expression )?
+                # C.g:277:15: ( '=' constant_expression )?
                 alt25 = 2
                 LA25_0 = self.input.LA(1)
 
                 if (LA25_0 == 28) :
                     alt25 = 1
                 if alt25 == 1:
-                    # C.g:225:16: '=' constant_expression
-                    self.match(self.input, 28, self.FOLLOW_28_in_enumerator688)
+                    # C.g:277:16: '=' constant_expression
+                    self.match(self.input, 28, self.FOLLOW_28_in_enumerator698)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_enumerator690)
+                    self.following.append(self.FOLLOW_constant_expression_in_enumerator700)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
@@ -2278,7 +2297,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_qualifier
-    # C.g:228:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' );
+    # C.g:280:1: type_qualifier : ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' );
     def type_qualifier(self, ):
 
         type_qualifier_StartIndex = self.input.index()
@@ -2287,7 +2306,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 21):
                     return 
 
-                # C.g:229:2: ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' )
+                # C.g:281:2: ( 'const' | 'volatile' | 'IN' | 'OUT' | 'OPTIONAL' | 'CONST' | 'UNALIGNED' | 'VOLATILE' | 'GLOBAL_REMOVE_IF_UNREFERENCED' | 'EFIAPI' | 'EFI_BOOTSERVICE' | 'EFI_RUNTIMESERVICE' | 'PACKED' )
                 # C.g:
                 if (49 <= self.input.LA(1) <= 61):
                     self.input.consume();
@@ -2331,7 +2350,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator
-    # C.g:244:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );
+    # C.g:296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );
     def declarator(self, ):
 
         retval = self.declarator_return()
@@ -2342,7 +2361,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 22):
                     return retval
 
-                # C.g:245:2: ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer )
+                # C.g:297:2: ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer )
                 alt30 = 2
                 LA30_0 = self.input.LA(1)
 
@@ -2358,7 +2377,7 @@ class CParser(Parser):
                             self.failed = True
                             return retval
 
-                        nvae = NoViableAltException("244:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 1, self.input)
+                        nvae = NoViableAltException("296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 1, self.input)
 
                         raise nvae
 
@@ -2369,13 +2388,13 @@ class CParser(Parser):
                         self.failed = True
                         return retval
 
-                    nvae = NoViableAltException("244:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 0, self.input)
+                    nvae = NoViableAltException("296:1: declarator : ( ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator | pointer );", 30, 0, self.input)
 
                     raise nvae
 
                 if alt30 == 1:
-                    # C.g:245:4: ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator
-                    # C.g:245:4: ( pointer )?
+                    # C.g:297:4: ( pointer )? ( 'EFIAPI' )? ( 'EFI_BOOTSERVICE' )? ( 'EFI_RUNTIMESERVICE' )? direct_declarator
+                    # C.g:297:4: ( pointer )?
                     alt26 = 2
                     LA26_0 = self.input.LA(1)
 
@@ -2383,7 +2402,7 @@ class CParser(Parser):
                         alt26 = 1
                     if alt26 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_declarator774)
+                        self.following.append(self.FOLLOW_pointer_in_declarator784)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -2391,49 +2410,49 @@ class CParser(Parser):
 
 
 
-                    # C.g:245:13: ( 'EFIAPI' )?
+                    # C.g:297:13: ( 'EFIAPI' )?
                     alt27 = 2
                     LA27_0 = self.input.LA(1)
 
                     if (LA27_0 == 58) :
                         alt27 = 1
                     if alt27 == 1:
-                        # C.g:245:14: 'EFIAPI'
-                        self.match(self.input, 58, self.FOLLOW_58_in_declarator778)
+                        # C.g:297:14: 'EFIAPI'
+                        self.match(self.input, 58, self.FOLLOW_58_in_declarator788)
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:245:25: ( 'EFI_BOOTSERVICE' )?
+                    # C.g:297:25: ( 'EFI_BOOTSERVICE' )?
                     alt28 = 2
                     LA28_0 = self.input.LA(1)
 
                     if (LA28_0 == 59) :
                         alt28 = 1
                     if alt28 == 1:
-                        # C.g:245:26: 'EFI_BOOTSERVICE'
-                        self.match(self.input, 59, self.FOLLOW_59_in_declarator783)
+                        # C.g:297:26: 'EFI_BOOTSERVICE'
+                        self.match(self.input, 59, self.FOLLOW_59_in_declarator793)
                         if self.failed:
                             return retval
 
 
 
-                    # C.g:245:46: ( 'EFI_RUNTIMESERVICE' )?
+                    # C.g:297:46: ( 'EFI_RUNTIMESERVICE' )?
                     alt29 = 2
                     LA29_0 = self.input.LA(1)
 
                     if (LA29_0 == 60) :
                         alt29 = 1
                     if alt29 == 1:
-                        # C.g:245:47: 'EFI_RUNTIMESERVICE'
-                        self.match(self.input, 60, self.FOLLOW_60_in_declarator788)
+                        # C.g:297:47: 'EFI_RUNTIMESERVICE'
+                        self.match(self.input, 60, self.FOLLOW_60_in_declarator798)
                         if self.failed:
                             return retval
 
 
 
-                    self.following.append(self.FOLLOW_direct_declarator_in_declarator792)
+                    self.following.append(self.FOLLOW_direct_declarator_in_declarator802)
                     self.direct_declarator()
                     self.following.pop()
                     if self.failed:
@@ -2441,8 +2460,8 @@ class CParser(Parser):
 
 
                 elif alt30 == 2:
-                    # C.g:247:4: pointer
-                    self.following.append(self.FOLLOW_pointer_in_declarator798)
+                    # C.g:299:4: pointer
+                    self.following.append(self.FOLLOW_pointer_in_declarator808)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -2467,7 +2486,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_declarator
-    # C.g:250:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );
+    # C.g:302:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );
     def direct_declarator(self, ):
 
         direct_declarator_StartIndex = self.input.index()
@@ -2476,7 +2495,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 23):
                     return 
 
-                # C.g:251:2: ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ )
+                # C.g:303:2: ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ )
                 alt34 = 2
                 LA34_0 = self.input.LA(1)
 
@@ -2489,16 +2508,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("250:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );", 34, 0, self.input)
+                    nvae = NoViableAltException("302:1: direct_declarator : ( IDENTIFIER ( declarator_suffix )* | '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+ );", 34, 0, self.input)
 
                     raise nvae
 
                 if alt34 == 1:
-                    # C.g:251:4: IDENTIFIER ( declarator_suffix )*
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator809)
+                    # C.g:303:4: IDENTIFIER ( declarator_suffix )*
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_direct_declarator819)
                     if self.failed:
                         return 
-                    # C.g:251:15: ( declarator_suffix )*
+                    # C.g:303:15: ( declarator_suffix )*
                     while True: #loop31
                         alt31 = 2
                         LA31_0 = self.input.LA(1)
@@ -2737,7 +2756,7 @@ class CParser(Parser):
 
                         if alt31 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator811)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator821)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -2751,11 +2770,11 @@ class CParser(Parser):
 
 
                 elif alt34 == 2:
-                    # C.g:252:4: '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+
-                    self.match(self.input, 62, self.FOLLOW_62_in_direct_declarator817)
+                    # C.g:304:4: '(' ( 'EFIAPI' )? declarator ')' ( declarator_suffix )+
+                    self.match(self.input, 62, self.FOLLOW_62_in_direct_declarator827)
                     if self.failed:
                         return 
-                    # C.g:252:8: ( 'EFIAPI' )?
+                    # C.g:304:8: ( 'EFIAPI' )?
                     alt32 = 2
                     LA32_0 = self.input.LA(1)
 
@@ -2765,22 +2784,22 @@ class CParser(Parser):
                         if (self.synpred69()) :
                             alt32 = 1
                     if alt32 == 1:
-                        # C.g:252:9: 'EFIAPI'
-                        self.match(self.input, 58, self.FOLLOW_58_in_direct_declarator820)
+                        # C.g:304:9: 'EFIAPI'
+                        self.match(self.input, 58, self.FOLLOW_58_in_direct_declarator830)
                         if self.failed:
                             return 
 
 
 
-                    self.following.append(self.FOLLOW_declarator_in_direct_declarator824)
+                    self.following.append(self.FOLLOW_declarator_in_direct_declarator834)
                     self.declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_direct_declarator826)
+                    self.match(self.input, 63, self.FOLLOW_63_in_direct_declarator836)
                     if self.failed:
                         return 
-                    # C.g:252:35: ( declarator_suffix )+
+                    # C.g:304:35: ( declarator_suffix )+
                     cnt33 = 0
                     while True: #loop33
                         alt33 = 2
@@ -3020,7 +3039,7 @@ class CParser(Parser):
 
                         if alt33 == 1:
                             # C.g:0:0: declarator_suffix
-                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator828)
+                            self.following.append(self.FOLLOW_declarator_suffix_in_direct_declarator838)
                             self.declarator_suffix()
                             self.following.pop()
                             if self.failed:
@@ -3059,7 +3078,7 @@ class CParser(Parser):
 
 
     # $ANTLR start declarator_suffix
-    # C.g:255:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
+    # C.g:307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );
     def declarator_suffix(self, ):
 
         declarator_suffix_StartIndex = self.input.index()
@@ -3068,7 +3087,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 24):
                     return 
 
-                # C.g:256:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
+                # C.g:308:2: ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' )
                 alt35 = 5
                 LA35_0 = self.input.LA(1)
 
@@ -3084,7 +3103,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("255:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 1, self.input)
+                        nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 1, self.input)
 
                         raise nvae
 
@@ -3106,7 +3125,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("255:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 29, self.input)
+                            nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 29, self.input)
 
                             raise nvae
 
@@ -3115,7 +3134,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("255:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 2, self.input)
+                        nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 2, self.input)
 
                         raise nvae
 
@@ -3124,71 +3143,71 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("255:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 0, self.input)
+                    nvae = NoViableAltException("307:1: declarator_suffix : ( '[' constant_expression ']' | '[' ']' | '(' parameter_type_list ')' | '(' identifier_list ')' | '(' ')' );", 35, 0, self.input)
 
                     raise nvae
 
                 if alt35 == 1:
-                    # C.g:256:6: '[' constant_expression ']'
-                    self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix842)
+                    # C.g:308:6: '[' constant_expression ']'
+                    self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix852)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix844)
+                    self.following.append(self.FOLLOW_constant_expression_in_declarator_suffix854)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix846)
+                    self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix856)
                     if self.failed:
                         return 
 
 
                 elif alt35 == 2:
-                    # C.g:257:9: '[' ']'
-                    self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix856)
+                    # C.g:309:9: '[' ']'
+                    self.match(self.input, 64, self.FOLLOW_64_in_declarator_suffix866)
                     if self.failed:
                         return 
-                    self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix858)
+                    self.match(self.input, 65, self.FOLLOW_65_in_declarator_suffix868)
                     if self.failed:
                         return 
 
 
                 elif alt35 == 3:
-                    # C.g:258:9: '(' parameter_type_list ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix868)
+                    # C.g:310:9: '(' parameter_type_list ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix878)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix870)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_declarator_suffix880)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix872)
+                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix882)
                     if self.failed:
                         return 
 
 
                 elif alt35 == 4:
-                    # C.g:259:9: '(' identifier_list ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix882)
+                    # C.g:311:9: '(' identifier_list ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix892)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix884)
+                    self.following.append(self.FOLLOW_identifier_list_in_declarator_suffix894)
                     self.identifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix886)
+                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix896)
                     if self.failed:
                         return 
 
 
                 elif alt35 == 5:
-                    # C.g:260:9: '(' ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix896)
+                    # C.g:312:9: '(' ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_declarator_suffix906)
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix898)
+                    self.match(self.input, 63, self.FOLLOW_63_in_declarator_suffix908)
                     if self.failed:
                         return 
 
@@ -3209,7 +3228,7 @@ class CParser(Parser):
 
 
     # $ANTLR start pointer
-    # C.g:263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
+    # C.g:315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );
     def pointer(self, ):
 
         pointer_StartIndex = self.input.index()
@@ -3218,7 +3237,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 25):
                     return 
 
-                # C.g:264:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
+                # C.g:316:2: ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' )
                 alt38 = 3
                 LA38_0 = self.input.LA(1)
 
@@ -3236,7 +3255,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 2, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 2, self.input)
 
                             raise nvae
 
@@ -3252,7 +3271,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 3, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 3, self.input)
 
                             raise nvae
 
@@ -3268,7 +3287,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 4, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 4, self.input)
 
                             raise nvae
 
@@ -3284,7 +3303,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 5, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 5, self.input)
 
                             raise nvae
 
@@ -3302,7 +3321,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 21, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 21, self.input)
 
                             raise nvae
 
@@ -3318,7 +3337,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 29, self.input)
+                            nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 29, self.input)
 
                             raise nvae
 
@@ -3327,7 +3346,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 1, self.input)
+                        nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 1, self.input)
 
                         raise nvae
 
@@ -3336,16 +3355,16 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("263:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 0, self.input)
+                    nvae = NoViableAltException("315:1: pointer : ( '*' ( type_qualifier )+ ( pointer )? | '*' pointer | '*' );", 38, 0, self.input)
 
                     raise nvae
 
                 if alt38 == 1:
-                    # C.g:264:4: '*' ( type_qualifier )+ ( pointer )?
-                    self.match(self.input, 66, self.FOLLOW_66_in_pointer909)
+                    # C.g:316:4: '*' ( type_qualifier )+ ( pointer )?
+                    self.match(self.input, 66, self.FOLLOW_66_in_pointer919)
                     if self.failed:
                         return 
-                    # C.g:264:8: ( type_qualifier )+
+                    # C.g:316:8: ( type_qualifier )+
                     cnt36 = 0
                     while True: #loop36
                         alt36 = 2
@@ -3388,7 +3407,7 @@ class CParser(Parser):
 
                         if alt36 == 1:
                             # C.g:0:0: type_qualifier
-                            self.following.append(self.FOLLOW_type_qualifier_in_pointer911)
+                            self.following.append(self.FOLLOW_type_qualifier_in_pointer921)
                             self.type_qualifier()
                             self.following.pop()
                             if self.failed:
@@ -3409,7 +3428,7 @@ class CParser(Parser):
                         cnt36 += 1
 
 
-                    # C.g:264:24: ( pointer )?
+                    # C.g:316:24: ( pointer )?
                     alt37 = 2
                     LA37_0 = self.input.LA(1)
 
@@ -3420,7 +3439,7 @@ class CParser(Parser):
                             alt37 = 1
                     if alt37 == 1:
                         # C.g:0:0: pointer
-                        self.following.append(self.FOLLOW_pointer_in_pointer914)
+                        self.following.append(self.FOLLOW_pointer_in_pointer924)
                         self.pointer()
                         self.following.pop()
                         if self.failed:
@@ -3431,11 +3450,11 @@ class CParser(Parser):
 
 
                 elif alt38 == 2:
-                    # C.g:265:4: '*' pointer
-                    self.match(self.input, 66, self.FOLLOW_66_in_pointer920)
+                    # C.g:317:4: '*' pointer
+                    self.match(self.input, 66, self.FOLLOW_66_in_pointer930)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_pointer_in_pointer922)
+                    self.following.append(self.FOLLOW_pointer_in_pointer932)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
@@ -3443,8 +3462,8 @@ class CParser(Parser):
 
 
                 elif alt38 == 3:
-                    # C.g:266:4: '*'
-                    self.match(self.input, 66, self.FOLLOW_66_in_pointer927)
+                    # C.g:318:4: '*'
+                    self.match(self.input, 66, self.FOLLOW_66_in_pointer937)
                     if self.failed:
                         return 
 
@@ -3465,7 +3484,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_type_list
-    # C.g:269:1: parameter_type_list : parameter_list ( ',' ( 'OPTIONAL' )? '...' )? ;
+    # C.g:321:1: parameter_type_list : parameter_list ( ',' ( 'OPTIONAL' )? '...' )? ;
     def parameter_type_list(self, ):
 
         parameter_type_list_StartIndex = self.input.index()
@@ -3474,39 +3493,39 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 26):
                     return 
 
-                # C.g:270:2: ( parameter_list ( ',' ( 'OPTIONAL' )? '...' )? )
-                # C.g:270:4: parameter_list ( ',' ( 'OPTIONAL' )? '...' )?
-                self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list938)
+                # C.g:322:2: ( parameter_list ( ',' ( 'OPTIONAL' )? '...' )? )
+                # C.g:322:4: parameter_list ( ',' ( 'OPTIONAL' )? '...' )?
+                self.following.append(self.FOLLOW_parameter_list_in_parameter_type_list948)
                 self.parameter_list()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:270:19: ( ',' ( 'OPTIONAL' )? '...' )?
+                # C.g:322:19: ( ',' ( 'OPTIONAL' )? '...' )?
                 alt40 = 2
                 LA40_0 = self.input.LA(1)
 
                 if (LA40_0 == 27) :
                     alt40 = 1
                 if alt40 == 1:
-                    # C.g:270:20: ',' ( 'OPTIONAL' )? '...'
-                    self.match(self.input, 27, self.FOLLOW_27_in_parameter_type_list941)
+                    # C.g:322:20: ',' ( 'OPTIONAL' )? '...'
+                    self.match(self.input, 27, self.FOLLOW_27_in_parameter_type_list951)
                     if self.failed:
                         return 
-                    # C.g:270:24: ( 'OPTIONAL' )?
+                    # C.g:322:24: ( 'OPTIONAL' )?
                     alt39 = 2
                     LA39_0 = self.input.LA(1)
 
                     if (LA39_0 == 53) :
                         alt39 = 1
                     if alt39 == 1:
-                        # C.g:270:25: 'OPTIONAL'
-                        self.match(self.input, 53, self.FOLLOW_53_in_parameter_type_list944)
+                        # C.g:322:25: 'OPTIONAL'
+                        self.match(self.input, 53, self.FOLLOW_53_in_parameter_type_list954)
                         if self.failed:
                             return 
 
 
 
-                    self.match(self.input, 67, self.FOLLOW_67_in_parameter_type_list948)
+                    self.match(self.input, 67, self.FOLLOW_67_in_parameter_type_list958)
                     if self.failed:
                         return 
 
@@ -3531,7 +3550,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_list
-    # C.g:273:1: parameter_list : parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )* ;
+    # C.g:325:1: parameter_list : parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )* ;
     def parameter_list(self, ):
 
         parameter_list_StartIndex = self.input.index()
@@ -3540,14 +3559,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 27):
                     return 
 
-                # C.g:274:2: ( parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )* )
-                # C.g:274:4: parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )*
-                self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list961)
+                # C.g:326:2: ( parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )* )
+                # C.g:326:4: parameter_declaration ( ',' ( 'OPTIONAL' )? parameter_declaration )*
+                self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list971)
                 self.parameter_declaration()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:274:26: ( ',' ( 'OPTIONAL' )? parameter_declaration )*
+                # C.g:326:26: ( ',' ( 'OPTIONAL' )? parameter_declaration )*
                 while True: #loop42
                     alt42 = 2
                     LA42_0 = self.input.LA(1)
@@ -3569,11 +3588,11 @@ class CParser(Parser):
 
 
                     if alt42 == 1:
-                        # C.g:274:27: ',' ( 'OPTIONAL' )? parameter_declaration
-                        self.match(self.input, 27, self.FOLLOW_27_in_parameter_list964)
+                        # C.g:326:27: ',' ( 'OPTIONAL' )? parameter_declaration
+                        self.match(self.input, 27, self.FOLLOW_27_in_parameter_list974)
                         if self.failed:
                             return 
-                        # C.g:274:31: ( 'OPTIONAL' )?
+                        # C.g:326:31: ( 'OPTIONAL' )?
                         alt41 = 2
                         LA41_0 = self.input.LA(1)
 
@@ -3583,14 +3602,14 @@ class CParser(Parser):
                             if (self.synpred81()) :
                                 alt41 = 1
                         if alt41 == 1:
-                            # C.g:274:32: 'OPTIONAL'
-                            self.match(self.input, 53, self.FOLLOW_53_in_parameter_list967)
+                            # C.g:326:32: 'OPTIONAL'
+                            self.match(self.input, 53, self.FOLLOW_53_in_parameter_list977)
                             if self.failed:
                                 return 
 
 
 
-                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list971)
+                        self.following.append(self.FOLLOW_parameter_declaration_in_parameter_list981)
                         self.parameter_declaration()
                         self.following.pop()
                         if self.failed:
@@ -3620,7 +3639,7 @@ class CParser(Parser):
 
 
     # $ANTLR start parameter_declaration
-    # C.g:277:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );
+    # C.g:329:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );
     def parameter_declaration(self, ):
 
         parameter_declaration_StartIndex = self.input.index()
@@ -3629,7 +3648,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 28):
                     return 
 
-                # C.g:278:2: ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER )
+                # C.g:330:2: ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER )
                 alt46 = 2
                 LA46 = self.input.LA(1)
                 if LA46 == 29 or LA46 == 30 or LA46 == 31 or LA46 == 32 or LA46 == 33 or LA46 == 34 or LA46 == 35 or LA46 == 36 or LA46 == 37 or LA46 == 38 or LA46 == 39 or LA46 == 40 or LA46 == 41 or LA46 == 42 or LA46 == 45 or LA46 == 46 or LA46 == 48 or LA46 == 49 or LA46 == 50 or LA46 == 51 or LA46 == 52 or LA46 == 53 or LA46 == 54 or LA46 == 55 or LA46 == 56 or LA46 == 57 or LA46 == 58 or LA46 == 59 or LA46 == 60 or LA46 == 61:
@@ -3646,7 +3665,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("277:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );", 46, 13, self.input)
+                        nvae = NoViableAltException("329:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );", 46, 13, self.input)
 
                         raise nvae
 
@@ -3657,18 +3676,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("277:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );", 46, 0, self.input)
+                    nvae = NoViableAltException("329:1: parameter_declaration : ( declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )? | ( pointer )* IDENTIFIER );", 46, 0, self.input)
 
                     raise nvae
 
                 if alt46 == 1:
-                    # C.g:278:4: declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )?
-                    self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration984)
+                    # C.g:330:4: declaration_specifiers ( declarator | abstract_declarator )* ( 'OPTIONAL' )?
+                    self.following.append(self.FOLLOW_declaration_specifiers_in_parameter_declaration994)
                     self.declaration_specifiers()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:278:27: ( declarator | abstract_declarator )*
+                    # C.g:330:27: ( declarator | abstract_declarator )*
                     while True: #loop43
                         alt43 = 3
                         LA43 = self.input.LA(1)
@@ -3746,8 +3765,8 @@ class CParser(Parser):
                             alt43 = 2
 
                         if alt43 == 1:
-                            # C.g:278:28: declarator
-                            self.following.append(self.FOLLOW_declarator_in_parameter_declaration987)
+                            # C.g:330:28: declarator
+                            self.following.append(self.FOLLOW_declarator_in_parameter_declaration997)
                             self.declarator()
                             self.following.pop()
                             if self.failed:
@@ -3755,8 +3774,8 @@ class CParser(Parser):
 
 
                         elif alt43 == 2:
-                            # C.g:278:39: abstract_declarator
-                            self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration989)
+                            # C.g:330:39: abstract_declarator
+                            self.following.append(self.FOLLOW_abstract_declarator_in_parameter_declaration999)
                             self.abstract_declarator()
                             self.following.pop()
                             if self.failed:
@@ -3767,15 +3786,15 @@ class CParser(Parser):
                             break #loop43
 
 
-                    # C.g:278:61: ( 'OPTIONAL' )?
+                    # C.g:330:61: ( 'OPTIONAL' )?
                     alt44 = 2
                     LA44_0 = self.input.LA(1)
 
                     if (LA44_0 == 53) :
                         alt44 = 1
                     if alt44 == 1:
-                        # C.g:278:62: 'OPTIONAL'
-                        self.match(self.input, 53, self.FOLLOW_53_in_parameter_declaration994)
+                        # C.g:330:62: 'OPTIONAL'
+                        self.match(self.input, 53, self.FOLLOW_53_in_parameter_declaration1004)
                         if self.failed:
                             return 
 
@@ -3784,8 +3803,8 @@ class CParser(Parser):
 
 
                 elif alt46 == 2:
-                    # C.g:280:4: ( pointer )* IDENTIFIER
-                    # C.g:280:4: ( pointer )*
+                    # C.g:332:4: ( pointer )* IDENTIFIER
+                    # C.g:332:4: ( pointer )*
                     while True: #loop45
                         alt45 = 2
                         LA45_0 = self.input.LA(1)
@@ -3796,7 +3815,7 @@ class CParser(Parser):
 
                         if alt45 == 1:
                             # C.g:0:0: pointer
-                            self.following.append(self.FOLLOW_pointer_in_parameter_declaration1003)
+                            self.following.append(self.FOLLOW_pointer_in_parameter_declaration1013)
                             self.pointer()
                             self.following.pop()
                             if self.failed:
@@ -3807,7 +3826,7 @@ class CParser(Parser):
                             break #loop45
 
 
-                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_parameter_declaration1006)
+                    self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_parameter_declaration1016)
                     if self.failed:
                         return 
 
@@ -3828,7 +3847,7 @@ class CParser(Parser):
 
 
     # $ANTLR start identifier_list
-    # C.g:283:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
+    # C.g:335:1: identifier_list : IDENTIFIER ( ',' IDENTIFIER )* ;
     def identifier_list(self, ):
 
         identifier_list_StartIndex = self.input.index()
@@ -3837,12 +3856,12 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 29):
                     return 
 
-                # C.g:284:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
-                # C.g:284:4: IDENTIFIER ( ',' IDENTIFIER )*
-                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list1017)
+                # C.g:336:2: ( IDENTIFIER ( ',' IDENTIFIER )* )
+                # C.g:336:4: IDENTIFIER ( ',' IDENTIFIER )*
+                self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list1027)
                 if self.failed:
                     return 
-                # C.g:285:2: ( ',' IDENTIFIER )*
+                # C.g:337:2: ( ',' IDENTIFIER )*
                 while True: #loop47
                     alt47 = 2
                     LA47_0 = self.input.LA(1)
@@ -3852,11 +3871,11 @@ class CParser(Parser):
 
 
                     if alt47 == 1:
-                        # C.g:285:3: ',' IDENTIFIER
-                        self.match(self.input, 27, self.FOLLOW_27_in_identifier_list1021)
+                        # C.g:337:3: ',' IDENTIFIER
+                        self.match(self.input, 27, self.FOLLOW_27_in_identifier_list1031)
                         if self.failed:
                             return 
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list1023)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_identifier_list1033)
                         if self.failed:
                             return 
 
@@ -3884,7 +3903,7 @@ class CParser(Parser):
 
 
     # $ANTLR start type_name
-    # C.g:288:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
+    # C.g:340:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );
     def type_name(self, ):
 
         type_name_StartIndex = self.input.index()
@@ -3893,7 +3912,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 30):
                     return 
 
-                # C.g:289:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
+                # C.g:341:2: ( specifier_qualifier_list ( abstract_declarator )? | type_id )
                 alt49 = 2
                 LA49_0 = self.input.LA(1)
 
@@ -3911,7 +3930,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("288:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 49, 13, self.input)
+                        nvae = NoViableAltException("340:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 49, 13, self.input)
 
                         raise nvae
 
@@ -3920,18 +3939,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("288:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 49, 0, self.input)
+                    nvae = NoViableAltException("340:1: type_name : ( specifier_qualifier_list ( abstract_declarator )? | type_id );", 49, 0, self.input)
 
                     raise nvae
 
                 if alt49 == 1:
-                    # C.g:289:4: specifier_qualifier_list ( abstract_declarator )?
-                    self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name1036)
+                    # C.g:341:4: specifier_qualifier_list ( abstract_declarator )?
+                    self.following.append(self.FOLLOW_specifier_qualifier_list_in_type_name1046)
                     self.specifier_qualifier_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:289:29: ( abstract_declarator )?
+                    # C.g:341:29: ( abstract_declarator )?
                     alt48 = 2
                     LA48_0 = self.input.LA(1)
 
@@ -3939,7 +3958,7 @@ class CParser(Parser):
                         alt48 = 1
                     if alt48 == 1:
                         # C.g:0:0: abstract_declarator
-                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name1038)
+                        self.following.append(self.FOLLOW_abstract_declarator_in_type_name1048)
                         self.abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -3950,8 +3969,8 @@ class CParser(Parser):
 
 
                 elif alt49 == 2:
-                    # C.g:290:4: type_id
-                    self.following.append(self.FOLLOW_type_id_in_type_name1044)
+                    # C.g:342:4: type_id
+                    self.following.append(self.FOLLOW_type_id_in_type_name1054)
                     self.type_id()
                     self.following.pop()
                     if self.failed:
@@ -3974,7 +3993,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator
-    # C.g:293:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
+    # C.g:345:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );
     def abstract_declarator(self, ):
 
         abstract_declarator_StartIndex = self.input.index()
@@ -3983,7 +4002,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 31):
                     return 
 
-                # C.g:294:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
+                # C.g:346:2: ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator )
                 alt51 = 2
                 LA51_0 = self.input.LA(1)
 
@@ -3996,18 +4015,18 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("293:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 51, 0, self.input)
+                    nvae = NoViableAltException("345:1: abstract_declarator : ( pointer ( direct_abstract_declarator )? | direct_abstract_declarator );", 51, 0, self.input)
 
                     raise nvae
 
                 if alt51 == 1:
-                    # C.g:294:4: pointer ( direct_abstract_declarator )?
-                    self.following.append(self.FOLLOW_pointer_in_abstract_declarator1055)
+                    # C.g:346:4: pointer ( direct_abstract_declarator )?
+                    self.following.append(self.FOLLOW_pointer_in_abstract_declarator1065)
                     self.pointer()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:294:12: ( direct_abstract_declarator )?
+                    # C.g:346:12: ( direct_abstract_declarator )?
                     alt50 = 2
                     LA50_0 = self.input.LA(1)
 
@@ -4187,7 +4206,7 @@ class CParser(Parser):
                                 alt50 = 1
                     if alt50 == 1:
                         # C.g:0:0: direct_abstract_declarator
-                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator1057)
+                        self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator1067)
                         self.direct_abstract_declarator()
                         self.following.pop()
                         if self.failed:
@@ -4198,8 +4217,8 @@ class CParser(Parser):
 
 
                 elif alt51 == 2:
-                    # C.g:295:4: direct_abstract_declarator
-                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator1063)
+                    # C.g:347:4: direct_abstract_declarator
+                    self.following.append(self.FOLLOW_direct_abstract_declarator_in_abstract_declarator1073)
                     self.direct_abstract_declarator()
                     self.following.pop()
                     if self.failed:
@@ -4222,7 +4241,7 @@ class CParser(Parser):
 
 
     # $ANTLR start direct_abstract_declarator
-    # C.g:298:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
+    # C.g:350:1: direct_abstract_declarator : ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* ;
     def direct_abstract_declarator(self, ):
 
         direct_abstract_declarator_StartIndex = self.input.index()
@@ -4231,9 +4250,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 32):
                     return 
 
-                # C.g:299:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
-                # C.g:299:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
-                # C.g:299:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
+                # C.g:351:2: ( ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )* )
+                # C.g:351:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix ) ( abstract_declarator_suffix )*
+                # C.g:351:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )
                 alt52 = 2
                 LA52_0 = self.input.LA(1)
 
@@ -4253,7 +4272,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("299:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 18, self.input)
+                            nvae = NoViableAltException("351:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 18, self.input)
 
                             raise nvae
 
@@ -4264,7 +4283,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("299:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 1, self.input)
+                        nvae = NoViableAltException("351:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 1, self.input)
 
                         raise nvae
 
@@ -4275,28 +4294,28 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("299:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 0, self.input)
+                    nvae = NoViableAltException("351:4: ( '(' abstract_declarator ')' | abstract_declarator_suffix )", 52, 0, self.input)
 
                     raise nvae
 
                 if alt52 == 1:
-                    # C.g:299:6: '(' abstract_declarator ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_direct_abstract_declarator1076)
+                    # C.g:351:6: '(' abstract_declarator ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_direct_abstract_declarator1086)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator1078)
+                    self.following.append(self.FOLLOW_abstract_declarator_in_direct_abstract_declarator1088)
                     self.abstract_declarator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_direct_abstract_declarator1080)
+                    self.match(self.input, 63, self.FOLLOW_63_in_direct_abstract_declarator1090)
                     if self.failed:
                         return 
 
 
                 elif alt52 == 2:
-                    # C.g:299:36: abstract_declarator_suffix
-                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1084)
+                    # C.g:351:36: abstract_declarator_suffix
+                    self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1094)
                     self.abstract_declarator_suffix()
                     self.following.pop()
                     if self.failed:
@@ -4304,7 +4323,7 @@ class CParser(Parser):
 
 
 
-                # C.g:299:65: ( abstract_declarator_suffix )*
+                # C.g:351:65: ( abstract_declarator_suffix )*
                 while True: #loop53
                     alt53 = 2
                     LA53_0 = self.input.LA(1)
@@ -4543,7 +4562,7 @@ class CParser(Parser):
 
                     if alt53 == 1:
                         # C.g:0:0: abstract_declarator_suffix
-                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1088)
+                        self.following.append(self.FOLLOW_abstract_declarator_suffix_in_direct_abstract_declarator1098)
                         self.abstract_declarator_suffix()
                         self.following.pop()
                         if self.failed:
@@ -4573,7 +4592,7 @@ class CParser(Parser):
 
 
     # $ANTLR start abstract_declarator_suffix
-    # C.g:302:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
+    # C.g:354:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );
     def abstract_declarator_suffix(self, ):
 
         abstract_declarator_suffix_StartIndex = self.input.index()
@@ -4582,7 +4601,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 33):
                     return 
 
-                # C.g:303:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
+                # C.g:355:2: ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' )
                 alt54 = 4
                 LA54_0 = self.input.LA(1)
 
@@ -4598,7 +4617,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("302:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 1, self.input)
+                        nvae = NoViableAltException("354:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 1, self.input)
 
                         raise nvae
 
@@ -4614,7 +4633,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("302:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 2, self.input)
+                        nvae = NoViableAltException("354:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 2, self.input)
 
                         raise nvae
 
@@ -4623,56 +4642,56 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("302:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 0, self.input)
+                    nvae = NoViableAltException("354:1: abstract_declarator_suffix : ( '[' ']' | '[' constant_expression ']' | '(' ')' | '(' parameter_type_list ')' );", 54, 0, self.input)
 
                     raise nvae
 
                 if alt54 == 1:
-                    # C.g:303:4: '[' ']'
-                    self.match(self.input, 64, self.FOLLOW_64_in_abstract_declarator_suffix1100)
+                    # C.g:355:4: '[' ']'
+                    self.match(self.input, 64, self.FOLLOW_64_in_abstract_declarator_suffix1110)
                     if self.failed:
                         return 
-                    self.match(self.input, 65, self.FOLLOW_65_in_abstract_declarator_suffix1102)
+                    self.match(self.input, 65, self.FOLLOW_65_in_abstract_declarator_suffix1112)
                     if self.failed:
                         return 
 
 
                 elif alt54 == 2:
-                    # C.g:304:4: '[' constant_expression ']'
-                    self.match(self.input, 64, self.FOLLOW_64_in_abstract_declarator_suffix1107)
+                    # C.g:356:4: '[' constant_expression ']'
+                    self.match(self.input, 64, self.FOLLOW_64_in_abstract_declarator_suffix1117)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix1109)
+                    self.following.append(self.FOLLOW_constant_expression_in_abstract_declarator_suffix1119)
                     self.constant_expression()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 65, self.FOLLOW_65_in_abstract_declarator_suffix1111)
+                    self.match(self.input, 65, self.FOLLOW_65_in_abstract_declarator_suffix1121)
                     if self.failed:
                         return 
 
 
                 elif alt54 == 3:
-                    # C.g:305:4: '(' ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_abstract_declarator_suffix1116)
+                    # C.g:357:4: '(' ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_abstract_declarator_suffix1126)
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_abstract_declarator_suffix1118)
+                    self.match(self.input, 63, self.FOLLOW_63_in_abstract_declarator_suffix1128)
                     if self.failed:
                         return 
 
 
                 elif alt54 == 4:
-                    # C.g:306:4: '(' parameter_type_list ')'
-                    self.match(self.input, 62, self.FOLLOW_62_in_abstract_declarator_suffix1123)
+                    # C.g:358:4: '(' parameter_type_list ')'
+                    self.match(self.input, 62, self.FOLLOW_62_in_abstract_declarator_suffix1133)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1125)
+                    self.following.append(self.FOLLOW_parameter_type_list_in_abstract_declarator_suffix1135)
                     self.parameter_type_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_abstract_declarator_suffix1127)
+                    self.match(self.input, 63, self.FOLLOW_63_in_abstract_declarator_suffix1137)
                     if self.failed:
                         return 
 
@@ -4693,7 +4712,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer
-    # C.g:309:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
+    # C.g:361:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );
     def initializer(self, ):
 
         initializer_StartIndex = self.input.index()
@@ -4702,7 +4721,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 34):
                     return 
 
-                # C.g:311:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
+                # C.g:363:2: ( assignment_expression | '{' initializer_list ( ',' )? '}' )
                 alt56 = 2
                 LA56_0 = self.input.LA(1)
 
@@ -4715,13 +4734,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("309:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 56, 0, self.input)
+                    nvae = NoViableAltException("361:1: initializer : ( assignment_expression | '{' initializer_list ( ',' )? '}' );", 56, 0, self.input)
 
                     raise nvae
 
                 if alt56 == 1:
-                    # C.g:311:4: assignment_expression
-                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1140)
+                    # C.g:363:4: assignment_expression
+                    self.following.append(self.FOLLOW_assignment_expression_in_initializer1150)
                     self.assignment_expression()
                     self.following.pop()
                     if self.failed:
@@ -4729,16 +4748,16 @@ class CParser(Parser):
 
 
                 elif alt56 == 2:
-                    # C.g:312:4: '{' initializer_list ( ',' )? '}'
-                    self.match(self.input, 43, self.FOLLOW_43_in_initializer1145)
+                    # C.g:364:4: '{' initializer_list ( ',' )? '}'
+                    self.match(self.input, 43, self.FOLLOW_43_in_initializer1155)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_initializer_list_in_initializer1147)
+                    self.following.append(self.FOLLOW_initializer_list_in_initializer1157)
                     self.initializer_list()
                     self.following.pop()
                     if self.failed:
                         return 
-                    # C.g:312:25: ( ',' )?
+                    # C.g:364:25: ( ',' )?
                     alt55 = 2
                     LA55_0 = self.input.LA(1)
 
@@ -4746,13 +4765,13 @@ class CParser(Parser):
                         alt55 = 1
                     if alt55 == 1:
                         # C.g:0:0: ','
-                        self.match(self.input, 27, self.FOLLOW_27_in_initializer1149)
+                        self.match(self.input, 27, self.FOLLOW_27_in_initializer1159)
                         if self.failed:
                             return 
 
 
 
-                    self.match(self.input, 44, self.FOLLOW_44_in_initializer1152)
+                    self.match(self.input, 44, self.FOLLOW_44_in_initializer1162)
                     if self.failed:
                         return 
 
@@ -4773,7 +4792,7 @@ class CParser(Parser):
 
 
     # $ANTLR start initializer_list
-    # C.g:315:1: initializer_list : initializer ( ',' initializer )* ;
+    # C.g:367:1: initializer_list : initializer ( ',' initializer )* ;
     def initializer_list(self, ):
 
         initializer_list_StartIndex = self.input.index()
@@ -4782,14 +4801,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 35):
                     return 
 
-                # C.g:316:2: ( initializer ( ',' initializer )* )
-                # C.g:316:4: initializer ( ',' initializer )*
-                self.following.append(self.FOLLOW_initializer_in_initializer_list1163)
+                # C.g:368:2: ( initializer ( ',' initializer )* )
+                # C.g:368:4: initializer ( ',' initializer )*
+                self.following.append(self.FOLLOW_initializer_in_initializer_list1173)
                 self.initializer()
                 self.following.pop()
                 if self.failed:
                     return 
-                # C.g:316:16: ( ',' initializer )*
+                # C.g:368:16: ( ',' initializer )*
                 while True: #loop57
                     alt57 = 2
                     LA57_0 = self.input.LA(1)
@@ -4804,11 +4823,11 @@ class CParser(Parser):
 
 
                     if alt57 == 1:
-                        # C.g:316:17: ',' initializer
-                        self.match(self.input, 27, self.FOLLOW_27_in_initializer_list1166)
+                        # C.g:368:17: ',' initializer
+                        self.match(self.input, 27, self.FOLLOW_27_in_initializer_list1176)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_initializer_in_initializer_list1168)
+                        self.following.append(self.FOLLOW_initializer_in_initializer_list1178)
                         self.initializer()
                         self.following.pop()
                         if self.failed:
@@ -4844,7 +4863,7 @@ class CParser(Parser):
 
 
     # $ANTLR start argument_expression_list
-    # C.g:321:1: argument_expression_list : assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )* ;
+    # C.g:373:1: argument_expression_list : assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )* ;
     def argument_expression_list(self, ):
 
         retval = self.argument_expression_list_return()
@@ -4855,28 +4874,28 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 36):
                     return retval
 
-                # C.g:322:2: ( assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )* )
-                # C.g:322:6: assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )*
-                self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1186)
+                # C.g:374:2: ( assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )* )
+                # C.g:374:6: assignment_expression ( 'OPTIONAL' )? ( ',' assignment_expression ( 'OPTIONAL' )? )*
+                self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1196)
                 self.assignment_expression()
                 self.following.pop()
                 if self.failed:
                     return retval
-                # C.g:322:28: ( 'OPTIONAL' )?
+                # C.g:374:28: ( 'OPTIONAL' )?
                 alt58 = 2
                 LA58_0 = self.input.LA(1)
 
                 if (LA58_0 == 53) :
                     alt58 = 1
                 if alt58 == 1:
-                    # C.g:322:29: 'OPTIONAL'
-                    self.match(self.input, 53, self.FOLLOW_53_in_argument_expression_list1189)
+                    # C.g:374:29: 'OPTIONAL'
+                    self.match(self.input, 53, self.FOLLOW_53_in_argument_expression_list1199)
                     if self.failed:
                         return retval
 
 
 
-                # C.g:322:42: ( ',' assignment_expression ( 'OPTIONAL' )? )*
+                # C.g:374:42: ( ',' assignment_expression ( 'OPTIONAL' )? )*
                 while True: #loop60
                     alt60 = 2
                     LA60_0 = self.input.LA(1)
@@ -4886,24 +4905,24 @@ class CParser(Parser):
 
 
                     if alt60 == 1:
-                        # C.g:322:43: ',' assignment_expression ( 'OPTIONAL' )?
-                        self.match(self.input, 27, self.FOLLOW_27_in_argument_expression_list1194)
+                        # C.g:374:43: ',' assignment_expression ( 'OPTIONAL' )?
+                        self.match(self.input, 27, self.FOLLOW_27_in_argument_expression_list1204)
                         if self.failed:
                             return retval
-                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1196)
+                        self.following.append(self.FOLLOW_assignment_expression_in_argument_expression_list1206)
                         self.assignment_expression()
                         self.following.pop()
                         if self.failed:
                             return retval
-                        # C.g:322:69: ( 'OPTIONAL' )?
+                        # C.g:374:69: ( 'OPTIONAL' )?
                         alt59 = 2
                         LA59_0 = self.input.LA(1)
 
                         if (LA59_0 == 53) :
                             alt59 = 1
                         if alt59 == 1:
-                            # C.g:322:70: 'OPTIONAL'
-                            self.match(self.input, 53, self.FOLLOW_53_in_argument_expression_list1199)
+                            # C.g:374:70: 'OPTIONAL'
+                            self.match(self.input, 53, self.FOLLOW_53_in_argument_expression_list1209)
                             if self.failed:
                                 return retval
 
@@ -4936,7 +4955,7 @@ class CParser(Parser):
 
 
     # $ANTLR start additive_expression
-    # C.g:325:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
+    # C.g:377:1: additive_expression : ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* ;
     def additive_expression(self, ):
 
         additive_expression_StartIndex = self.input.index()
@@ -4945,11 +4964,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 37):
                     return 
 
-                # C.g:326:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
-                # C.g:326:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
-                # C.g:326:4: ( multiplicative_expression )
-                # C.g:326:5: multiplicative_expression
-                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1215)
+                # C.g:378:2: ( ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )* )
+                # C.g:378:4: ( multiplicative_expression ) ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:378:4: ( multiplicative_expression )
+                # C.g:378:5: multiplicative_expression
+                self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1225)
                 self.multiplicative_expression()
                 self.following.pop()
                 if self.failed:
@@ -4957,7 +4976,7 @@ class CParser(Parser):
 
 
 
-                # C.g:326:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
+                # C.g:378:32: ( '+' multiplicative_expression | '-' multiplicative_expression )*
                 while True: #loop61
                     alt61 = 3
                     LA61_0 = self.input.LA(1)
@@ -4969,11 +4988,11 @@ class CParser(Parser):
 
 
                     if alt61 == 1:
-                        # C.g:326:33: '+' multiplicative_expression
-                        self.match(self.input, 68, self.FOLLOW_68_in_additive_expression1219)
+                        # C.g:378:33: '+' multiplicative_expression
+                        self.match(self.input, 68, self.FOLLOW_68_in_additive_expression1229)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1221)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1231)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -4981,11 +5000,11 @@ class CParser(Parser):
 
 
                     elif alt61 == 2:
-                        # C.g:326:65: '-' multiplicative_expression
-                        self.match(self.input, 69, self.FOLLOW_69_in_additive_expression1225)
+                        # C.g:378:65: '-' multiplicative_expression
+                        self.match(self.input, 69, self.FOLLOW_69_in_additive_expression1235)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1227)
+                        self.following.append(self.FOLLOW_multiplicative_expression_in_additive_expression1237)
                         self.multiplicative_expression()
                         self.following.pop()
                         if self.failed:
@@ -5015,7 +5034,7 @@ class CParser(Parser):
 
 
     # $ANTLR start multiplicative_expression
-    # C.g:329:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
+    # C.g:381:1: multiplicative_expression : ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* ;
     def multiplicative_expression(self, ):
 
         multiplicative_expression_StartIndex = self.input.index()
@@ -5024,11 +5043,11 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 38):
                     return 
 
-                # C.g:330:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
-                # C.g:330:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
-                # C.g:330:4: ( cast_expression )
-                # C.g:330:5: cast_expression
-                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1241)
+                # C.g:382:2: ( ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )* )
+                # C.g:382:4: ( cast_expression ) ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:382:4: ( cast_expression )
+                # C.g:382:5: cast_expression
+                self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1251)
                 self.cast_expression()
                 self.following.pop()
                 if self.failed:
@@ -5036,7 +5055,7 @@ class CParser(Parser):
 
 
 
-                # C.g:330:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
+                # C.g:382:22: ( '*' cast_expression | '/' cast_expression | '%' cast_expression )*
                 while True: #loop62
                     alt62 = 4
                     LA62 = self.input.LA(1)
@@ -5048,11 +5067,11 @@ class CParser(Parser):
                         alt62 = 3
 
                     if alt62 == 1:
-                        # C.g:330:23: '*' cast_expression
-                        self.match(self.input, 66, self.FOLLOW_66_in_multiplicative_expression1245)
+                        # C.g:382:23: '*' cast_expression
+                        self.match(self.input, 66, self.FOLLOW_66_in_multiplicative_expression1255)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1247)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1257)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -5060,11 +5079,11 @@ class CParser(Parser):
 
 
                     elif alt62 == 2:
-                        # C.g:330:45: '/' cast_expression
-                        self.match(self.input, 70, self.FOLLOW_70_in_multiplicative_expression1251)
+                        # C.g:382:45: '/' cast_expression
+                        self.match(self.input, 70, self.FOLLOW_70_in_multiplicative_expression1261)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1253)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1263)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -5072,11 +5091,11 @@ class CParser(Parser):
 
 
                     elif alt62 == 3:
-                        # C.g:330:67: '%' cast_expression
-                        self.match(self.input, 71, self.FOLLOW_71_in_multiplicative_expression1257)
+                        # C.g:382:67: '%' cast_expression
+                        self.match(self.input, 71, self.FOLLOW_71_in_multiplicative_expression1267)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1259)
+                        self.following.append(self.FOLLOW_cast_expression_in_multiplicative_expression1269)
                         self.cast_expression()
                         self.following.pop()
                         if self.failed:
@@ -5106,7 +5125,7 @@ class CParser(Parser):
 
 
     # $ANTLR start cast_expression
-    # C.g:333:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
+    # C.g:385:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );
     def cast_expression(self, ):
 
         cast_expression_StartIndex = self.input.index()
@@ -5115,7 +5134,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 39):
                     return 
 
-                # C.g:334:2: ( '(' type_name ')' cast_expression | unary_expression )
+                # C.g:386:2: ( '(' type_name ')' cast_expression | unary_expression )
                 alt63 = 2
                 LA63_0 = self.input.LA(1)
 
@@ -5135,7 +5154,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("333:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 25, self.input)
+                            nvae = NoViableAltException("385:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 25, self.input)
 
                             raise nvae
 
@@ -5146,7 +5165,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("333:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 1, self.input)
+                        nvae = NoViableAltException("385:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 1, self.input)
 
                         raise nvae
 
@@ -5157,24 +5176,24 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("333:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 0, self.input)
+                    nvae = NoViableAltException("385:1: cast_expression : ( '(' type_name ')' cast_expression | unary_expression );", 63, 0, self.input)
 
                     raise nvae
 
                 if alt63 == 1:
-                    # C.g:334:4: '(' type_name ')' cast_expression
-                    self.match(self.input, 62, self.FOLLOW_62_in_cast_expression1272)
+                    # C.g:386:4: '(' type_name ')' cast_expression
+                    self.match(self.input, 62, self.FOLLOW_62_in_cast_expression1282)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_cast_expression1274)
+                    self.following.append(self.FOLLOW_type_name_in_cast_expression1284)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_cast_expression1276)
+                    self.match(self.input, 63, self.FOLLOW_63_in_cast_expression1286)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1278)
+                    self.following.append(self.FOLLOW_cast_expression_in_cast_expression1288)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -5182,8 +5201,8 @@ class CParser(Parser):
 
 
                 elif alt63 == 2:
-                    # C.g:335:4: unary_expression
-                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1283)
+                    # C.g:387:4: unary_expression
+                    self.following.append(self.FOLLOW_unary_expression_in_cast_expression1293)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -5206,7 +5225,7 @@ class CParser(Parser):
 
 
     # $ANTLR start unary_expression
-    # C.g:338:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );
+    # C.g:390: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()
@@ -5215,7 +5234,7 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 40):
                     return 
 
-                # C.g:339:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
+                # C.g:391:2: ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' )
                 alt64 = 6
                 LA64 = self.input.LA(1)
                 if LA64 == IDENTIFIER or LA64 == HEX_LITERAL or LA64 == OCTAL_LITERAL or LA64 == DECIMAL_LITERAL or LA64 == CHARACTER_LITERAL or LA64 == STRING_LITERAL or LA64 == FLOATING_POINT_LITERAL or LA64 == 62:
@@ -5241,7 +5260,7 @@ class CParser(Parser):
                                 self.failed = True
                                 return 
 
-                            nvae = NoViableAltException("338:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 13, self.input)
+                            nvae = NoViableAltException("390:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 13, self.input)
 
                             raise nvae
 
@@ -5252,7 +5271,7 @@ class CParser(Parser):
                             self.failed = True
                             return 
 
-                        nvae = NoViableAltException("338:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 12, self.input)
+                        nvae = NoViableAltException("390:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 12, self.input)
 
                         raise nvae
 
@@ -5261,13 +5280,13 @@ class CParser(Parser):
                         self.failed = True
                         return 
 
-                    nvae = NoViableAltException("338:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 0, self.input)
+                    nvae = NoViableAltException("390:1: unary_expression : ( postfix_expression | '++' unary_expression | '--' unary_expression | unary_operator cast_expression | 'sizeof' unary_expression | 'sizeof' '(' type_name ')' );", 64, 0, self.input)
 
                     raise nvae
 
                 if alt64 == 1:
-                    # C.g:339:4: postfix_expression
-                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1294)
+                    # C.g:391:4: postfix_expression
+                    self.following.append(self.FOLLOW_postfix_expression_in_unary_expression1304)
                     self.postfix_expression()
                     self.following.pop()
                     if self.failed:
@@ -5275,11 +5294,11 @@ class CParser(Parser):
 
 
                 elif alt64 == 2:
-                    # C.g:340:4: '++' unary_expression
-                    self.match(self.input, 72, self.FOLLOW_72_in_unary_expression1299)
+                    # C.g:392:4: '++' unary_expression
+                    self.match(self.input, 72, self.FOLLOW_72_in_unary_expression1309)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1301)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1311)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -5287,11 +5306,11 @@ class CParser(Parser):
 
 
                 elif alt64 == 3:
-                    # C.g:341:4: '--' unary_expression
-                    self.match(self.input, 73, self.FOLLOW_73_in_unary_expression1306)
+                    # C.g:393:4: '--' unary_expression
+                    self.match(self.input, 73, self.FOLLOW_73_in_unary_expression1316)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1308)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1318)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -5299,13 +5318,13 @@ class CParser(Parser):
 
 
                 elif alt64 == 4:
-                    # C.g:342:4: unary_operator cast_expression
-                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1313)
+                    # C.g:394:4: unary_operator cast_expression
+                    self.following.append(self.FOLLOW_unary_operator_in_unary_expression1323)
                     self.unary_operator()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1315)
+                    self.following.append(self.FOLLOW_cast_expression_in_unary_expression1325)
                     self.cast_expression()
                     self.following.pop()
                     if self.failed:
@@ -5313,11 +5332,11 @@ class CParser(Parser):
 
 
                 elif alt64 == 5:
-                    # C.g:343:4: 'sizeof' unary_expression
-                    self.match(self.input, 74, self.FOLLOW_74_in_unary_expression1320)
+                    # C.g:395:4: 'sizeof' unary_expression
+                    self.match(self.input, 74, self.FOLLOW_74_in_unary_expression1330)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1322)
+                    self.following.append(self.FOLLOW_unary_expression_in_unary_expression1332)
                     self.unary_expression()
                     self.following.pop()
                     if self.failed:
@@ -5325,19 +5344,19 @@ class CParser(Parser):
 
 
                 elif alt64 == 6:
-                    # C.g:344:4: 'sizeof' '(' type_name ')'
-                    self.match(self.input, 74, self.FOLLOW_74_in_unary_expression1327)
+                    # C.g:396:4: 'sizeof' '(' type_name ')'
+                    self.match(self.input, 74, self.FOLLOW_74_in_unary_expression1337)
                     if self.failed:
                         return 
-                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1329)
+                    self.match(self.input, 62, self.FOLLOW_62_in_unary_expression1339)
                     if self.failed:
                         return 
-                    self.following.append(self.FOLLOW_type_name_in_unary_expression1331)
+                    self.following.append(self.FOLLOW_type_name_in_unary_expression1341)
                     self.type_name()
                     self.following.pop()
                     if self.failed:
                         return 
-                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1333)
+                    self.match(self.input, 63, self.FOLLOW_63_in_unary_expression1343)
                     if self.failed:
                         return 
 
@@ -5358,7 +5377,7 @@ class CParser(Parser):
 
 
     # $ANTLR start postfix_expression
-    # C.g:347:1: postfix_expression : p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )* ;
+    # C.g:399:1: postfix_expression : p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )* ;
     def postfix_expression(self, ):
         self.postfix_expression_stack.append(postfix_expression_scope())
         postfix_expression_StartIndex = self.input.index()
@@ -5380,9 +5399,9 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 41):
                     return 
 
-                # C.g:354:2: (p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )* )
-                # C.g:354:6: p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )*
-                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1357)
+                # C.g:406:2: (p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )* )
+                # C.g:406:6: p= primary_expression ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )*
+                self.following.append(self.FOLLOW_primary_expression_in_postfix_expression1367)
                 p = self.primary_expression()
                 self.following.pop()
                 if self.failed:
@@ -5390,7 +5409,7 @@ class CParser(Parser):
                 if self.backtracking == 0:
                     self.postfix_expression_stack[-1].FuncCallText += self.input.toString(p.start,p.stop)
 
-                # C.g:355:9: ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )*
+                # C.g:407:9: ( '[' expression ']' | '(' a= ')' | '(' c= argument_expression_list b= ')' | '(' macro_parameter_list ')' | '.' x= IDENTIFIER | '*' y= IDENTIFIER | '->' z= IDENTIFIER | '++' | '--' )*
                 while True: #loop65
                     alt65 = 10
                     LA65 = self.input.LA(1)
@@ -5445,27 +5464,27 @@ class CParser(Parser):
                         alt65 = 9
 
                     if alt65 == 1:
-                        # C.g:355:13: '[' expression ']'
-                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1373)
+                        # C.g:407:13: '[' expression ']'
+                        self.match(self.input, 64, self.FOLLOW_64_in_postfix_expression1383)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_expression_in_postfix_expression1375)
+                        self.following.append(self.FOLLOW_expression_in_postfix_expression1385)
                         self.expression()
                         self.following.pop()
                         if self.failed:
                             return 
-                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1377)
+                        self.match(self.input, 65, self.FOLLOW_65_in_postfix_expression1387)
                         if self.failed:
                             return 
 
 
                     elif alt65 == 2:
-                        # C.g:356:13: '(' a= ')'
-                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1391)
+                        # C.g:408:13: '(' a= ')'
+                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1401)
                         if self.failed:
                             return 
                         a = self.input.LT(1)
-                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1395)
+                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1405)
                         if self.failed:
                             return 
                         if self.backtracking == 0:
@@ -5474,17 +5493,17 @@ class CParser(Parser):
 
 
                     elif alt65 == 3:
-                        # C.g:357:13: '(' c= argument_expression_list b= ')'
-                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1410)
+                        # C.g:409:13: '(' c= argument_expression_list b= ')'
+                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1420)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1414)
+                        self.following.append(self.FOLLOW_argument_expression_list_in_postfix_expression1424)
                         c = self.argument_expression_list()
                         self.following.pop()
                         if self.failed:
                             return 
                         b = self.input.LT(1)
-                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1418)
+                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1428)
                         if self.failed:
                             return 
                         if self.backtracking == 0:
@@ -5493,27 +5512,27 @@ class CParser(Parser):
 
 
                     elif alt65 == 4:
-                        # C.g:358:13: '(' macro_parameter_list ')'
-                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1434)
+                        # C.g:410:13: '(' macro_parameter_list ')'
+                        self.match(self.input, 62, self.FOLLOW_62_in_postfix_expression1444)
                         if self.failed:
                             return 
-                        self.following.append(self.FOLLOW_macro_parameter_list_in_postfix_expression1436)
+                        self.following.append(self.FOLLOW_macro_parameter_list_in_postfix_expression1446)
                         self.macro_parameter_list()
                         self.following.pop()
                         if self.failed:
                             return 
-                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1438)
+                        self.match(self.input, 63, self.FOLLOW_63_in_postfix_expression1448)
                         if self.failed:
                             return 
 
 
                     elif alt65 == 5:
-                        # C.g:359:13: '.' x= IDENTIFIER
-                        self.match(self.input, 75, self.FOLLOW_75_in_postfix_expression1452)
+                        # C.g:411:13: '.' x= IDENTIFIER
+                        self.match(self.input, 75, self.FOLLOW_75_in_postfix_expression1462)
                         if self.failed:
                             return 
                         x = self.input.LT(1)
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1456)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1466)
                         if self.failed:
                             return 
                         if self.backtracking == 0:
@@ -5522,12 +5541,12 @@ class CParser(Parser):
 
 
                     elif alt65 == 6:
-                        # C.g:360:13: '*' y= IDENTIFIER
-                        self.match(self.input, 66, self.FOLLOW_66_in_postfix_expression1472)
+                        # C.g:412:13: '*' y= IDENTIFIER
+                        self.match(self.input, 66, self.FOLLOW_66_in_postfix_expression1482)
                         if self.failed:
                             return 
                         y = self.input.LT(1)
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1476)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1486)
                         if self.failed:
                             return 
                         if self.backtracking == 0:
@@ -5536,12 +5555,12 @@ class CParser(Parser):
 
 
                     elif alt65 == 7:
-                        # C.g:361:13: '->' z= IDENTIFIER
-                        self.match(self.input, 76, self.FOLLOW_76_in_postfix_expression1492)
+                        # C.g:413:13: '->' z= IDENTIFIER
+                        self.match(self.input, 76, self.FOLLOW_76_in_postfix_expression1502)
                         if self.failed:
                             return 
                         z = self.input.LT(1)
-                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1496)
+                        self.match(self.input, IDENTIFIER, self.FOLLOW_IDENTIFIER_in_postfix_expression1506)
                         if self.failed:
                             return 
                         if self.backtracking == 0:
@@ -5550,15 +5569,15 @@ class CParser(Parser):
 
 
                     elif alt65 == 8:
-                        # C.g:362:13: '++'
-                        self.match(self.input, 72, self.FOLLOW_72_in_postfix_expression1512)
+                        # C.g:414:13: '++'
+                        self.match(self.input, 72, self.FOLLOW_72_in_postfix_expression1522)
                         if self.failed:
                             return 
 
 
                     elif alt65 == 9:
-                        # C.g:363:13: '--'
-                        self.match(self.input, 73, self.FOLLOW_73_in_postfix_expression1526)
+                        # C.g:415:13: '--'
+                        self.match(self.input, 73, self.FOLLOW_73_in_postfix_expression1536)
                         if self.failed:
                             return 
 
@@ -5587,7 +5606,7 @@ class CParser(Parser):
 
 
     # $ANTLR start macro_parameter_list
-    # C.g:367:1: macro_parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
+    # C.g:419:1: macro_parameter_list : parameter_declaration ( ',' parameter_declaration )* ;
     def macro_parameter_list(self, ):
 
         macro_parameter_list_StartIndex = self.input.index()
@@ -5596,14 +5615,14 @@ class CParser(Parser):
                 if self.backtracking > 0 and self.alreadyParsedRule(self.input, 42):
                     return 
 
-                # C.g:368:2: ( parameter_declaration ( ',' parameter_declaration )* )
-                # C.g:368:4: parameter_declaration ( ',' parameter_declaration )*
-   &nbs