]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Ecc/CLexer.py
Sync EDKII BaseTools to BaseTools project r1903.
[mirror_edk2.git] / BaseTools / Source / Python / Ecc / CLexer.py
index cc437e08214c0e062b269884fba4a721e167cccf..947ac4c8e3c085e663bc26d19ca5cee0e4d8bbbb 100644 (file)
-# $ANTLR 3.0.1 C.g 2009-02-16 16:02:51
+# $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
 HIDDEN = BaseRecognizer.HIDDEN
 
 # token types
-T29=29
-HexDigit=13
-T70=70
-T74=74
-T85=85
-T102=102
 T114=114
-T103=103
+T115=115
+T116=116
+T117=117
+FloatTypeSuffix=16
+LETTER=11
+T29=29
+T28=28
+T27=27
+T26=26
+T25=25
+EOF=-1
 STRING_LITERAL=9
+FLOATING_POINT_LITERAL=10
+T38=38
+T37=37
+T39=39
+T34=34
+COMMENT=22
+T33=33
+T36=36
+T35=35
+T30=30
 T32=32
-T81=81
+T31=31
+LINE_COMMENT=23
+IntegerTypeSuffix=14
+CHARACTER_LITERAL=8
+T49=49
+T48=48
+T100=100
+T43=43
+T42=42
+T102=102
 T41=41
-FloatTypeSuffix=16
-T113=113
-T62=62
+T101=101
+T40=40
+T47=47
+T46=46
+T45=45
+T44=44
 T109=109
+T107=107
+T108=108
+T105=105
+WS=19
+T106=106
+T103=103
+T104=104
+T50=50
+LINE_COMMAND=24
+T59=59
+T113=113
+T52=52
+T112=112
+T51=51
+T111=111
+T54=54
+T110=110
+EscapeSequence=12
 DECIMAL_LITERAL=7
-IntegerTypeSuffix=14
-T68=68
+T53=53
+T56=56
+T55=55
+T58=58
+T57=57
+T75=75
+T76=76
 T73=73
-T84=84
-T33=33
-UnicodeVocabulary=21
+T74=74
+T79=79
+T77=77
 T78=78
-T115=115
-WS=19
-LINE_COMMAND=24
-T42=42
-T96=96
-T71=71
-LINE_COMMENT=23
+Exponent=15
+HexDigit=13
 T72=72
-T94=94
-FLOATING_POINT_LITERAL=10
-T76=76
-UnicodeEscape=18
-T75=75
-T89=89
+T71=71
+T70=70
+T62=62
+T63=63
+T64=64
+T65=65
+T66=66
 T67=67
-T31=31
-T60=60
-T82=82
-T100=100
-T49=49
+T68=68
+T69=69
 IDENTIFIER=4
-T30=30
-CHARACTER_LITERAL=8
-T79=79
-T36=36
-T58=58
-T93=93
-T35=35
-T107=107
-OCTAL_LITERAL=6
-T83=83
-T61=61
+UnicodeVocabulary=21
 HEX_LITERAL=5
-T45=45
-T34=34
-T101=101
-T64=64
-T25=25
-T91=91
-T105=105
-T37=37
-T86=86
-T116=116
-EscapeSequence=12
-T26=26
-T51=51
-T111=111
-T46=46
-T77=77
-T38=38
-T106=106
-T112=112
-T69=69
-T39=39
-T44=44
-T55=55
-LETTER=11
-Exponent=15
-T95=95
-T50=50
-T110=110
-T108=108
+T61=61
+T60=60
+T99=99
+T97=97
 BS=20
+T98=98
+T95=95
+T96=96
+OCTAL_LITERAL=6
+T94=94
+Tokens=118
+T93=93
 T92=92
-T43=43
-T28=28
-T40=40
-T66=66
-COMMENT=22
+T91=91
+T90=90
 T88=88
-T63=63
-T57=57
-T65=65
-T98=98
-T56=56
+T89=89
+T84=84
+T85=85
+T86=86
 T87=87
+UnicodeEscape=18
+T81=81
 T80=80
-T59=59
-T97=97
-T48=48
-T54=54
-EOF=-1
-T104=104
-T47=47
-Tokens=117
-T53=53
+T83=83
 OctalEscape=17
-T99=99
-T27=27
-T52=52
-T90=90
+T82=82
 
 class CLexer(Lexer):
 
@@ -162,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';')
 
 
@@ -184,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")
 
 
@@ -207,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',')
 
 
@@ -229,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'=')
 
 
@@ -251,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")
 
 
@@ -274,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")
 
 
@@ -297,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")
 
 
@@ -320,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")
 
 
@@ -343,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")
 
 
@@ -366,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")
 
 
@@ -389,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")
 
 
@@ -412,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")
 
 
@@ -435,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")
 
 
@@ -458,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")
 
 
@@ -481,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")
 
 
@@ -504,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")
 
 
@@ -527,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")
 
 
@@ -550,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")
 
 
@@ -573,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'{')
 
 
@@ -595,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'}')
 
 
@@ -617,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")
 
 
@@ -640,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")
 
 
@@ -663,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':')
 
 
@@ -685,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")
 
 
@@ -708,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")
 
 
@@ -731,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")
 
 
@@ -754,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")
 
 
@@ -777,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")
 
 
@@ -800,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")
 
 
@@ -823,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")
 
 
@@ -846,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")
 
 
@@ -869,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")
 
 
@@ -892,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")
 
 
@@ -915,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")
 
 
@@ -938,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")
 
 
@@ -961,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")
 
 
@@ -984,9 +1005,10 @@ class CLexer(Lexer):
         try:
             self.type = T61
 
-            # C.g:43:5: ( '(' )
-            # C.g:43:7: '('
-            self.match(u'(')
+            # C.g:63:5: ( 'PACKED' )
+            # C.g:63:7: 'PACKED'
+            self.match("PACKED")
+
 
 
 
@@ -1006,9 +1028,9 @@ class CLexer(Lexer):
         try:
             self.type = T62
 
-            # C.g:44:5: ( ')' )
-            # C.g:44:7: ')'
-            self.match(u')')
+            # C.g:64:5: ( '(' )
+            # C.g:64:7: '('
+            self.match(u'(')
 
 
 
@@ -1028,9 +1050,9 @@ class CLexer(Lexer):
         try:
             self.type = T63
 
-            # C.g:45:5: ( '[' )
-            # C.g:45:7: '['
-            self.match(u'[')
+            # C.g:65:5: ( ')' )
+            # C.g:65:7: ')'
+            self.match(u')')
 
 
 
@@ -1050,9 +1072,9 @@ class CLexer(Lexer):
         try:
             self.type = T64
 
-            # C.g:46:5: ( ']' )
-            # C.g:46:7: ']'
-            self.match(u']')
+            # C.g:66:5: ( '[' )
+            # C.g:66:7: '['
+            self.match(u'[')
 
 
 
@@ -1072,9 +1094,9 @@ class CLexer(Lexer):
         try:
             self.type = T65
 
-            # C.g:47:5: ( '*' )
-            # C.g:47:7: '*'
-            self.match(u'*')
+            # C.g:67:5: ( ']' )
+            # C.g:67:7: ']'
+            self.match(u']')
 
 
 
@@ -1094,10 +1116,9 @@ class CLexer(Lexer):
         try:
             self.type = T66
 
-            # C.g:48:5: ( '...' )
-            # C.g:48:7: '...'
-            self.match("...")
-
+            # C.g:68:5: ( '*' )
+            # C.g:68:7: '*'
+            self.match(u'*')
 
 
 
@@ -1117,9 +1138,10 @@ class CLexer(Lexer):
         try:
             self.type = T67
 
-            # C.g:49:5: ( '+' )
-            # C.g:49:7: '+'
-            self.match(u'+')
+            # C.g:69:5: ( '...' )
+            # C.g:69:7: '...'
+            self.match("...")
+
 
 
 
@@ -1139,9 +1161,9 @@ class CLexer(Lexer):
         try:
             self.type = T68
 
-            # C.g:50:5: ( '-' )
-            # C.g:50:7: '-'
-            self.match(u'-')
+            # C.g:70:5: ( '+' )
+            # C.g:70:7: '+'
+            self.match(u'+')
 
 
 
@@ -1161,9 +1183,9 @@ class CLexer(Lexer):
         try:
             self.type = T69
 
-            # C.g:51:5: ( '/' )
-            # C.g:51:7: '/'
-            self.match(u'/')
+            # C.g:71:5: ( '-' )
+            # C.g:71:7: '-'
+            self.match(u'-')
 
 
 
@@ -1183,9 +1205,9 @@ class CLexer(Lexer):
         try:
             self.type = T70
 
-            # C.g:52:5: ( '%' )
-            # C.g:52:7: '%'
-            self.match(u'%')
+            # C.g:72:5: ( '/' )
+            # C.g:72:7: '/'
+            self.match(u'/')
 
 
 
@@ -1205,10 +1227,9 @@ class CLexer(Lexer):
         try:
             self.type = T71
 
-            # C.g:53:5: ( '++' )
-            # C.g:53:7: '++'
-            self.match("++")
-
+            # C.g:73:5: ( '%' )
+            # C.g:73:7: '%'
+            self.match(u'%')
 
 
 
@@ -1228,9 +1249,9 @@ class CLexer(Lexer):
         try:
             self.type = T72
 
-            # C.g:54:5: ( '--' )
-            # C.g:54:7: '--'
-            self.match("--")
+            # C.g:74:5: ( '++' )
+            # C.g:74:7: '++'
+            self.match("++")
 
 
 
@@ -1251,9 +1272,9 @@ class CLexer(Lexer):
         try:
             self.type = T73
 
-            # C.g:55:5: ( 'sizeof' )
-            # C.g:55:7: 'sizeof'
-            self.match("sizeof")
+            # C.g:75:5: ( '--' )
+            # C.g:75:7: '--'
+            self.match("--")
 
 
 
@@ -1274,9 +1295,10 @@ class CLexer(Lexer):
         try:
             self.type = T74
 
-            # C.g:56:5: ( '.' )
-            # C.g:56:7: '.'
-            self.match(u'.')
+            # C.g:76:5: ( 'sizeof' )
+            # C.g:76:7: 'sizeof'
+            self.match("sizeof")
+
 
 
 
@@ -1296,10 +1318,9 @@ class CLexer(Lexer):
         try:
             self.type = T75
 
-            # C.g:57:5: ( '->' )
-            # C.g:57:7: '->'
-            self.match("->")
-
+            # C.g:77:5: ( '.' )
+            # C.g:77:7: '.'
+            self.match(u'.')
 
 
 
@@ -1319,9 +1340,10 @@ class CLexer(Lexer):
         try:
             self.type = T76
 
-            # C.g:58:5: ( '&' )
-            # C.g:58:7: '&'
-            self.match(u'&')
+            # C.g:78:5: ( '->' )
+            # C.g:78:7: '->'
+            self.match("->")
+
 
 
 
@@ -1341,9 +1363,9 @@ class CLexer(Lexer):
         try:
             self.type = T77
 
-            # C.g:59:5: ( '~' )
-            # C.g:59:7: '~'
-            self.match(u'~')
+            # C.g:79:5: ( '&' )
+            # C.g:79:7: '&'
+            self.match(u'&')
 
 
 
@@ -1363,9 +1385,9 @@ class CLexer(Lexer):
         try:
             self.type = T78
 
-            # C.g:60:5: ( '!' )
-            # C.g:60:7: '!'
-            self.match(u'!')
+            # C.g:80:5: ( '~' )
+            # C.g:80:7: '~'
+            self.match(u'~')
 
 
 
@@ -1385,10 +1407,9 @@ class CLexer(Lexer):
         try:
             self.type = T79
 
-            # C.g:61:5: ( '*=' )
-            # C.g:61:7: '*='
-            self.match("*=")
-
+            # C.g:81:5: ( '!' )
+            # C.g:81:7: '!'
+            self.match(u'!')
 
 
 
@@ -1408,9 +1429,9 @@ class CLexer(Lexer):
         try:
             self.type = T80
 
-            # C.g:62:5: ( '/=' )
-            # C.g:62:7: '/='
-            self.match("/=")
+            # C.g:82:5: ( '*=' )
+            # C.g:82:7: '*='
+            self.match("*=")
 
 
 
@@ -1431,9 +1452,9 @@ class CLexer(Lexer):
         try:
             self.type = T81
 
-            # C.g:63:5: ( '%=' )
-            # C.g:63:7: '%='
-            self.match("%=")
+            # C.g:83:5: ( '/=' )
+            # C.g:83:7: '/='
+            self.match("/=")
 
 
 
@@ -1454,9 +1475,9 @@ class CLexer(Lexer):
         try:
             self.type = T82
 
-            # C.g:64:5: ( '+=' )
-            # C.g:64:7: '+='
-            self.match("+=")
+            # C.g:84:5: ( '%=' )
+            # C.g:84:7: '%='
+            self.match("%=")
 
 
 
@@ -1477,9 +1498,9 @@ class CLexer(Lexer):
         try:
             self.type = T83
 
-            # C.g:65:5: ( '-=' )
-            # C.g:65:7: '-='
-            self.match("-=")
+            # C.g:85:5: ( '+=' )
+            # C.g:85:7: '+='
+            self.match("+=")
 
 
 
@@ -1500,9 +1521,9 @@ class CLexer(Lexer):
         try:
             self.type = T84
 
-            # C.g:66:5: ( '<<=' )
-            # C.g:66:7: '<<='
-            self.match("<<=")
+            # C.g:86:5: ( '-=' )
+            # C.g:86:7: '-='
+            self.match("-=")
 
 
 
@@ -1523,9 +1544,9 @@ class CLexer(Lexer):
         try:
             self.type = T85
 
-            # C.g:67:5: ( '>>=' )
-            # C.g:67:7: '>>='
-            self.match(">>=")
+            # C.g:87:5: ( '<<=' )
+            # C.g:87:7: '<<='
+            self.match("<<=")
 
 
 
@@ -1546,9 +1567,9 @@ class CLexer(Lexer):
         try:
             self.type = T86
 
-            # C.g:68:5: ( '&=' )
-            # C.g:68:7: '&='
-            self.match("&=")
+            # C.g:88:5: ( '>>=' )
+            # C.g:88:7: '>>='
+            self.match(">>=")
 
 
 
@@ -1569,9 +1590,9 @@ class CLexer(Lexer):
         try:
             self.type = T87
 
-            # C.g:69:5: ( '^=' )
-            # C.g:69:7: '^='
-            self.match("^=")
+            # C.g:89:5: ( '&=' )
+            # C.g:89:7: '&='
+            self.match("&=")
 
 
 
@@ -1592,9 +1613,9 @@ class CLexer(Lexer):
         try:
             self.type = T88
 
-            # C.g:70:5: ( '|=' )
-            # C.g:70:7: '|='
-            self.match("|=")
+            # C.g:90:5: ( '^=' )
+            # C.g:90:7: '^='
+            self.match("^=")
 
 
 
@@ -1615,9 +1636,10 @@ class CLexer(Lexer):
         try:
             self.type = T89
 
-            # C.g:71:5: ( '?' )
-            # C.g:71:7: '?'
-            self.match(u'?')
+            # C.g:91:5: ( '|=' )
+            # C.g:91:7: '|='
+            self.match("|=")
+
 
 
 
@@ -1637,10 +1659,9 @@ class CLexer(Lexer):
         try:
             self.type = T90
 
-            # C.g:72:5: ( '||' )
-            # C.g:72:7: '||'
-            self.match("||")
-
+            # C.g:92:5: ( '?' )
+            # C.g:92:7: '?'
+            self.match(u'?')
 
 
 
@@ -1660,9 +1681,9 @@ class CLexer(Lexer):
         try:
             self.type = T91
 
-            # C.g:73:5: ( '&&' )
-            # C.g:73:7: '&&'
-            self.match("&&")
+            # C.g:93:5: ( '||' )
+            # C.g:93:7: '||'
+            self.match("||")
 
 
 
@@ -1683,9 +1704,10 @@ class CLexer(Lexer):
         try:
             self.type = T92
 
-            # C.g:74:5: ( '|' )
-            # C.g:74:7: '|'
-            self.match(u'|')
+            # C.g:94:5: ( '&&' )
+            # C.g:94:7: '&&'
+            self.match("&&")
+
 
 
 
@@ -1705,9 +1727,9 @@ class CLexer(Lexer):
         try:
             self.type = T93
 
-            # C.g:75:5: ( '^' )
-            # C.g:75:7: '^'
-            self.match(u'^')
+            # C.g:95:5: ( '|' )
+            # C.g:95:7: '|'
+            self.match(u'|')
 
 
 
@@ -1727,10 +1749,9 @@ class CLexer(Lexer):
         try:
             self.type = T94
 
-            # C.g:76:5: ( '==' )
-            # C.g:76:7: '=='
-            self.match("==")
-
+            # C.g:96:5: ( '^' )
+            # C.g:96:7: '^'
+            self.match(u'^')
 
 
 
@@ -1750,9 +1771,9 @@ class CLexer(Lexer):
         try:
             self.type = T95
 
-            # C.g:77:5: ( '!=' )
-            # C.g:77:7: '!='
-            self.match("!=")
+            # C.g:97:5: ( '==' )
+            # C.g:97:7: '=='
+            self.match("==")
 
 
 
@@ -1773,9 +1794,10 @@ class CLexer(Lexer):
         try:
             self.type = T96
 
-            # C.g:78:5: ( '<' )
-            # C.g:78:7: '<'
-            self.match(u'<')
+            # C.g:98:5: ( '!=' )
+            # C.g:98:7: '!='
+            self.match("!=")
+
 
 
 
@@ -1795,9 +1817,9 @@ class CLexer(Lexer):
         try:
             self.type = T97
 
-            # C.g:79:5: ( '>' )
-            # C.g:79:7: '>'
-            self.match(u'>')
+            # C.g:99:5: ( '<' )
+            # C.g:99:7: '<'
+            self.match(u'<')
 
 
 
@@ -1817,10 +1839,9 @@ class CLexer(Lexer):
         try:
             self.type = T98
 
-            # C.g:80:5: ( '<=' )
-            # C.g:80:7: '<='
-            self.match("<=")
-
+            # C.g:100:5: ( '>' )
+            # C.g:100:7: '>'
+            self.match(u'>')
 
 
 
@@ -1840,9 +1861,9 @@ class CLexer(Lexer):
         try:
             self.type = T99
 
-            # C.g:81:5: ( '>=' )
-            # C.g:81:7: '>='
-            self.match(">=")
+            # C.g:101:5: ( '<=' )
+            # C.g:101:7: '<='
+            self.match("<=")
 
 
 
@@ -1863,9 +1884,9 @@ class CLexer(Lexer):
         try:
             self.type = T100
 
-            # C.g:82:6: ( '<<' )
-            # C.g:82:8: '<<'
-            self.match("<<")
+            # C.g:102:6: ( '>=' )
+            # C.g:102:8: '>='
+            self.match(">=")
 
 
 
@@ -1886,9 +1907,9 @@ class CLexer(Lexer):
         try:
             self.type = T101
 
-            # C.g:83:6: ( '>>' )
-            # C.g:83:8: '>>'
-            self.match(">>")
+            # C.g:103:6: ( '<<' )
+            # C.g:103:8: '<<'
+            self.match("<<")
 
 
 
@@ -1909,9 +1930,9 @@ class CLexer(Lexer):
         try:
             self.type = T102
 
-            # C.g:84:6: ( '__asm__' )
-            # C.g:84:8: '__asm__'
-            self.match("__asm__")
+            # C.g:104:6: ( '>>' )
+            # C.g:104:8: '>>'
+            self.match(">>")
 
 
 
@@ -1932,9 +1953,9 @@ class CLexer(Lexer):
         try:
             self.type = T103
 
-            # C.g:85:6: ( '_asm' )
-            # C.g:85:8: '_asm'
-            self.match("_asm")
+            # C.g:105:6: ( '__asm__' )
+            # C.g:105:8: '__asm__'
+            self.match("__asm__")
 
 
 
@@ -1955,9 +1976,9 @@ class CLexer(Lexer):
         try:
             self.type = T104
 
-            # C.g:86:6: ( '__asm' )
-            # C.g:86:8: '__asm'
-            self.match("__asm")
+            # C.g:106:6: ( '_asm' )
+            # C.g:106:8: '_asm'
+            self.match("_asm")
 
 
 
@@ -1978,9 +1999,9 @@ class CLexer(Lexer):
         try:
             self.type = T105
 
-            # C.g:87:6: ( 'case' )
-            # C.g:87:8: 'case'
-            self.match("case")
+            # C.g:107:6: ( '__asm' )
+            # C.g:107:8: '__asm'
+            self.match("__asm")
 
 
 
@@ -2001,9 +2022,9 @@ class CLexer(Lexer):
         try:
             self.type = T106
 
-            # C.g:88:6: ( 'default' )
-            # C.g:88:8: 'default'
-            self.match("default")
+            # C.g:108:6: ( 'case' )
+            # C.g:108:8: 'case'
+            self.match("case")
 
 
 
@@ -2024,9 +2045,9 @@ class CLexer(Lexer):
         try:
             self.type = T107
 
-            # C.g:89:6: ( 'if' )
-            # C.g:89:8: 'if'
-            self.match("if")
+            # C.g:109:6: ( 'default' )
+            # C.g:109:8: 'default'
+            self.match("default")
 
 
 
@@ -2047,9 +2068,9 @@ class CLexer(Lexer):
         try:
             self.type = T108
 
-            # C.g:90:6: ( 'else' )
-            # C.g:90:8: 'else'
-            self.match("else")
+            # C.g:110:6: ( 'if' )
+            # C.g:110:8: 'if'
+            self.match("if")
 
 
 
@@ -2070,9 +2091,9 @@ class CLexer(Lexer):
         try:
             self.type = T109
 
-            # C.g:91:6: ( 'switch' )
-            # C.g:91:8: 'switch'
-            self.match("switch")
+            # C.g:111:6: ( 'else' )
+            # C.g:111:8: 'else'
+            self.match("else")
 
 
 
@@ -2093,9 +2114,9 @@ class CLexer(Lexer):
         try:
             self.type = T110
 
-            # C.g:92:6: ( 'while' )
-            # C.g:92:8: 'while'
-            self.match("while")
+            # C.g:112:6: ( 'switch' )
+            # C.g:112:8: 'switch'
+            self.match("switch")
 
 
 
@@ -2116,9 +2137,9 @@ class CLexer(Lexer):
         try:
             self.type = T111
 
-            # C.g:93:6: ( 'do' )
-            # C.g:93:8: 'do'
-            self.match("do")
+            # C.g:113:6: ( 'while' )
+            # C.g:113:8: 'while'
+            self.match("while")
 
 
 
@@ -2139,9 +2160,9 @@ class CLexer(Lexer):
         try:
             self.type = T112
 
-            # C.g:94:6: ( 'for' )
-            # C.g:94:8: 'for'
-            self.match("for")
+            # C.g:114:6: ( 'do' )
+            # C.g:114:8: 'do'
+            self.match("do")
 
 
 
@@ -2162,9 +2183,9 @@ class CLexer(Lexer):
         try:
             self.type = T113
 
-            # C.g:95:6: ( 'goto' )
-            # C.g:95:8: 'goto'
-            self.match("goto")
+            # C.g:115:6: ( 'for' )
+            # C.g:115:8: 'for'
+            self.match("for")
 
 
 
@@ -2185,9 +2206,9 @@ class CLexer(Lexer):
         try:
             self.type = T114
 
-            # C.g:96:6: ( 'continue' )
-            # C.g:96:8: 'continue'
-            self.match("continue")
+            # C.g:116:6: ( 'goto' )
+            # C.g:116:8: 'goto'
+            self.match("goto")
 
 
 
@@ -2208,9 +2229,9 @@ class CLexer(Lexer):
         try:
             self.type = T115
 
-            # C.g:97:6: ( 'break' )
-            # C.g:97:8: 'break'
-            self.match("break")
+            # C.g:117:6: ( 'continue' )
+            # C.g:117:8: 'continue'
+            self.match("continue")
 
 
 
@@ -2231,9 +2252,9 @@ class CLexer(Lexer):
         try:
             self.type = T116
 
-            # C.g:98:6: ( 'return' )
-            # C.g:98:8: 'return'
-            self.match("return")
+            # C.g:118:6: ( 'break' )
+            # C.g:118:8: 'break'
+            self.match("break")
 
 
 
@@ -2248,17 +2269,40 @@ class CLexer(Lexer):
 
 
 
+    # $ANTLR start T117
+    def mT117(self, ):
+
+        try:
+            self.type = T117
+
+            # C.g:119:6: ( 'return' )
+            # C.g:119:8: 'return'
+            self.match("return")
+
+
+
+
+
+
+        finally:
+
+            pass
+
+    # $ANTLR end T117
+
+
+
     # $ANTLR start IDENTIFIER
     def mIDENTIFIER(self, ):
 
         try:
             self.type = IDENTIFIER
 
-            # C.g:533:2: ( LETTER ( LETTER | '0' .. '9' )* )
-            # C.g:533: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:533:11: ( LETTER | '0' .. '9' )*
+            # C.g:586:11: ( LETTER | '0' .. '9' )*
             while True: #loop1
                 alt1 = 2
                 LA1_0 = self.input.LA(1)
@@ -2300,7 +2344,7 @@ class CLexer(Lexer):
     def mLETTER(self, ):
 
         try:
-            # C.g:538: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();
@@ -2329,16 +2373,16 @@ class CLexer(Lexer):
         try:
             self.type = CHARACTER_LITERAL
 
-            # C.g:545:5: ( ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
-            # C.g:545:9: ( 'L' )? '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
-            # C.g:545: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:545:10: 'L'
+                # C.g:598:10: 'L'
                 self.match(u'L')
 
 
@@ -2346,7 +2390,7 @@ class CLexer(Lexer):
 
             self.match(u'\'')
 
-            # C.g:545:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
+            # C.g:598:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
             alt3 = 2
             LA3_0 = self.input.LA(1)
 
@@ -2355,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("545:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
+                nvae = NoViableAltException("598:21: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 3, 0, self.input)
 
                 raise nvae
 
             if alt3 == 1:
-                # C.g:545:23: EscapeSequence
+                # C.g:598:23: EscapeSequence
                 self.mEscapeSequence()
 
 
 
             elif alt3 == 2:
-                # C.g:545: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();
 
@@ -2399,16 +2443,16 @@ class CLexer(Lexer):
         try:
             self.type = STRING_LITERAL
 
-            # C.g:549:5: ( ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-            # C.g:549:8: ( 'L' )? '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
-            # C.g:549: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:549:9: 'L'
+                # C.g:602:9: 'L'
                 self.match(u'L')
 
 
@@ -2416,7 +2460,7 @@ class CLexer(Lexer):
 
             self.match(u'"')
 
-            # C.g:549:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+            # C.g:602:19: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
             while True: #loop5
                 alt5 = 3
                 LA5_0 = self.input.LA(1)
@@ -2428,13 +2472,13 @@ class CLexer(Lexer):
 
 
                 if alt5 == 1:
-                    # C.g:549:21: EscapeSequence
+                    # C.g:602:21: EscapeSequence
                     self.mEscapeSequence()
 
 
 
                 elif alt5 == 2:
-                    # C.g:549: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();
 
@@ -2470,8 +2514,8 @@ class CLexer(Lexer):
         try:
             self.type = HEX_LITERAL
 
-            # C.g:552:13: ( '0' ( 'x' | 'X' ) ( HexDigit )+ ( IntegerTypeSuffix )? )
-            # C.g:552: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':
@@ -2483,7 +2527,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:552:29: ( HexDigit )+
+            # C.g:605:29: ( HexDigit )+
             cnt6 = 0
             while True: #loop6
                 alt6 = 2
@@ -2494,7 +2538,7 @@ class CLexer(Lexer):
 
 
                 if alt6 == 1:
-                    # C.g:552:29: HexDigit
+                    # C.g:605:29: HexDigit
                     self.mHexDigit()
 
 
@@ -2509,14 +2553,14 @@ class CLexer(Lexer):
                 cnt6 += 1
 
 
-            # C.g:552: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:552:39: IntegerTypeSuffix
+                # C.g:605:39: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2540,9 +2584,9 @@ class CLexer(Lexer):
         try:
             self.type = DECIMAL_LITERAL
 
-            # C.g:554:17: ( ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )? )
-            # C.g:554:19: ( '0' | '1' .. '9' ( '0' .. '9' )* ) ( IntegerTypeSuffix )?
-            # C.g:554: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)
 
@@ -2551,21 +2595,21 @@ class CLexer(Lexer):
             elif ((u'1' <= LA9_0 <= u'9')) :
                 alt9 = 2
             else:
-                nvae = NoViableAltException("554: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:554:20: '0'
+                # C.g:607:20: '0'
                 self.match(u'0')
 
 
 
             elif alt9 == 2:
-                # C.g:554:26: '1' .. '9' ( '0' .. '9' )*
+                # C.g:607:26: '1' .. '9' ( '0' .. '9' )*
                 self.matchRange(u'1', u'9')
 
-                # C.g:554:35: ( '0' .. '9' )*
+                # C.g:607:35: ( '0' .. '9' )*
                 while True: #loop8
                     alt8 = 2
                     LA8_0 = self.input.LA(1)
@@ -2575,7 +2619,7 @@ class CLexer(Lexer):
 
 
                     if alt8 == 1:
-                        # C.g:554:35: '0' .. '9'
+                        # C.g:607:35: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2587,14 +2631,14 @@ class CLexer(Lexer):
 
 
 
-            # C.g:554: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:554:46: IntegerTypeSuffix
+                # C.g:607:46: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2618,11 +2662,11 @@ class CLexer(Lexer):
         try:
             self.type = OCTAL_LITERAL
 
-            # C.g:556:15: ( '0' ( '0' .. '7' )+ ( IntegerTypeSuffix )? )
-            # C.g:556: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:556:21: ( '0' .. '7' )+
+            # C.g:609:21: ( '0' .. '7' )+
             cnt11 = 0
             while True: #loop11
                 alt11 = 2
@@ -2633,7 +2677,7 @@ class CLexer(Lexer):
 
 
                 if alt11 == 1:
-                    # C.g:556:22: '0' .. '7'
+                    # C.g:609:22: '0' .. '7'
                     self.matchRange(u'0', u'7')
 
 
@@ -2648,14 +2692,14 @@ class CLexer(Lexer):
                 cnt11 += 1
 
 
-            # C.g:556: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:556:33: IntegerTypeSuffix
+                # C.g:609:33: IntegerTypeSuffix
                 self.mIntegerTypeSuffix()
 
 
@@ -2677,8 +2721,8 @@ class CLexer(Lexer):
     def mHexDigit(self, ):
 
         try:
-            # C.g:559:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            # C.g:559: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();
 
@@ -2704,7 +2748,7 @@ class CLexer(Lexer):
     def mIntegerTypeSuffix(self, ):
 
         try:
-            # C.g:563: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)
 
@@ -2723,12 +2767,12 @@ class CLexer(Lexer):
             elif (LA13_0 == u'L' or LA13_0 == u'l') :
                 alt13 = 2
             else:
-                nvae = NoViableAltException("561: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:563: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();
 
@@ -2741,7 +2785,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 2:
-                # C.g:564: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();
 
@@ -2754,7 +2798,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 3:
-                # C.g:565: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();
 
@@ -2776,7 +2820,7 @@ class CLexer(Lexer):
 
 
             elif alt13 == 4:
-                # C.g:566: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();
 
@@ -2821,12 +2865,12 @@ class CLexer(Lexer):
         try:
             self.type = FLOATING_POINT_LITERAL
 
-            # C.g:570: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:570:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
-                # C.g:570: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
@@ -2837,7 +2881,7 @@ class CLexer(Lexer):
 
 
                     if alt14 == 1:
-                        # C.g:570:10: '0' .. '9'
+                        # C.g:623:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2854,7 +2898,7 @@ class CLexer(Lexer):
 
                 self.match(u'.')
 
-                # C.g:570:25: ( '0' .. '9' )*
+                # C.g:623:25: ( '0' .. '9' )*
                 while True: #loop15
                     alt15 = 2
                     LA15_0 = self.input.LA(1)
@@ -2864,7 +2908,7 @@ class CLexer(Lexer):
 
 
                     if alt15 == 1:
-                        # C.g:570:26: '0' .. '9'
+                        # C.g:623:26: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2873,27 +2917,27 @@ class CLexer(Lexer):
                         break #loop15
 
 
-                # C.g:570: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:570:37: Exponent
+                    # C.g:623:37: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:570: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:570:47: FloatTypeSuffix
+                    # C.g:623:47: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2902,10 +2946,10 @@ class CLexer(Lexer):
 
 
             elif alt25 == 2:
-                # C.g:571:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
+                # C.g:624:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
                 self.match(u'.')
 
-                # C.g:571:13: ( '0' .. '9' )+
+                # C.g:624:13: ( '0' .. '9' )+
                 cnt18 = 0
                 while True: #loop18
                     alt18 = 2
@@ -2916,7 +2960,7 @@ class CLexer(Lexer):
 
 
                     if alt18 == 1:
-                        # C.g:571:14: '0' .. '9'
+                        # C.g:624:14: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2931,27 +2975,27 @@ class CLexer(Lexer):
                     cnt18 += 1
 
 
-                # C.g:571: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:571:25: Exponent
+                    # C.g:624:25: Exponent
                     self.mExponent()
 
 
 
 
-                # C.g:571: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:571:35: FloatTypeSuffix
+                    # C.g:624:35: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -2960,8 +3004,8 @@ class CLexer(Lexer):
 
 
             elif alt25 == 3:
-                # C.g:572:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
-                # C.g:572:9: ( '0' .. '9' )+
+                # C.g:625:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
+                # C.g:625:9: ( '0' .. '9' )+
                 cnt21 = 0
                 while True: #loop21
                     alt21 = 2
@@ -2972,7 +3016,7 @@ class CLexer(Lexer):
 
 
                     if alt21 == 1:
-                        # C.g:572:10: '0' .. '9'
+                        # C.g:625:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -2989,14 +3033,14 @@ class CLexer(Lexer):
 
                 self.mExponent()
 
-                # C.g:572: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:572:30: FloatTypeSuffix
+                    # C.g:625:30: FloatTypeSuffix
                     self.mFloatTypeSuffix()
 
 
@@ -3005,8 +3049,8 @@ class CLexer(Lexer):
 
 
             elif alt25 == 4:
-                # C.g:573:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
-                # C.g:573:9: ( '0' .. '9' )+
+                # C.g:626:9: ( '0' .. '9' )+ ( Exponent )? FloatTypeSuffix
+                # C.g:626:9: ( '0' .. '9' )+
                 cnt23 = 0
                 while True: #loop23
                     alt23 = 2
@@ -3017,7 +3061,7 @@ class CLexer(Lexer):
 
 
                     if alt23 == 1:
-                        # C.g:573:10: '0' .. '9'
+                        # C.g:626:10: '0' .. '9'
                         self.matchRange(u'0', u'9')
 
 
@@ -3032,14 +3076,14 @@ class CLexer(Lexer):
                     cnt23 += 1
 
 
-                # C.g:573: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:573:21: Exponent
+                    # C.g:626:21: Exponent
                     self.mExponent()
 
 
@@ -3062,8 +3106,8 @@ class CLexer(Lexer):
     def mExponent(self, ):
 
         try:
-            # C.g:577:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
-            # C.g:577: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();
 
@@ -3073,7 +3117,7 @@ class CLexer(Lexer):
                 raise mse
 
 
-            # C.g:577:22: ( '+' | '-' )?
+            # C.g:630:22: ( '+' | '-' )?
             alt26 = 2
             LA26_0 = self.input.LA(1)
 
@@ -3093,7 +3137,7 @@ class CLexer(Lexer):
 
 
 
-            # C.g:577:33: ( '0' .. '9' )+
+            # C.g:630:33: ( '0' .. '9' )+
             cnt27 = 0
             while True: #loop27
                 alt27 = 2
@@ -3104,7 +3148,7 @@ class CLexer(Lexer):
 
 
                 if alt27 == 1:
-                    # C.g:577:34: '0' .. '9'
+                    # C.g:630:34: '0' .. '9'
                     self.matchRange(u'0', u'9')
 
 
@@ -3135,8 +3179,8 @@ class CLexer(Lexer):
     def mFloatTypeSuffix(self, ):
 
         try:
-            # C.g:580:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
-            # C.g:580: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();
 
@@ -3162,7 +3206,7 @@ class CLexer(Lexer):
     def mEscapeSequence(self, ):
 
         try:
-            # C.g:584: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)
 
@@ -3174,17 +3218,17 @@ class CLexer(Lexer):
                 elif ((u'0' <= LA28_1 <= u'7')) :
                     alt28 = 2
                 else:
-                    nvae = NoViableAltException("582: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("582: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:584: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':
@@ -3199,7 +3243,7 @@ class CLexer(Lexer):
 
 
             elif alt28 == 2:
-                # C.g:585:9: OctalEscape
+                # C.g:638:9: OctalEscape
                 self.mOctalEscape()
 
 
@@ -3217,7 +3261,7 @@ class CLexer(Lexer):
     def mOctalEscape(self, ):
 
         try:
-            # C.g:590: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)
 
@@ -3244,35 +3288,35 @@ class CLexer(Lexer):
                     else:
                         alt29 = 3
                 else:
-                    nvae = NoViableAltException("588: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("588: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:590:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:643:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:590:14: ( '0' .. '3' )
-                # C.g:590:15: '0' .. '3'
+                # C.g:643:14: ( '0' .. '3' )
+                # C.g:643:15: '0' .. '3'
                 self.matchRange(u'0', u'3')
 
 
 
 
-                # C.g:590:25: ( '0' .. '7' )
-                # C.g:590:26: '0' .. '7'
+                # C.g:643:25: ( '0' .. '7' )
+                # C.g:643:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:590:36: ( '0' .. '7' )
-                # C.g:590:37: '0' .. '7'
+                # C.g:643:36: ( '0' .. '7' )
+                # C.g:643:37: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3281,18 +3325,18 @@ class CLexer(Lexer):
 
 
             elif alt29 == 2:
-                # C.g:591:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                # C.g:644:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:591:14: ( '0' .. '7' )
-                # C.g:591:15: '0' .. '7'
+                # C.g:644:14: ( '0' .. '7' )
+                # C.g:644:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
 
 
-                # C.g:591:25: ( '0' .. '7' )
-                # C.g:591:26: '0' .. '7'
+                # C.g:644:25: ( '0' .. '7' )
+                # C.g:644:26: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3301,11 +3345,11 @@ class CLexer(Lexer):
 
 
             elif alt29 == 3:
-                # C.g:592:9: '\\\\' ( '0' .. '7' )
+                # C.g:645:9: '\\\\' ( '0' .. '7' )
                 self.match(u'\\')
 
-                # C.g:592:14: ( '0' .. '7' )
-                # C.g:592:15: '0' .. '7'
+                # C.g:645:14: ( '0' .. '7' )
+                # C.g:645:15: '0' .. '7'
                 self.matchRange(u'0', u'7')
 
 
@@ -3326,8 +3370,8 @@ class CLexer(Lexer):
     def mUnicodeEscape(self, ):
 
         try:
-            # C.g:597:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            # C.g:597: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')
@@ -3358,8 +3402,8 @@ class CLexer(Lexer):
         try:
             self.type = WS
 
-            # C.g:600:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
-            # C.g:600: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();
 
@@ -3390,10 +3434,10 @@ class CLexer(Lexer):
         try:
             self.type = BS
 
-            # C.g:604:5: ( ( '\\\\' ) )
-            # C.g:604:7: ( '\\\\' )
-            # C.g:604:7: ( '\\\\' )
-            # C.g:604:8: '\\\\'
+            # C.g:657:5: ( ( '\\\\' ) )
+            # C.g:657:7: ( '\\\\' )
+            # C.g:657:7: ( '\\\\' )
+            # C.g:657:8: '\\\\'
             self.match(u'\\')
 
 
@@ -3420,8 +3464,8 @@ class CLexer(Lexer):
         try:
             self.type = UnicodeVocabulary
 
-            # C.g:612:5: ( '\\u0003' .. '\\uFFFE' )
-            # C.g:612:7: '\\u0003' .. '\\uFFFE'
+            # C.g:665:5: ( '\\u0003' .. '\\uFFFE' )
+            # C.g:665:7: '\\u0003' .. '\\uFFFE'
             self.matchRange(u'\u0003', u'\uFFFE')
 
 
@@ -3442,12 +3486,12 @@ class CLexer(Lexer):
         try:
             self.type = COMMENT
 
-            # C.g:615:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            # C.g:615:9: '/*' ( options {greedy=false; } : . )* '*/'
+            # C.g:668:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            # C.g:668:9: '/*' ( options {greedy=false; } : . )* '*/'
             self.match("/*")
 
 
-            # C.g:615:14: ( options {greedy=false; } : . )*
+            # C.g:668:14: ( options {greedy=false; } : . )*
             while True: #loop30
                 alt30 = 2
                 LA30_0 = self.input.LA(1)
@@ -3466,7 +3510,7 @@ class CLexer(Lexer):
 
 
                 if alt30 == 1:
-                    # C.g:615:42: .
+                    # C.g:668:42: .
                     self.matchAny()
 
 
@@ -3499,12 +3543,12 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMENT
 
-            # C.g:620:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:620: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:620:12: (~ ( '\\n' | '\\r' ) )*
+            # C.g:673:12: (~ ( '\\n' | '\\r' ) )*
             while True: #loop31
                 alt31 = 2
                 LA31_0 = self.input.LA(1)
@@ -3514,7 +3558,7 @@ class CLexer(Lexer):
 
 
                 if alt31 == 1:
-                    # C.g:620: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();
 
@@ -3530,14 +3574,14 @@ class CLexer(Lexer):
                     break #loop31
 
 
-            # C.g:620: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:620:26: '\\r'
+                # C.g:673:26: '\\r'
                 self.match(u'\r')
 
 
@@ -3566,11 +3610,11 @@ class CLexer(Lexer):
         try:
             self.type = LINE_COMMAND
 
-            # C.g:625:5: ( '#' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
-            # C.g:625: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:625:11: (~ ( '\\n' | '\\r' ) )*
+            # C.g:678:11: (~ ( '\\n' | '\\r' ) )*
             while True: #loop33
                 alt33 = 2
                 LA33_0 = self.input.LA(1)
@@ -3580,7 +3624,7 @@ class CLexer(Lexer):
 
 
                 if alt33 == 1:
-                    # C.g:625: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();
 
@@ -3596,14 +3640,14 @@ class CLexer(Lexer):
                     break #loop33
 
 
-            # C.g:625: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:625:25: '\\r'
+                # C.g:678:25: '\\r'
                 self.match(u'\r')
 
 
@@ -3627,8 +3671,8 @@ class CLexer(Lexer):
 
 
     def mTokens(self):
-        # C.g:1:8: ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | T114 | T115 | T116 | IDENTIFIER | CHARACTER_LITERAL | STRING_LITERAL | HEX_LITERAL | DECIMAL_LITERAL | OCTAL_LITERAL | FLOATING_POINT_LITERAL | WS | BS | UnicodeVocabulary | COMMENT | LINE_COMMENT | LINE_COMMAND )
-        alt35 = 105
+        # C.g:1:8: ( T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | T71 | T72 | T73 | T74 | T75 | T76 | T77 | T78 | T79 | T80 | T81 | T82 | T83 | T84 | T85 | T86 | T87 | T88 | T89 | T90 | T91 | T92 | T93 | T94 | T95 | T96 | T97 | T98 | T99 | T100 | T101 | T102 | T103 | T104 | T105 | T106 | T107 | T108 | T109 | T110 | T111 | T112 | T113 | T114 | T115 | T116 | T117 | IDENTIFIER | CHARACTER_LITERAL | STRING_LITERAL | HEX_LITERAL | DECIMAL_LITERAL | OCTAL_LITERAL | FLOATING_POINT_LITERAL | WS | BS | UnicodeVocabulary | COMMENT | LINE_COMMENT | LINE_COMMAND )
+        alt35 = 106
         alt35 = self.dfa35.predict(self.input)
         if alt35 == 1:
             # C.g:1:10: T25
@@ -4183,79 +4227,85 @@ class CLexer(Lexer):
 
 
         elif alt35 == 93:
-            # C.g:1:395: IDENTIFIER
-            self.mIDENTIFIER()
+            # C.g:1:395: T117
+            self.mT117()
 
 
 
         elif alt35 == 94:
-            # C.g:1:406: CHARACTER_LITERAL
-            self.mCHARACTER_LITERAL()
+            # C.g:1:400: IDENTIFIER
+            self.mIDENTIFIER()
 
 
 
         elif alt35 == 95:
-            # C.g:1:424: STRING_LITERAL
-            self.mSTRING_LITERAL()
+            # C.g:1:411: CHARACTER_LITERAL
+            self.mCHARACTER_LITERAL()
 
 
 
         elif alt35 == 96:
-            # C.g:1:439: HEX_LITERAL
-            self.mHEX_LITERAL()
+            # C.g:1:429: STRING_LITERAL
+            self.mSTRING_LITERAL()
 
 
 
         elif alt35 == 97:
-            # C.g:1:451: DECIMAL_LITERAL
-            self.mDECIMAL_LITERAL()
+            # C.g:1:444: HEX_LITERAL
+            self.mHEX_LITERAL()
 
 
 
         elif alt35 == 98:
-            # C.g:1:467: OCTAL_LITERAL
-            self.mOCTAL_LITERAL()
+            # C.g:1:456: DECIMAL_LITERAL
+            self.mDECIMAL_LITERAL()
 
 
 
         elif alt35 == 99:
-            # C.g:1:481: FLOATING_POINT_LITERAL
-            self.mFLOATING_POINT_LITERAL()
+            # C.g:1:472: OCTAL_LITERAL
+            self.mOCTAL_LITERAL()
 
 
 
         elif alt35 == 100:
-            # C.g:1:504: WS
-            self.mWS()
+            # C.g:1:486: FLOATING_POINT_LITERAL
+            self.mFLOATING_POINT_LITERAL()
 
 
 
         elif alt35 == 101:
-            # C.g:1:507: BS
-            self.mBS()
+            # C.g:1:509: WS
+            self.mWS()
 
 
 
         elif alt35 == 102:
-            # C.g:1:510: UnicodeVocabulary
-            self.mUnicodeVocabulary()
+            # C.g:1:512: BS
+            self.mBS()
 
 
 
         elif alt35 == 103:
-            # C.g:1:528: COMMENT
-            self.mCOMMENT()
+            # C.g:1:515: UnicodeVocabulary
+            self.mUnicodeVocabulary()
 
 
 
         elif alt35 == 104:
-            # C.g:1:536: LINE_COMMENT
-            self.mLINE_COMMENT()
+            # C.g:1:533: COMMENT
+            self.mCOMMENT()
 
 
 
         elif alt35 == 105:
-            # C.g:1:549: LINE_COMMAND
+            # C.g:1:541: LINE_COMMENT
+            self.mLINE_COMMENT()
+
+
+
+        elif alt35 == 106:
+            # C.g:1:554: LINE_COMMAND
             self.mLINE_COMMAND()
 
 
@@ -4276,15 +4326,15 @@ class CLexer(Lexer):
         )
 
     DFA25_min = DFA.unpack(
-        u"\2\56\1\uffff\1\53\2\uffff\2\60\2\uffff"
+        u"\2\56\2\uffff\1\53\1\uffff\2\60\2\uffff"
         )
 
     DFA25_max = DFA.unpack(
-        u"\1\71\1\146\1\uffff\1\71\2\uffff\1\71\1\146\2\uffff"
+        u"\1\71\1\146\2\uffff\1\71\1\uffff\1\71\1\146\2\uffff"
         )
 
     DFA25_accept = DFA.unpack(
-        u"\2\uffff\1\2\1\uffff\1\4\1\1\2\uffff\2\3"
+        u"\2\uffff\1\2\1\1\1\uffff\1\4\2\uffff\2\3"
         )
 
     DFA25_special = DFA.unpack(
@@ -4294,11 +4344,11 @@ class CLexer(Lexer):
             
     DFA25_transition = [
         DFA.unpack(u"\1\2\1\uffff\12\1"),
-        DFA.unpack(u"\1\5\1\uffff\12\1\12\uffff\1\4\1\3\1\4\35\uffff\1\4"
-        u"\1\3\1\4"),
+        DFA.unpack(u"\1\3\1\uffff\12\1\12\uffff\1\5\1\4\1\5\35\uffff\1\5"
+        u"\1\4\1\5"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\6\1\uffff\1\6\2\uffff\12\7"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\6\1\uffff\1\6\2\uffff\12\7"),
         DFA.unpack(u""),
         DFA.unpack(u"\12\7"),
         DFA.unpack(u"\12\7\12\uffff\1\11\1\uffff\1\11\35\uffff\1\11\1\uffff"
@@ -4313,230 +4363,234 @@ class CLexer(Lexer):
     # lookup tables for DFA #35
 
     DFA35_eot = DFA.unpack(
-        u"\2\uffff\1\75\1\uffff\1\100\14\75\3\uffff\7\75\4\uffff\1\147\1"
-        u"\151\1\155\1\161\1\165\1\167\1\172\1\uffff\1\175\1\u0080\1\u0083"
-        u"\1\u0085\1\u0088\1\uffff\5\75\1\uffff\2\72\2\u0092\2\uffff\1\72"
-        u"\2\uffff\1\75\4\uffff\16\75\1\u00ab\4\75\1\u00b1\2\75\3\uffff\1"
-        u"\u00b5\7\75\35\uffff\1\u00be\1\uffff\1\u00c0\10\uffff\5\75\4\uffff"
-        u"\1\u00c6\1\u0092\3\uffff\23\75\1\uffff\1\u00db\1\75\1\u00dd\2\75"
-        u"\1\uffff\3\75\1\uffff\1\u00e3\6\75\4\uffff\5\75\1\uffff\1\75\1"
-        u"\u00f1\1\u00f2\7\75\1\u00fa\3\75\1\u00fe\3\75\1\u0102\1\u0103\1"
-        u"\uffff\1\u0104\1\uffff\5\75\1\uffff\10\75\1\u0113\1\75\1\u0115"
-        u"\2\75\2\uffff\6\75\1\u011e\1\uffff\3\75\1\uffff\2\75\1\u0124\3"
-        u"\uffff\1\u0125\3\75\1\u0129\1\75\1\u012b\6\75\1\u0133\1\uffff\1"
-        u"\u0134\1\uffff\1\u0135\1\75\1\u0137\1\u0138\1\u0139\1\u013a\1\u013b"
-        u"\1\u013c\1\uffff\1\75\1\u013e\1\u013f\2\75\2\uffff\1\u0142\2\75"
-        u"\1\uffff\1\75\1\uffff\5\75\1\u014b\1\75\3\uffff\1\u014d\6\uffff"
-        u"\1\75\2\uffff\2\75\1\uffff\1\u0151\7\75\1\uffff\1\u0159\1\uffff"
-        u"\1\u015a\1\u015b\1\u015c\1\uffff\1\u015d\1\u015e\1\75\1\u0160\3"
-        u"\75\6\uffff\1\u0164\1\uffff\3\75\1\uffff\20\75\1\u0178\2\75\1\uffff"
-        u"\4\75\1\u017f\1\75\1\uffff\11\75\1\u018a\1\uffff"
+        u"\2\uffff\1\76\1\uffff\1\101\14\76\3\uffff\10\76\4\uffff\1\151\1"
+        u"\153\1\157\1\163\1\167\1\171\1\174\1\uffff\1\177\1\u0082\1\u0085"
+        u"\1\u0087\1\u008a\1\uffff\5\76\1\uffff\2\73\2\u0095\2\uffff\1\73"
+        u"\2\uffff\1\76\4\uffff\16\76\1\u00ad\5\76\1\u00b4\1\76\3\uffff\1"
+        u"\u00b7\10\76\34\uffff\1\u00c1\2\uffff\1\u00c3\10\uffff\5\76\3\uffff"
+        u"\1\u00c9\1\uffff\1\u0095\3\uffff\23\76\1\uffff\1\u00de\1\76\1\u00e0"
+        u"\3\76\1\uffff\2\76\1\uffff\1\76\1\u00e7\6\76\4\uffff\5\76\1\uffff"
+        u"\1\76\1\u00f5\1\76\1\u00f7\6\76\1\u00fe\4\76\1\u0103\1\u0104\2"
+        u"\76\1\u0107\1\uffff\1\u0108\1\uffff\6\76\1\uffff\10\76\1\u0118"
+        u"\1\76\1\u011a\2\76\1\uffff\1\76\1\uffff\5\76\1\u0123\1\uffff\4"
+        u"\76\2\uffff\1\76\1\u0129\2\uffff\1\u012a\3\76\1\u012e\1\76\1\u0130"
+        u"\7\76\1\u0139\1\uffff\1\u013a\1\uffff\1\u013b\1\76\1\u013d\1\u013e"
+        u"\1\u013f\1\u0140\1\u0141\1\u0142\1\uffff\1\76\1\u0144\1\u0145\2"
+        u"\76\2\uffff\1\76\1\u0149\1\76\1\uffff\1\76\1\uffff\5\76\1\u0151"
+        u"\1\u0152\1\76\3\uffff\1\u0154\6\uffff\1\76\2\uffff\2\76\1\u0158"
+        u"\1\uffff\7\76\2\uffff\1\u0160\1\uffff\1\u0161\1\u0162\1\u0163\1"
+        u"\uffff\1\u0164\1\u0165\1\76\1\u0167\3\76\6\uffff\1\u016b\1\uffff"
+        u"\3\76\1\uffff\21\76\1\u0180\2\76\1\uffff\3\76\1\u0186\1\76\1\uffff"
+        u"\11\76\1\u0191\1\uffff"
         )
 
     DFA35_eof = DFA.unpack(
-        u"\u018b\uffff"
+        u"\u0192\uffff"
         )
 
     DFA35_min = DFA.unpack(
         u"\1\3\1\uffff\1\171\1\uffff\1\75\1\154\1\150\1\165\1\145\1\124\1"
         u"\157\1\141\1\146\1\157\1\154\1\145\1\156\3\uffff\1\116\1\120\1"
-        u"\117\1\116\1\117\1\114\1\106\4\uffff\1\75\1\56\1\53\1\55\1\52\1"
-        u"\75\1\46\1\uffff\1\75\1\74\3\75\1\uffff\1\137\1\150\1\157\1\162"
-        u"\1\42\1\uffff\2\0\2\56\2\uffff\1\0\2\uffff\1\160\4\uffff\1\165"
-        u"\1\163\1\164\1\141\1\151\1\147\1\157\1\164\1\147\1\101\1\151\1"
-        u"\156\1\163\1\141\1\44\1\164\1\156\1\162\1\157\1\44\1\146\1\151"
-        u"\3\uffff\1\44\2\124\1\116\1\101\1\114\1\117\1\111\35\uffff\1\75"
-        u"\1\uffff\1\75\10\uffff\1\141\1\163\1\151\1\164\1\145\4\uffff\2"
-        u"\56\3\uffff\1\145\1\155\2\145\1\165\2\164\1\156\1\145\1\162\1\157"
-        u"\1\151\1\165\1\124\1\144\1\141\1\163\1\145\1\162\1\uffff\1\44\1"
-        u"\147\1\44\1\141\1\142\1\uffff\1\141\1\151\1\157\1\uffff\1\44\1"
-        u"\111\1\123\1\114\1\101\1\102\1\101\4\uffff\1\163\1\155\1\154\1"
-        u"\157\1\141\1\uffff\1\144\2\44\1\162\1\143\1\151\1\143\1\145\1\157"
-        u"\1\164\1\44\1\163\1\162\1\111\1\44\1\164\1\151\1\164\2\44\1\uffff"
-        u"\1\44\1\uffff\1\164\1\154\1\165\1\147\1\156\1\uffff\1\117\1\124"
-        u"\1\111\1\124\1\101\1\102\1\120\1\155\1\44\1\145\1\44\1\153\1\145"
-        u"\2\uffff\1\156\1\164\1\143\1\150\1\144\1\146\1\44\1\uffff\1\164"
-        u"\1\156\1\103\1\uffff\1\151\1\156\1\44\3\uffff\1\44\1\145\1\154"
-        u"\1\156\1\44\1\116\1\44\1\107\1\111\1\114\1\117\1\125\1\111\1\44"
-        u"\1\uffff\1\44\1\uffff\1\44\1\146\6\44\1\uffff\1\145\2\44\1\154"
-        u"\1\165\2\uffff\1\44\1\164\1\145\1\uffff\1\101\1\uffff\1\116\1\114"
-        u"\1\137\1\117\1\116\1\44\1\137\3\uffff\1\44\6\uffff\1\162\2\uffff"
-        u"\2\145\1\uffff\1\44\1\144\1\114\2\105\1\122\2\124\1\uffff\1\44"
-        u"\1\uffff\3\44\1\uffff\2\44\1\104\1\44\1\105\1\123\1\111\6\uffff"
-        u"\1\44\1\uffff\1\115\1\105\1\115\1\uffff\1\117\1\122\1\105\2\126"
-        u"\1\123\1\105\1\111\1\105\1\137\1\103\1\122\1\111\1\105\1\126\1"
-        u"\106\1\44\1\111\1\137\1\uffff\1\103\1\125\1\105\1\116\1\44\1\122"
-        u"\1\uffff\1\105\1\106\1\105\1\122\1\105\1\116\1\103\1\105\1\104"
-        u"\1\44\1\uffff"
+        u"\117\1\116\1\117\1\114\1\106\1\101\4\uffff\1\75\1\56\1\53\1\55"
+        u"\1\52\1\75\1\46\1\uffff\1\75\1\74\3\75\1\uffff\1\137\1\150\1\157"
+        u"\1\162\1\42\1\uffff\2\0\2\56\2\uffff\1\0\2\uffff\1\160\4\uffff"
+        u"\1\163\1\164\1\165\1\151\1\141\1\147\1\157\1\164\1\147\1\101\1"
+        u"\151\1\163\1\156\1\141\1\44\1\164\1\156\1\162\1\157\1\146\1\44"
+        u"\1\151\3\uffff\1\44\2\124\1\116\1\101\1\114\1\117\1\111\1\103\34"
+        u"\uffff\1\75\2\uffff\1\75\10\uffff\1\141\1\163\1\151\1\164\1\145"
+        u"\3\uffff\1\56\1\uffff\1\56\3\uffff\3\145\1\155\2\164\1\165\1\145"
+        u"\1\156\1\162\1\157\1\151\1\165\1\124\1\141\1\144\1\145\1\163\1"
+        u"\162\1\uffff\1\44\1\147\1\44\2\141\1\142\1\uffff\1\151\1\157\1"
+        u"\uffff\1\111\1\44\1\123\1\114\1\101\1\102\1\101\1\113\4\uffff\1"
+        u"\163\1\155\1\154\1\157\1\141\1\uffff\1\144\1\44\1\162\1\44\1\143"
+        u"\1\151\1\143\1\157\1\145\1\164\1\44\1\163\1\162\1\111\1\164\2\44"
+        u"\1\151\1\164\1\44\1\uffff\1\44\1\uffff\1\164\1\165\1\154\1\147"
+        u"\1\156\1\117\1\uffff\1\124\1\111\1\124\1\101\1\102\1\120\1\105"
+        u"\1\155\1\44\1\145\1\44\1\153\1\145\1\uffff\1\156\1\uffff\1\150"
+        u"\1\143\1\164\1\146\1\144\1\44\1\uffff\1\164\1\156\1\103\1\151\2"
+        u"\uffff\1\156\1\44\2\uffff\1\44\1\154\1\145\1\156\1\44\1\116\1\44"
+        u"\1\107\1\111\1\114\1\125\1\117\1\111\1\104\1\44\1\uffff\1\44\1"
+        u"\uffff\1\44\1\146\6\44\1\uffff\1\145\2\44\1\154\1\165\2\uffff\1"
+        u"\164\1\44\1\145\1\uffff\1\101\1\uffff\1\116\1\114\1\137\1\116\1"
+        u"\117\2\44\1\137\3\uffff\1\44\6\uffff\1\162\2\uffff\2\145\1\44\1"
+        u"\uffff\1\144\1\114\2\105\1\122\2\124\2\uffff\1\44\1\uffff\3\44"
+        u"\1\uffff\2\44\1\104\1\44\1\105\1\111\1\123\6\uffff\1\44\1\uffff"
+        u"\2\115\1\105\1\uffff\1\117\1\105\1\122\1\126\1\123\1\126\2\105"
+        u"\1\111\1\137\1\122\1\103\1\111\1\126\1\105\1\106\1\111\1\44\1\137"
+        u"\1\103\1\uffff\1\125\1\105\1\116\1\44\1\122\1\uffff\1\105\1\106"
+        u"\1\105\1\122\1\105\1\116\1\103\1\105\1\104\1\44\1\uffff"
         )
 
     DFA35_max = DFA.unpack(
         u"\1\ufffe\1\uffff\1\171\1\uffff\1\75\1\170\1\167\1\165\1\145\1\124"
         u"\2\157\1\156\3\157\1\156\3\uffff\1\116\1\125\1\117\1\116\1\117"
-        u"\1\114\1\106\4\uffff\1\75\1\71\1\75\1\76\3\75\1\uffff\2\75\1\76"
-        u"\1\75\1\174\1\uffff\1\141\1\150\1\157\1\162\1\47\1\uffff\2\ufffe"
-        u"\1\170\1\146\2\uffff\1\ufffe\2\uffff\1\160\4\uffff\1\165\1\163"
-        u"\1\164\1\162\1\151\1\172\1\157\2\164\1\101\1\154\1\156\1\163\1"
-        u"\141\1\172\1\164\1\156\1\162\1\157\1\172\1\146\1\163\3\uffff\1"
-        u"\172\2\124\1\116\1\101\1\114\1\117\1\111\35\uffff\1\75\1\uffff"
-        u"\1\75\10\uffff\1\141\1\163\1\151\1\164\1\145\4\uffff\2\146\3\uffff"
-        u"\1\145\1\155\2\145\1\165\2\164\1\156\1\145\1\162\1\157\1\151\1"
-        u"\165\1\124\1\144\1\141\1\164\1\145\1\162\1\uffff\1\172\1\147\1"
-        u"\172\1\141\1\142\1\uffff\1\141\1\151\1\157\1\uffff\1\172\1\111"
-        u"\1\123\1\114\1\101\1\102\1\137\4\uffff\1\163\1\155\1\154\1\157"
-        u"\1\141\1\uffff\1\144\2\172\1\162\1\143\1\151\1\143\1\145\1\157"
-        u"\1\164\1\172\1\163\1\162\1\111\1\172\1\164\1\151\1\164\2\172\1"
-        u"\uffff\1\172\1\uffff\1\164\1\154\1\165\1\147\1\156\1\uffff\1\117"
-        u"\1\124\1\111\1\124\1\101\1\122\1\120\1\155\1\172\1\145\1\172\1"
-        u"\153\1\145\2\uffff\1\156\1\164\1\143\1\150\1\144\1\146\1\172\1"
-        u"\uffff\1\164\1\156\1\103\1\uffff\1\151\1\156\1\172\3\uffff\1\172"
-        u"\1\145\1\154\1\156\1\172\1\116\1\172\1\107\1\111\1\114\1\117\1"
-        u"\125\1\111\1\172\1\uffff\1\172\1\uffff\1\172\1\146\6\172\1\uffff"
-        u"\1\145\2\172\1\154\1\165\2\uffff\1\172\1\164\1\145\1\uffff\1\101"
-        u"\1\uffff\1\116\1\114\1\137\1\117\1\116\1\172\1\137\3\uffff\1\172"
-        u"\6\uffff\1\162\2\uffff\2\145\1\uffff\1\172\1\144\1\114\2\105\1"
-        u"\122\2\124\1\uffff\1\172\1\uffff\3\172\1\uffff\2\172\1\104\1\172"
-        u"\1\105\1\123\1\111\6\uffff\1\172\1\uffff\1\115\1\105\1\115\1\uffff"
-        u"\1\117\1\122\1\105\2\126\1\123\1\105\1\111\1\105\1\137\1\103\1"
-        u"\122\1\111\1\105\1\126\1\106\1\172\1\111\1\137\1\uffff\1\103\1"
-        u"\125\1\105\1\116\1\172\1\122\1\uffff\1\105\1\106\1\105\1\122\1"
-        u"\105\1\116\1\103\1\105\1\104\1\172\1\uffff"
+        u"\1\114\1\106\1\101\4\uffff\1\75\1\71\1\75\1\76\3\75\1\uffff\2\75"
+        u"\1\76\1\75\1\174\1\uffff\1\141\1\150\1\157\1\162\1\47\1\uffff\2"
+        u"\ufffe\1\170\1\146\2\uffff\1\ufffe\2\uffff\1\160\4\uffff\1\163"
+        u"\1\164\1\165\1\151\1\162\1\172\1\157\2\164\1\101\1\154\1\163\1"
+        u"\156\1\141\1\172\1\164\1\156\1\162\1\157\1\146\1\172\1\163\3\uffff"
+        u"\1\172\2\124\1\116\1\101\1\114\1\117\1\111\1\103\34\uffff\1\75"
+        u"\2\uffff\1\75\10\uffff\1\141\1\163\1\151\1\164\1\145\3\uffff\1"
+        u"\146\1\uffff\1\146\3\uffff\3\145\1\155\2\164\1\165\1\145\1\156"
+        u"\1\162\1\157\1\151\1\165\1\124\1\141\1\144\1\145\1\164\1\162\1"
+        u"\uffff\1\172\1\147\1\172\2\141\1\142\1\uffff\1\151\1\157\1\uffff"
+        u"\1\111\1\172\1\123\1\114\1\101\1\102\1\137\1\113\4\uffff\1\163"
+        u"\1\155\1\154\1\157\1\141\1\uffff\1\144\1\172\1\162\1\172\1\143"
+        u"\1\151\1\143\1\157\1\145\1\164\1\172\1\163\1\162\1\111\1\164\2"
+        u"\172\1\151\1\164\1\172\1\uffff\1\172\1\uffff\1\164\1\165\1\154"
+        u"\1\147\1\156\1\117\1\uffff\1\124\1\111\1\124\1\101\1\122\1\120"
+        u"\1\105\1\155\1\172\1\145\1\172\1\153\1\145\1\uffff\1\156\1\uffff"
+        u"\1\150\1\143\1\164\1\146\1\144\1\172\1\uffff\1\164\1\156\1\103"
+        u"\1\151\2\uffff\1\156\1\172\2\uffff\1\172\1\154\1\145\1\156\1\172"
+        u"\1\116\1\172\1\107\1\111\1\114\1\125\1\117\1\111\1\104\1\172\1"
+        u"\uffff\1\172\1\uffff\1\172\1\146\6\172\1\uffff\1\145\2\172\1\154"
+        u"\1\165\2\uffff\1\164\1\172\1\145\1\uffff\1\101\1\uffff\1\116\1"
+        u"\114\1\137\1\116\1\117\2\172\1\137\3\uffff\1\172\6\uffff\1\162"
+        u"\2\uffff\2\145\1\172\1\uffff\1\144\1\114\2\105\1\122\2\124\2\uffff"
+        u"\1\172\1\uffff\3\172\1\uffff\2\172\1\104\1\172\1\105\1\111\1\123"
+        u"\6\uffff\1\172\1\uffff\2\115\1\105\1\uffff\1\117\1\105\1\122\1"
+        u"\126\1\123\1\126\2\105\1\111\1\137\1\122\1\103\1\111\1\126\1\105"
+        u"\1\106\1\111\1\172\1\137\1\103\1\uffff\1\125\1\105\1\116\1\172"
+        u"\1\122\1\uffff\1\105\1\106\1\105\1\122\1\105\1\116\1\103\1\105"
+        u"\1\104\1\172\1\uffff"
         )
 
     DFA35_accept = DFA.unpack(
-        u"\1\uffff\1\1\1\uffff\1\3\15\uffff\1\23\1\24\1\27\7\uffff\1\45\1"
-        u"\46\1\47\1\50\7\uffff\1\65\5\uffff\1\101\5\uffff\1\135\4\uffff"
-        u"\1\144\1\145\1\uffff\1\146\1\1\1\uffff\1\135\1\3\1\106\1\4\26\uffff"
-        u"\1\23\1\24\1\27\10\uffff\1\45\1\46\1\47\1\50\1\67\1\51\1\52\1\62"
-        u"\1\143\1\57\1\72\1\53\1\63\1\73\1\60\1\54\1\70\1\150\1\147\1\55"
-        u"\1\71\1\56\1\76\1\103\1\64\1\65\1\107\1\66\1\112\1\uffff\1\110"
-        u"\1\uffff\1\113\1\111\1\77\1\105\1\100\1\102\1\104\1\101\5\uffff"
-        u"\1\136\1\137\1\140\1\141\2\uffff\1\144\1\145\1\151\23\uffff\1\123"
-        u"\5\uffff\1\127\3\uffff\1\33\7\uffff\1\74\1\114\1\75\1\115\5\uffff"
-        u"\1\142\24\uffff\1\15\1\uffff\1\130\5\uffff\1\34\15\uffff\1\30\1"
-        u"\124\7\uffff\1\7\3\uffff\1\12\3\uffff\1\121\1\13\1\16\16\uffff"
-        u"\1\117\1\uffff\1\131\10\uffff\1\14\5\uffff\1\31\1\17\3\uffff\1"
-        u"\26\1\uffff\1\36\7\uffff\1\120\1\126\1\133\1\uffff\1\5\1\25\1\6"
-        u"\1\125\1\21\1\61\1\uffff\1\134\1\11\2\uffff\1\20\10\uffff\1\42"
-        u"\1\uffff\1\2\3\uffff\1\122\7\uffff\1\116\1\10\1\32\1\132\1\22\1"
-        u"\35\1\uffff\1\40\3\uffff\1\37\23\uffff\1\43\6\uffff\1\44\12\uffff"
-        u"\1\41"
+        u"\1\uffff\1\1\1\uffff\1\3\15\uffff\1\23\1\24\1\27\10\uffff\1\46"
+        u"\1\47\1\50\1\51\7\uffff\1\66\5\uffff\1\102\5\uffff\1\136\4\uffff"
+        u"\1\145\1\146\1\uffff\1\147\1\1\1\uffff\1\136\1\3\1\107\1\4\26\uffff"
+        u"\1\23\1\24\1\27\11\uffff\1\46\1\47\1\50\1\51\1\70\1\52\1\53\1\63"
+        u"\1\144\1\73\1\60\1\54\1\74\1\64\1\61\1\55\1\150\1\151\1\71\1\56"
+        u"\1\72\1\57\1\77\1\104\1\65\1\66\1\110\1\67\1\uffff\1\113\1\111"
+        u"\1\uffff\1\114\1\112\1\100\1\106\1\103\1\101\1\105\1\102\5\uffff"
+        u"\1\140\1\137\1\141\1\uffff\1\142\1\uffff\1\145\1\146\1\152\23\uffff"
+        u"\1\124\6\uffff\1\130\2\uffff\1\33\10\uffff\1\75\1\115\1\76\1\116"
+        u"\5\uffff\1\143\24\uffff\1\15\1\uffff\1\131\6\uffff\1\34\15\uffff"
+        u"\1\125\1\uffff\1\30\6\uffff\1\7\4\uffff\1\12\1\122\2\uffff\1\13"
+        u"\1\16\17\uffff\1\120\1\uffff\1\132\10\uffff\1\14\5\uffff\1\31\1"
+        u"\17\3\uffff\1\26\1\uffff\1\36\10\uffff\1\121\1\127\1\134\1\uffff"
+        u"\1\5\1\126\1\6\1\25\1\62\1\21\1\uffff\1\135\1\11\3\uffff\1\20\7"
+        u"\uffff\1\42\1\45\1\uffff\1\2\3\uffff\1\123\7\uffff\1\117\1\10\1"
+        u"\32\1\133\1\22\1\35\1\uffff\1\40\3\uffff\1\37\24\uffff\1\43\5\uffff"
+        u"\1\44\12\uffff\1\41"
         )
 
     DFA35_special = DFA.unpack(
-        u"\u018b\uffff"
+        u"\u0192\uffff"
         )
 
             
     DFA35_transition = [
-        DFA.unpack(u"\6\72\2\67\1\72\2\67\22\72\1\67\1\47\1\64\1\71\1\62"
-        u"\1\44\1\45\1\63\1\33\1\34\1\37\1\41\1\3\1\42\1\40\1\43\1\65\11"
-        u"\66\1\23\1\1\1\50\1\4\1\51\1\54\1\72\2\62\1\26\1\62\1\32\1\62\1"
-        u"\31\1\62\1\24\2\62\1\61\2\62\1\25\3\62\1\11\1\62\1\27\1\30\4\62"
-        u"\1\35\1\70\1\36\1\52\1\55\1\72\1\7\1\60\1\13\1\17\1\5\1\16\1\57"
-        u"\1\62\1\14\2\62\1\15\5\62\1\10\1\6\1\2\1\20\1\12\1\56\3\62\1\21"
-        u"\1\53\1\22\1\46\uff80\72"),
+        DFA.unpack(u"\6\73\2\70\1\73\2\70\22\73\1\70\1\50\1\65\1\72\1\63"
+        u"\1\45\1\46\1\64\1\34\1\35\1\40\1\42\1\3\1\43\1\41\1\44\1\66\11"
+        u"\67\1\23\1\1\1\51\1\4\1\52\1\55\1\73\2\63\1\26\1\63\1\32\1\63\1"
+        u"\31\1\63\1\24\2\63\1\62\2\63\1\25\1\33\2\63\1\11\1\63\1\27\1\30"
+        u"\4\63\1\36\1\71\1\37\1\53\1\56\1\73\1\7\1\61\1\13\1\17\1\5\1\16"
+        u"\1\60\1\63\1\14\2\63\1\15\5\63\1\10\1\6\1\2\1\20\1\12\1\57\3\63"
+        u"\1\21\1\54\1\22\1\47\uff80\73"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\74"),
+        DFA.unpack(u"\1\75"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\77"),
-        DFA.unpack(u"\1\102\1\uffff\1\101\11\uffff\1\103"),
-        DFA.unpack(u"\1\107\1\106\12\uffff\1\104\2\uffff\1\105"),
-        DFA.unpack(u"\1\110"),
+        DFA.unpack(u"\1\100"),
+        DFA.unpack(u"\1\102\1\uffff\1\104\11\uffff\1\103"),
+        DFA.unpack(u"\1\110\1\107\12\uffff\1\106\2\uffff\1\105"),
         DFA.unpack(u"\1\111"),
         DFA.unpack(u"\1\112"),
         DFA.unpack(u"\1\113"),
-        DFA.unpack(u"\1\115\6\uffff\1\116\6\uffff\1\114"),
-        DFA.unpack(u"\1\117\7\uffff\1\120"),
-        DFA.unpack(u"\1\121"),
-        DFA.unpack(u"\1\123\2\uffff\1\122"),
-        DFA.unpack(u"\1\125\11\uffff\1\124"),
-        DFA.unpack(u"\1\126"),
+        DFA.unpack(u"\1\114"),
+        DFA.unpack(u"\1\115\6\uffff\1\117\6\uffff\1\116"),
+        DFA.unpack(u"\1\120\7\uffff\1\121"),
+        DFA.unpack(u"\1\122"),
+        DFA.unpack(u"\1\124\2\uffff\1\123"),
+        DFA.unpack(u"\1\125\11\uffff\1\126"),
+        DFA.unpack(u"\1\127"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\132"),
-        DFA.unpack(u"\1\134\4\uffff\1\133"),
-        DFA.unpack(u"\1\135"),
+        DFA.unpack(u"\1\133"),
+        DFA.unpack(u"\1\134\4\uffff\1\135"),
         DFA.unpack(u"\1\136"),
         DFA.unpack(u"\1\137"),
         DFA.unpack(u"\1\140"),
         DFA.unpack(u"\1\141"),
+        DFA.unpack(u"\1\142"),
+        DFA.unpack(u"\1\143"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\146"),
-        DFA.unpack(u"\1\150\1\uffff\12\152"),
-        DFA.unpack(u"\1\153\21\uffff\1\154"),
-        DFA.unpack(u"\1\160\17\uffff\1\157\1\156"),
-        DFA.unpack(u"\1\164\4\uffff\1\163\15\uffff\1\162"),
-        DFA.unpack(u"\1\166"),
-        DFA.unpack(u"\1\171\26\uffff\1\170"),
+        DFA.unpack(u"\1\150"),
+        DFA.unpack(u"\1\152\1\uffff\12\154"),
+        DFA.unpack(u"\1\156\21\uffff\1\155"),
+        DFA.unpack(u"\1\162\17\uffff\1\160\1\161"),
+        DFA.unpack(u"\1\164\4\uffff\1\165\15\uffff\1\166"),
+        DFA.unpack(u"\1\170"),
+        DFA.unpack(u"\1\173\26\uffff\1\172"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\174"),
-        DFA.unpack(u"\1\177\1\176"),
-        DFA.unpack(u"\1\u0082\1\u0081"),
-        DFA.unpack(u"\1\u0084"),
-        DFA.unpack(u"\1\u0086\76\uffff\1\u0087"),
+        DFA.unpack(u"\1\176"),
+        DFA.unpack(u"\1\u0080\1\u0081"),
+        DFA.unpack(u"\1\u0084\1\u0083"),
+        DFA.unpack(u"\1\u0086"),
+        DFA.unpack(u"\1\u0089\76\uffff\1\u0088"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u008a\1\uffff\1\u008b"),
-        DFA.unpack(u"\1\u008c"),
-        DFA.unpack(u"\1\u008d"),
+        DFA.unpack(u"\1\u008c\1\uffff\1\u008d"),
         DFA.unpack(u"\1\u008e"),
-        DFA.unpack(u"\1\u0090\4\uffff\1\u008f"),
+        DFA.unpack(u"\1\u008f"),
+        DFA.unpack(u"\1\u0090"),
+        DFA.unpack(u"\1\u0091\4\uffff\1\u0092"),
         DFA.unpack(u""),
-        DFA.unpack(u"\47\u008f\1\uffff\uffd7\u008f"),
-        DFA.unpack(u"\uffff\u0090"),
-        DFA.unpack(u"\1\152\1\uffff\10\u0093\2\152\12\uffff\3\152\21\uffff"
-        u"\1\u0091\13\uffff\3\152\21\uffff\1\u0091"),
-        DFA.unpack(u"\1\152\1\uffff\12\u0094\12\uffff\3\152\35\uffff\3\152"),
+        DFA.unpack(u"\47\u0092\1\uffff\uffd7\u0092"),
+        DFA.unpack(u"\uffff\u0091"),
+        DFA.unpack(u"\1\154\1\uffff\10\u0094\2\154\12\uffff\3\154\21\uffff"
+        u"\1\u0093\13\uffff\3\154\21\uffff\1\u0093"),
+        DFA.unpack(u"\1\154\1\uffff\12\u0096\12\uffff\3\154\35\uffff\3\154"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\uffff\u0097"),
+        DFA.unpack(u"\uffff\u0099"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0098"),
+        DFA.unpack(u"\1\u009a"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0099"),
-        DFA.unpack(u"\1\u009a"),
         DFA.unpack(u"\1\u009b"),
-        DFA.unpack(u"\1\u009d\20\uffff\1\u009c"),
+        DFA.unpack(u"\1\u009c"),
+        DFA.unpack(u"\1\u009d"),
         DFA.unpack(u"\1\u009e"),
-        DFA.unpack(u"\1\u009f\22\uffff\1\u00a0"),
-        DFA.unpack(u"\1\u00a1"),
-        DFA.unpack(u"\1\u00a2"),
-        DFA.unpack(u"\1\u00a3\14\uffff\1\u00a4"),
-        DFA.unpack(u"\1\u00a5"),
-        DFA.unpack(u"\1\u00a6\2\uffff\1\u00a7"),
-        DFA.unpack(u"\1\u00a8"),
-        DFA.unpack(u"\1\u00a9"),
+        DFA.unpack(u"\1\u009f\20\uffff\1\u00a0"),
+        DFA.unpack(u"\1\u00a2\22\uffff\1\u00a1"),
+        DFA.unpack(u"\1\u00a3"),
+        DFA.unpack(u"\1\u00a4"),
+        DFA.unpack(u"\1\u00a5\14\uffff\1\u00a6"),
+        DFA.unpack(u"\1\u00a7"),
+        DFA.unpack(u"\1\u00a9\2\uffff\1\u00a8"),
         DFA.unpack(u"\1\u00aa"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u00ab"),
         DFA.unpack(u"\1\u00ac"),
-        DFA.unpack(u"\1\u00ad"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00ae"),
         DFA.unpack(u"\1\u00af"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\24\75\1\u00b0\5\75"),
+        DFA.unpack(u"\1\u00b0"),
+        DFA.unpack(u"\1\u00b1"),
         DFA.unpack(u"\1\u00b2"),
-        DFA.unpack(u"\1\u00b4\11\uffff\1\u00b3"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\24\76\1\u00b3\5\76"),
+        DFA.unpack(u"\1\u00b6\11\uffff\1\u00b5"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u00b6"),
-        DFA.unpack(u"\1\u00b7"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00b8"),
         DFA.unpack(u"\1\u00b9"),
         DFA.unpack(u"\1\u00ba"),
         DFA.unpack(u"\1\u00bb"),
         DFA.unpack(u"\1\u00bc"),
+        DFA.unpack(u"\1\u00bd"),
+        DFA.unpack(u"\1\u00be"),
+        DFA.unpack(u"\1\u00bf"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
@@ -4565,10 +4619,10 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u00c0"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00bd"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00bf"),
+        DFA.unpack(u"\1\u00c2"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
@@ -4577,24 +4631,21 @@ class CLexer(Lexer):
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00c1"),
-        DFA.unpack(u"\1\u00c2"),
-        DFA.unpack(u"\1\u00c3"),
         DFA.unpack(u"\1\u00c4"),
         DFA.unpack(u"\1\u00c5"),
+        DFA.unpack(u"\1\u00c6"),
+        DFA.unpack(u"\1\u00c7"),
+        DFA.unpack(u"\1\u00c8"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\154\1\uffff\10\u0094\2\154\12\uffff\3\154\35\uffff"
+        u"\3\154"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\152\1\uffff\10\u0093\2\152\12\uffff\3\152\35\uffff"
-        u"\3\152"),
-        DFA.unpack(u"\1\152\1\uffff\12\u0094\12\uffff\3\152\35\uffff\3\152"),
+        DFA.unpack(u"\1\154\1\uffff\12\u0096\12\uffff\3\154\35\uffff\3\154"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00c7"),
-        DFA.unpack(u"\1\u00c8"),
-        DFA.unpack(u"\1\u00c9"),
         DFA.unpack(u"\1\u00ca"),
         DFA.unpack(u"\1\u00cb"),
         DFA.unpack(u"\1\u00cc"),
@@ -4608,242 +4659,244 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\u00d4"),
         DFA.unpack(u"\1\u00d5"),
         DFA.unpack(u"\1\u00d6"),
-        DFA.unpack(u"\1\u00d8\1\u00d7"),
+        DFA.unpack(u"\1\u00d7"),
+        DFA.unpack(u"\1\u00d8"),
         DFA.unpack(u"\1\u00d9"),
         DFA.unpack(u"\1\u00da"),
+        DFA.unpack(u"\1\u00dc\1\u00db"),
+        DFA.unpack(u"\1\u00dd"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u00dc"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u00de"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00df"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u00e0"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00e1"),
         DFA.unpack(u"\1\u00e2"),
+        DFA.unpack(u"\1\u00e3"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
         DFA.unpack(u"\1\u00e4"),
         DFA.unpack(u"\1\u00e5"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u00e6"),
-        DFA.unpack(u"\1\u00e7"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00e8"),
-        DFA.unpack(u"\1\u00ea\35\uffff\1\u00e9"),
+        DFA.unpack(u"\1\u00e9"),
+        DFA.unpack(u"\1\u00ea"),
+        DFA.unpack(u"\1\u00eb"),
+        DFA.unpack(u"\1\u00ed\35\uffff\1\u00ec"),
+        DFA.unpack(u"\1\u00ee"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u00eb"),
-        DFA.unpack(u"\1\u00ec"),
-        DFA.unpack(u"\1\u00ed"),
-        DFA.unpack(u"\1\u00ee"),
         DFA.unpack(u"\1\u00ef"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u00f0"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u00f1"),
+        DFA.unpack(u"\1\u00f2"),
         DFA.unpack(u"\1\u00f3"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u00f4"),
-        DFA.unpack(u"\1\u00f5"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00f6"),
-        DFA.unpack(u"\1\u00f7"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00f8"),
         DFA.unpack(u"\1\u00f9"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u00fa"),
         DFA.unpack(u"\1\u00fb"),
         DFA.unpack(u"\1\u00fc"),
         DFA.unpack(u"\1\u00fd"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u00ff"),
         DFA.unpack(u"\1\u0100"),
         DFA.unpack(u"\1\u0101"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u0102"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0105"),
         DFA.unpack(u"\1\u0106"),
-        DFA.unpack(u"\1\u0107"),
-        DFA.unpack(u"\1\u0108"),
-        DFA.unpack(u"\1\u0109"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u0109"),
         DFA.unpack(u"\1\u010a"),
         DFA.unpack(u"\1\u010b"),
         DFA.unpack(u"\1\u010c"),
         DFA.unpack(u"\1\u010d"),
         DFA.unpack(u"\1\u010e"),
-        DFA.unpack(u"\1\u010f\17\uffff\1\u0110"),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\u010f"),
+        DFA.unpack(u"\1\u0110"),
         DFA.unpack(u"\1\u0111"),
         DFA.unpack(u"\1\u0112"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u0114"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0114\17\uffff\1\u0113"),
+        DFA.unpack(u"\1\u0115"),
         DFA.unpack(u"\1\u0116"),
         DFA.unpack(u"\1\u0117"),
-        DFA.unpack(u""),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u0118"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0119"),
-        DFA.unpack(u"\1\u011a"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u011b"),
         DFA.unpack(u"\1\u011c"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u011d"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u011e"),
         DFA.unpack(u"\1\u011f"),
         DFA.unpack(u"\1\u0120"),
         DFA.unpack(u"\1\u0121"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u0122"),
-        DFA.unpack(u"\1\u0123"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0124"),
+        DFA.unpack(u"\1\u0125"),
         DFA.unpack(u"\1\u0126"),
         DFA.unpack(u"\1\u0127"),
+        DFA.unpack(u""),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0128"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u012a"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u""),
+        DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\u012b"),
         DFA.unpack(u"\1\u012c"),
         DFA.unpack(u"\1\u012d"),
-        DFA.unpack(u"\1\u012e"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u012f"),
-        DFA.unpack(u"\1\u0130"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0131"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\u0132\1"
-        u"\uffff\32\75"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0132"),
+        DFA.unpack(u"\1\u0133"),
+        DFA.unpack(u"\1\u0134"),
+        DFA.unpack(u"\1\u0135"),
         DFA.unpack(u"\1\u0136"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0137"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\u0138\1"
+        u"\uffff\32\76"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u013d"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u0140"),
-        DFA.unpack(u"\1\u0141"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\u013c"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
         DFA.unpack(u"\1\u0143"),
-        DFA.unpack(u"\1\u0144"),
-        DFA.unpack(u""),
-        DFA.unpack(u"\1\u0145"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0146"),
         DFA.unpack(u"\1\u0147"),
+        DFA.unpack(u""),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0148"),
-        DFA.unpack(u"\1\u0149"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u014a"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u014c"),
-        DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\u014b"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u014c"),
+        DFA.unpack(u"\1\u014d"),
+        DFA.unpack(u"\1\u014e"),
+        DFA.unpack(u"\1\u014f"),
+        DFA.unpack(u"\1\u0150"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\u0153"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u014e"),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u014f"),
-        DFA.unpack(u"\1\u0150"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u0152"),
-        DFA.unpack(u"\1\u0153"),
-        DFA.unpack(u"\1\u0154"),
         DFA.unpack(u"\1\u0155"),
+        DFA.unpack(u""),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0156"),
         DFA.unpack(u"\1\u0157"),
-        DFA.unpack(u"\1\u0158"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0159"),
+        DFA.unpack(u"\1\u015a"),
+        DFA.unpack(u"\1\u015b"),
+        DFA.unpack(u"\1\u015c"),
+        DFA.unpack(u"\1\u015d"),
+        DFA.unpack(u"\1\u015e"),
+        DFA.unpack(u"\1\u015f"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u015f"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u0161"),
-        DFA.unpack(u"\1\u0162"),
-        DFA.unpack(u"\1\u0163"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u""),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\u0166"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u"\1\u0168"),
+        DFA.unpack(u"\1\u0169"),
+        DFA.unpack(u"\1\u016a"),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0165"),
-        DFA.unpack(u"\1\u0166"),
-        DFA.unpack(u"\1\u0167"),
         DFA.unpack(u""),
-        DFA.unpack(u"\1\u0168"),
-        DFA.unpack(u"\1\u0169"),
-        DFA.unpack(u"\1\u016a"),
-        DFA.unpack(u"\1\u016b"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u016c"),
         DFA.unpack(u"\1\u016d"),
         DFA.unpack(u"\1\u016e"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u016f"),
         DFA.unpack(u"\1\u0170"),
         DFA.unpack(u"\1\u0171"),
@@ -4853,30 +4906,37 @@ class CLexer(Lexer):
         DFA.unpack(u"\1\u0175"),
         DFA.unpack(u"\1\u0176"),
         DFA.unpack(u"\1\u0177"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u0178"),
         DFA.unpack(u"\1\u0179"),
         DFA.unpack(u"\1\u017a"),
-        DFA.unpack(u""),
         DFA.unpack(u"\1\u017b"),
         DFA.unpack(u"\1\u017c"),
         DFA.unpack(u"\1\u017d"),
         DFA.unpack(u"\1\u017e"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
-        DFA.unpack(u"\1\u0180"),
-        DFA.unpack(u""),
+        DFA.unpack(u"\1\u017f"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0181"),
         DFA.unpack(u"\1\u0182"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0183"),
         DFA.unpack(u"\1\u0184"),
         DFA.unpack(u"\1\u0185"),
-        DFA.unpack(u"\1\u0186"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"\1\u0187"),
+        DFA.unpack(u""),
         DFA.unpack(u"\1\u0188"),
         DFA.unpack(u"\1\u0189"),
-        DFA.unpack(u"\1\75\13\uffff\12\75\7\uffff\32\75\4\uffff\1\75\1\uffff"
-        u"\32\75"),
+        DFA.unpack(u"\1\u018a"),
+        DFA.unpack(u"\1\u018b"),
+        DFA.unpack(u"\1\u018c"),
+        DFA.unpack(u"\1\u018d"),
+        DFA.unpack(u"\1\u018e"),
+        DFA.unpack(u"\1\u018f"),
+        DFA.unpack(u"\1\u0190"),
+        DFA.unpack(u"\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff"
+        u"\32\76"),
         DFA.unpack(u"")
     ]