c-next 0.2.16 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +18 -2
  2. package/dist/index.js +8897 -6260
  3. package/dist/index.js.map +4 -4
  4. package/grammar/CNext.g4 +12 -0
  5. package/package.json +4 -2
  6. package/src/transpiler/Transpiler.ts +376 -48
  7. package/src/transpiler/__tests__/DualCodePaths.test.ts +1 -1
  8. package/src/transpiler/__tests__/compileCommandsDiscovery.integration.test.ts +94 -0
  9. package/src/transpiler/__tests__/externalSymbolRecovery.integration.test.ts +215 -0
  10. package/src/transpiler/logic/__tests__/detectAssemblySyntax.test.ts +116 -0
  11. package/src/transpiler/logic/analysis/FunctionCallAnalyzer.ts +65 -10
  12. package/src/transpiler/logic/analysis/InitializationAnalyzer.ts +186 -14
  13. package/src/transpiler/logic/analysis/MixedTypeCategoryAnalyzer.ts +408 -0
  14. package/src/transpiler/logic/analysis/PassByValueAnalyzer.ts +16 -97
  15. package/src/transpiler/logic/analysis/ReturnPathAnalyzer.ts +171 -0
  16. package/src/transpiler/logic/analysis/SignedShiftAnalyzer.ts +124 -12
  17. package/src/transpiler/logic/analysis/__tests__/FunctionCallAnalyzer.test.ts +200 -0
  18. package/src/transpiler/logic/analysis/__tests__/InitializationAnalyzer.test.ts +386 -1
  19. package/src/transpiler/logic/analysis/__tests__/MixedTypeCategoryAnalyzer.test.ts +346 -0
  20. package/src/transpiler/logic/analysis/__tests__/ReturnPathAnalyzer.test.ts +232 -0
  21. package/src/transpiler/logic/analysis/__tests__/SignedShiftAnalyzer.test.ts +211 -0
  22. package/src/transpiler/logic/analysis/runAnalyzers.ts +23 -2
  23. package/src/transpiler/logic/analysis/types/IMixedTypeCategoryError.ts +17 -0
  24. package/src/transpiler/logic/analysis/types/IReturnPathError.ts +12 -0
  25. package/src/transpiler/logic/detectAssemblySyntax.ts +80 -0
  26. package/src/transpiler/logic/parser/grammar/CNext.interp +4 -1
  27. package/src/transpiler/logic/parser/grammar/CNext.tokens +169 -167
  28. package/src/transpiler/logic/parser/grammar/CNextLexer.interp +4 -1
  29. package/src/transpiler/logic/parser/grammar/CNextLexer.tokens +169 -167
  30. package/src/transpiler/logic/parser/grammar/CNextLexer.ts +545 -541
  31. package/src/transpiler/logic/parser/grammar/CNextListener.ts +11 -0
  32. package/src/transpiler/logic/parser/grammar/CNextParser.ts +1318 -1178
  33. package/src/transpiler/logic/parser/grammar/CNextVisitor.ts +7 -0
  34. package/src/transpiler/logic/preprocessor/CompileCommandsReader.ts +332 -0
  35. package/src/transpiler/logic/preprocessor/ExternalDeclarationOracle.ts +202 -0
  36. package/src/transpiler/logic/preprocessor/Preprocessor.ts +24 -6
  37. package/src/transpiler/logic/preprocessor/ToolchainDetector.ts +42 -1
  38. package/src/transpiler/logic/preprocessor/__tests__/CompileCommandsReader.test.ts +216 -0
  39. package/src/transpiler/logic/preprocessor/__tests__/ExternalDeclarationOracle.test.ts +153 -0
  40. package/src/transpiler/logic/preprocessor/__tests__/Preprocessor.test.ts +43 -18
  41. package/src/transpiler/logic/preprocessor/__tests__/ToolchainDetector.crossCompiler.test.ts +75 -0
  42. package/src/transpiler/logic/preprocessor/__tests__/fixtures/oracle/dependent.h +7 -0
  43. package/src/transpiler/logic/preprocessor/__tests__/fixtures/oracle/predecessor.h +5 -0
  44. package/src/transpiler/logic/preprocessor/types/ICompileCommandsResult.ts +14 -0
  45. package/src/transpiler/logic/preprocessor/types/IPreprocessOptions.ts +17 -0
  46. package/src/transpiler/logic/symbols/SymbolTable.ts +62 -2
  47. package/src/transpiler/logic/symbols/__tests__/SymbolTable.test.ts +55 -4
  48. package/src/transpiler/logic/symbols/cnext/collectors/VariableCollector.ts +15 -2
  49. package/src/transpiler/logic/symbols/cnext/utils/TypeUtils.ts +64 -50
  50. package/src/transpiler/output/MisraSuppressionUtils.ts +52 -0
  51. package/src/transpiler/output/__tests__/MisraSuppressionUtils.test.ts +67 -0
  52. package/src/transpiler/output/codegen/CodeGenerator.ts +196 -98
  53. package/src/transpiler/output/codegen/TypeResolver.ts +148 -0
  54. package/src/transpiler/output/codegen/TypeValidator.ts +179 -81
  55. package/src/transpiler/output/codegen/__tests__/CodeGenerator.coverage.test.ts +165 -17
  56. package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +163 -35
  57. package/src/transpiler/output/codegen/__tests__/TrackVariableTypeHelpers.test.ts +2 -2
  58. package/src/transpiler/output/codegen/__tests__/TypeResolver.test.ts +93 -0
  59. package/src/transpiler/output/codegen/__tests__/TypeValidator.alwaysTrueLoop.test.ts +91 -0
  60. package/src/transpiler/output/codegen/__tests__/TypeValidator.test.ts +97 -14
  61. package/src/transpiler/output/codegen/assignment/AssignmentClassifier.ts +13 -0
  62. package/src/transpiler/output/codegen/assignment/AssignmentKind.ts +1 -1
  63. package/src/transpiler/output/codegen/assignment/handlers/AccessPatternHandlers.ts +20 -12
  64. package/src/transpiler/output/codegen/assignment/handlers/ArrayHandlers.ts +424 -22
  65. package/src/transpiler/output/codegen/assignment/handlers/BitAccessHandlers.ts +31 -18
  66. package/src/transpiler/output/codegen/assignment/handlers/BitmapHandlers.ts +7 -8
  67. package/src/transpiler/output/codegen/assignment/handlers/RegisterHandlers.ts +6 -8
  68. package/src/transpiler/output/codegen/assignment/handlers/RegisterUtils.ts +12 -10
  69. package/src/transpiler/output/codegen/assignment/handlers/SimpleHandler.ts +3 -7
  70. package/src/transpiler/output/codegen/assignment/handlers/SpecialHandlers.ts +7 -9
  71. package/src/transpiler/output/codegen/assignment/handlers/StringHandlers.ts +12 -10
  72. package/src/transpiler/output/codegen/assignment/handlers/__tests__/ArrayHandlers.test.ts +479 -11
  73. package/src/transpiler/output/codegen/generators/IOrchestrator.ts +3 -0
  74. package/src/transpiler/output/codegen/generators/declarationGenerators/ScopeGenerator.ts +26 -7
  75. package/src/transpiler/output/codegen/generators/declarationGenerators/__tests__/ScopeGenerator.test.ts +86 -0
  76. package/src/transpiler/output/codegen/generators/expressions/BinaryExprGenerator.ts +43 -24
  77. package/src/transpiler/output/codegen/generators/expressions/CallExprGenerator.ts +76 -58
  78. package/src/transpiler/output/codegen/generators/expressions/ExpressionGenerator.ts +9 -2
  79. package/src/transpiler/output/codegen/generators/expressions/PostfixExpressionGenerator.ts +26 -13
  80. package/src/transpiler/output/codegen/generators/expressions/__tests__/CallExprGenerator.test.ts +44 -0
  81. package/src/transpiler/output/codegen/generators/expressions/__tests__/ExpressionGenerator.test.ts +82 -1
  82. package/src/transpiler/output/codegen/generators/expressions/__tests__/PostfixExpressionGenerator.test.ts +129 -1
  83. package/src/transpiler/output/codegen/generators/statements/ControlFlowGenerator.ts +64 -8
  84. package/src/transpiler/output/codegen/generators/statements/__tests__/ControlFlowGenerator.test.ts +8 -5
  85. package/src/transpiler/output/codegen/helpers/AssignmentExpectedTypeResolver.ts +30 -2
  86. package/src/transpiler/output/codegen/helpers/ParameterInputAdapter.ts +17 -3
  87. package/src/transpiler/output/codegen/helpers/ParameterSignatureBuilder.ts +17 -4
  88. package/src/transpiler/output/codegen/helpers/StringDeclHelper.ts +240 -42
  89. package/src/transpiler/output/codegen/helpers/SymbolLookupHelper.ts +0 -21
  90. package/src/transpiler/output/codegen/helpers/TypeGenerationHelper.ts +60 -39
  91. package/src/transpiler/output/codegen/helpers/TypeRegistrationEngine.ts +170 -36
  92. package/src/transpiler/output/codegen/helpers/VariableDeclHelper.ts +37 -39
  93. package/src/transpiler/output/codegen/helpers/__tests__/AssignmentExpectedTypeResolver.test.ts +19 -0
  94. package/src/transpiler/output/codegen/helpers/__tests__/ParameterInputAdapter.test.ts +117 -0
  95. package/src/transpiler/output/codegen/helpers/__tests__/ParameterSignatureBuilder.test.ts +94 -2
  96. package/src/transpiler/output/codegen/helpers/__tests__/StringDeclHelper.test.ts +322 -9
  97. package/src/transpiler/output/codegen/helpers/__tests__/SymbolLookupHelper.test.ts +0 -64
  98. package/src/transpiler/output/codegen/helpers/__tests__/TypeRegistrationEngine.test.ts +101 -0
  99. package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclHelper.test.ts +29 -5
  100. package/src/transpiler/output/codegen/subscript/SubscriptClassifier.ts +30 -11
  101. package/src/transpiler/output/codegen/subscript/TSubscriptKind.ts +1 -1
  102. package/src/transpiler/output/codegen/subscript/__tests__/SubscriptClassifier.test.ts +38 -6
  103. package/src/transpiler/output/codegen/types/ICallbackTypeInfo.ts +2 -1
  104. package/src/transpiler/output/codegen/types/IParameterInput.ts +7 -0
  105. package/src/transpiler/output/headers/BaseHeaderGenerator.ts +8 -0
  106. package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +140 -24
  107. package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +280 -0
  108. package/src/transpiler/output/headers/generators/IHeaderTypeInput.ts +13 -0
  109. package/src/transpiler/output/headers/generators/generateStructHeader.ts +48 -28
  110. package/src/transpiler/state/CodeGenState.ts +91 -22
  111. package/src/transpiler/state/__tests__/CodeGenState.test.ts +253 -11
  112. package/src/transpiler/types/ICachedFileEntry.ts +7 -0
  113. package/src/utils/LiteralUtils.ts +23 -0
  114. package/src/utils/__tests__/LiteralUtils.test.ts +101 -0
  115. package/src/utils/cache/CacheManager.ts +13 -2
  116. package/src/utils/cache/__tests__/CacheManager.test.ts +18 -1
  117. package/src/utils/constants/TypeConstants.ts +13 -0
  118. package/src/utils/types/IParameterSymbol.ts +1 -0
@@ -38,97 +38,98 @@ export class CNextParser extends antlr.Parser {
38
38
  public static readonly WHILE = 24;
39
39
  public static readonly DO = 25;
40
40
  public static readonly FOR = 26;
41
- public static readonly SWITCH = 27;
42
- public static readonly CASE = 28;
43
- public static readonly DEFAULT = 29;
44
- public static readonly RETURN = 30;
45
- public static readonly TRUE = 31;
46
- public static readonly FALSE = 32;
47
- public static readonly C_NULL = 33;
48
- public static readonly STRING = 34;
49
- public static readonly SIZEOF = 35;
50
- public static readonly BITMAP8 = 36;
51
- public static readonly BITMAP16 = 37;
52
- public static readonly BITMAP24 = 38;
53
- public static readonly BITMAP32 = 39;
54
- public static readonly RW = 40;
55
- public static readonly RO = 41;
56
- public static readonly WO = 42;
57
- public static readonly W1C = 43;
58
- public static readonly W1S = 44;
59
- public static readonly CLAMP = 45;
60
- public static readonly WRAP = 46;
61
- public static readonly ATOMIC = 47;
62
- public static readonly CRITICAL = 48;
63
- public static readonly SUFFIXED_FLOAT = 49;
64
- public static readonly SUFFIXED_HEX = 50;
65
- public static readonly SUFFIXED_BINARY = 51;
66
- public static readonly SUFFIXED_DECIMAL = 52;
67
- public static readonly U8 = 53;
68
- public static readonly U16 = 54;
69
- public static readonly U32 = 55;
70
- public static readonly U64 = 56;
71
- public static readonly I8 = 57;
72
- public static readonly I16 = 58;
73
- public static readonly I32 = 59;
74
- public static readonly I64 = 60;
75
- public static readonly F32 = 61;
76
- public static readonly F64 = 62;
77
- public static readonly BOOL = 63;
78
- public static readonly ISR_TYPE = 64;
79
- public static readonly LSHIFT_ASSIGN = 65;
80
- public static readonly RSHIFT_ASSIGN = 66;
81
- public static readonly PLUS_ASSIGN = 67;
82
- public static readonly MINUS_ASSIGN = 68;
83
- public static readonly STAR_ASSIGN = 69;
84
- public static readonly SLASH_ASSIGN = 70;
85
- public static readonly PERCENT_ASSIGN = 71;
86
- public static readonly BITAND_ASSIGN = 72;
87
- public static readonly BITOR_ASSIGN = 73;
88
- public static readonly BITXOR_ASSIGN = 74;
89
- public static readonly ASSIGN = 75;
90
- public static readonly EQ = 76;
91
- public static readonly NEQ = 77;
92
- public static readonly LT = 78;
93
- public static readonly GT = 79;
94
- public static readonly LTE = 80;
95
- public static readonly GTE = 81;
96
- public static readonly PLUS = 82;
97
- public static readonly MINUS = 83;
98
- public static readonly STAR = 84;
99
- public static readonly SLASH = 85;
100
- public static readonly PERCENT = 86;
101
- public static readonly AND = 87;
102
- public static readonly OR = 88;
103
- public static readonly NOT = 89;
104
- public static readonly BITAND = 90;
105
- public static readonly BITOR = 91;
106
- public static readonly BITXOR = 92;
107
- public static readonly BITNOT = 93;
108
- public static readonly LSHIFT = 94;
109
- public static readonly RSHIFT = 95;
110
- public static readonly LPAREN = 96;
111
- public static readonly RPAREN = 97;
112
- public static readonly LBRACE = 98;
113
- public static readonly RBRACE = 99;
114
- public static readonly LBRACKET = 100;
115
- public static readonly RBRACKET = 101;
116
- public static readonly SEMI = 102;
117
- public static readonly COMMA = 103;
118
- public static readonly DOT = 104;
119
- public static readonly AT = 105;
120
- public static readonly COLON = 106;
121
- public static readonly HEX_LITERAL = 107;
122
- public static readonly BINARY_LITERAL = 108;
123
- public static readonly FLOAT_LITERAL = 109;
124
- public static readonly INTEGER_LITERAL = 110;
125
- public static readonly STRING_LITERAL = 111;
126
- public static readonly CHAR_LITERAL = 112;
127
- public static readonly IDENTIFIER = 113;
128
- public static readonly DOC_COMMENT = 114;
129
- public static readonly LINE_COMMENT = 115;
130
- public static readonly BLOCK_COMMENT = 116;
131
- public static readonly WS = 117;
41
+ public static readonly FOREVER = 27;
42
+ public static readonly SWITCH = 28;
43
+ public static readonly CASE = 29;
44
+ public static readonly DEFAULT = 30;
45
+ public static readonly RETURN = 31;
46
+ public static readonly TRUE = 32;
47
+ public static readonly FALSE = 33;
48
+ public static readonly C_NULL = 34;
49
+ public static readonly STRING = 35;
50
+ public static readonly SIZEOF = 36;
51
+ public static readonly BITMAP8 = 37;
52
+ public static readonly BITMAP16 = 38;
53
+ public static readonly BITMAP24 = 39;
54
+ public static readonly BITMAP32 = 40;
55
+ public static readonly RW = 41;
56
+ public static readonly RO = 42;
57
+ public static readonly WO = 43;
58
+ public static readonly W1C = 44;
59
+ public static readonly W1S = 45;
60
+ public static readonly CLAMP = 46;
61
+ public static readonly WRAP = 47;
62
+ public static readonly ATOMIC = 48;
63
+ public static readonly CRITICAL = 49;
64
+ public static readonly SUFFIXED_FLOAT = 50;
65
+ public static readonly SUFFIXED_HEX = 51;
66
+ public static readonly SUFFIXED_BINARY = 52;
67
+ public static readonly SUFFIXED_DECIMAL = 53;
68
+ public static readonly U8 = 54;
69
+ public static readonly U16 = 55;
70
+ public static readonly U32 = 56;
71
+ public static readonly U64 = 57;
72
+ public static readonly I8 = 58;
73
+ public static readonly I16 = 59;
74
+ public static readonly I32 = 60;
75
+ public static readonly I64 = 61;
76
+ public static readonly F32 = 62;
77
+ public static readonly F64 = 63;
78
+ public static readonly BOOL = 64;
79
+ public static readonly ISR_TYPE = 65;
80
+ public static readonly LSHIFT_ASSIGN = 66;
81
+ public static readonly RSHIFT_ASSIGN = 67;
82
+ public static readonly PLUS_ASSIGN = 68;
83
+ public static readonly MINUS_ASSIGN = 69;
84
+ public static readonly STAR_ASSIGN = 70;
85
+ public static readonly SLASH_ASSIGN = 71;
86
+ public static readonly PERCENT_ASSIGN = 72;
87
+ public static readonly BITAND_ASSIGN = 73;
88
+ public static readonly BITOR_ASSIGN = 74;
89
+ public static readonly BITXOR_ASSIGN = 75;
90
+ public static readonly ASSIGN = 76;
91
+ public static readonly EQ = 77;
92
+ public static readonly NEQ = 78;
93
+ public static readonly LT = 79;
94
+ public static readonly GT = 80;
95
+ public static readonly LTE = 81;
96
+ public static readonly GTE = 82;
97
+ public static readonly PLUS = 83;
98
+ public static readonly MINUS = 84;
99
+ public static readonly STAR = 85;
100
+ public static readonly SLASH = 86;
101
+ public static readonly PERCENT = 87;
102
+ public static readonly AND = 88;
103
+ public static readonly OR = 89;
104
+ public static readonly NOT = 90;
105
+ public static readonly BITAND = 91;
106
+ public static readonly BITOR = 92;
107
+ public static readonly BITXOR = 93;
108
+ public static readonly BITNOT = 94;
109
+ public static readonly LSHIFT = 95;
110
+ public static readonly RSHIFT = 96;
111
+ public static readonly LPAREN = 97;
112
+ public static readonly RPAREN = 98;
113
+ public static readonly LBRACE = 99;
114
+ public static readonly RBRACE = 100;
115
+ public static readonly LBRACKET = 101;
116
+ public static readonly RBRACKET = 102;
117
+ public static readonly SEMI = 103;
118
+ public static readonly COMMA = 104;
119
+ public static readonly DOT = 105;
120
+ public static readonly AT = 106;
121
+ public static readonly COLON = 107;
122
+ public static readonly HEX_LITERAL = 108;
123
+ public static readonly BINARY_LITERAL = 109;
124
+ public static readonly FLOAT_LITERAL = 110;
125
+ public static readonly INTEGER_LITERAL = 111;
126
+ public static readonly STRING_LITERAL = 112;
127
+ public static readonly CHAR_LITERAL = 113;
128
+ public static readonly IDENTIFIER = 114;
129
+ public static readonly DOC_COMMENT = 115;
130
+ public static readonly LINE_COMMENT = 116;
131
+ public static readonly BLOCK_COMMENT = 117;
132
+ public static readonly WS = 118;
132
133
  public static readonly RULE_program = 0;
133
134
  public static readonly RULE_includeDirective = 1;
134
135
  public static readonly RULE_preprocessorDirective = 2;
@@ -171,68 +172,69 @@ export class CNextParser extends antlr.Parser {
171
172
  public static readonly RULE_whileStatement = 39;
172
173
  public static readonly RULE_doWhileStatement = 40;
173
174
  public static readonly RULE_forStatement = 41;
174
- public static readonly RULE_forInit = 42;
175
- public static readonly RULE_forVarDecl = 43;
176
- public static readonly RULE_forAssignment = 44;
177
- public static readonly RULE_forUpdate = 45;
178
- public static readonly RULE_returnStatement = 46;
179
- public static readonly RULE_switchStatement = 47;
180
- public static readonly RULE_switchCase = 48;
181
- public static readonly RULE_caseLabel = 49;
182
- public static readonly RULE_defaultCase = 50;
183
- public static readonly RULE_expression = 51;
184
- public static readonly RULE_ternaryExpression = 52;
185
- public static readonly RULE_orExpression = 53;
186
- public static readonly RULE_andExpression = 54;
187
- public static readonly RULE_equalityExpression = 55;
188
- public static readonly RULE_relationalExpression = 56;
189
- public static readonly RULE_bitwiseOrExpression = 57;
190
- public static readonly RULE_bitwiseXorExpression = 58;
191
- public static readonly RULE_bitwiseAndExpression = 59;
192
- public static readonly RULE_shiftExpression = 60;
193
- public static readonly RULE_additiveExpression = 61;
194
- public static readonly RULE_multiplicativeExpression = 62;
195
- public static readonly RULE_unaryExpression = 63;
196
- public static readonly RULE_postfixExpression = 64;
197
- public static readonly RULE_postfixOp = 65;
198
- public static readonly RULE_primaryExpression = 66;
199
- public static readonly RULE_sizeofExpression = 67;
200
- public static readonly RULE_castExpression = 68;
201
- public static readonly RULE_structInitializer = 69;
202
- public static readonly RULE_fieldInitializerList = 70;
203
- public static readonly RULE_fieldInitializer = 71;
204
- public static readonly RULE_arrayInitializer = 72;
205
- public static readonly RULE_arrayInitializerElement = 73;
206
- public static readonly RULE_argumentList = 74;
207
- public static readonly RULE_type = 75;
208
- public static readonly RULE_scopedType = 76;
209
- public static readonly RULE_globalType = 77;
210
- public static readonly RULE_qualifiedType = 78;
211
- public static readonly RULE_primitiveType = 79;
212
- public static readonly RULE_userType = 80;
213
- public static readonly RULE_templateType = 81;
214
- public static readonly RULE_templateArgumentList = 82;
215
- public static readonly RULE_templateArgument = 83;
216
- public static readonly RULE_stringType = 84;
217
- public static readonly RULE_arrayType = 85;
218
- public static readonly RULE_arrayTypeDimension = 86;
219
- public static readonly RULE_literal = 87;
175
+ public static readonly RULE_foreverStatement = 42;
176
+ public static readonly RULE_forInit = 43;
177
+ public static readonly RULE_forVarDecl = 44;
178
+ public static readonly RULE_forAssignment = 45;
179
+ public static readonly RULE_forUpdate = 46;
180
+ public static readonly RULE_returnStatement = 47;
181
+ public static readonly RULE_switchStatement = 48;
182
+ public static readonly RULE_switchCase = 49;
183
+ public static readonly RULE_caseLabel = 50;
184
+ public static readonly RULE_defaultCase = 51;
185
+ public static readonly RULE_expression = 52;
186
+ public static readonly RULE_ternaryExpression = 53;
187
+ public static readonly RULE_orExpression = 54;
188
+ public static readonly RULE_andExpression = 55;
189
+ public static readonly RULE_equalityExpression = 56;
190
+ public static readonly RULE_relationalExpression = 57;
191
+ public static readonly RULE_bitwiseOrExpression = 58;
192
+ public static readonly RULE_bitwiseXorExpression = 59;
193
+ public static readonly RULE_bitwiseAndExpression = 60;
194
+ public static readonly RULE_shiftExpression = 61;
195
+ public static readonly RULE_additiveExpression = 62;
196
+ public static readonly RULE_multiplicativeExpression = 63;
197
+ public static readonly RULE_unaryExpression = 64;
198
+ public static readonly RULE_postfixExpression = 65;
199
+ public static readonly RULE_postfixOp = 66;
200
+ public static readonly RULE_primaryExpression = 67;
201
+ public static readonly RULE_sizeofExpression = 68;
202
+ public static readonly RULE_castExpression = 69;
203
+ public static readonly RULE_structInitializer = 70;
204
+ public static readonly RULE_fieldInitializerList = 71;
205
+ public static readonly RULE_fieldInitializer = 72;
206
+ public static readonly RULE_arrayInitializer = 73;
207
+ public static readonly RULE_arrayInitializerElement = 74;
208
+ public static readonly RULE_argumentList = 75;
209
+ public static readonly RULE_type = 76;
210
+ public static readonly RULE_scopedType = 77;
211
+ public static readonly RULE_globalType = 78;
212
+ public static readonly RULE_qualifiedType = 79;
213
+ public static readonly RULE_primitiveType = 80;
214
+ public static readonly RULE_userType = 81;
215
+ public static readonly RULE_templateType = 82;
216
+ public static readonly RULE_templateArgumentList = 83;
217
+ public static readonly RULE_templateArgument = 84;
218
+ public static readonly RULE_stringType = 85;
219
+ public static readonly RULE_arrayType = 86;
220
+ public static readonly RULE_arrayTypeDimension = 87;
221
+ public static readonly RULE_literal = 88;
220
222
 
221
223
  public static readonly literalNames = [
222
224
  null, "'?'", null, null, null, null, null, null, null, null, null,
223
225
  "'scope'", "'struct'", "'enum'", "'this'", "'global'", "'register'",
224
226
  "'private'", "'public'", "'const'", "'volatile'", "'void'", "'if'",
225
- "'else'", "'while'", "'do'", "'for'", "'switch'", "'case'", "'default'",
226
- "'return'", "'true'", "'false'", "'NULL'", "'string'", "'sizeof'",
227
- "'bitmap8'", "'bitmap16'", "'bitmap24'", "'bitmap32'", "'rw'", "'ro'",
228
- "'wo'", "'w1c'", "'w1s'", "'clamp'", "'wrap'", "'atomic'", "'critical'",
229
- null, null, null, null, "'u8'", "'u16'", "'u32'", "'u64'", "'i8'",
230
- "'i16'", "'i32'", "'i64'", "'f32'", "'f64'", "'bool'", "'ISR'",
231
- "'<<<-'", "'>><-'", "'+<-'", "'-<-'", "'*<-'", "'/<-'", "'%<-'",
232
- "'&<-'", "'|<-'", "'^<-'", "'<-'", "'='", "'!='", "'<'", "'>'",
233
- "'<='", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'&&'", "'||'",
234
- "'!'", "'&'", "'|'", "'^'", "'~'", "'<<'", "'>>'", "'('", "')'",
235
- "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", "'@'", "':'"
227
+ "'else'", "'while'", "'do'", "'for'", "'forever'", "'switch'", "'case'",
228
+ "'default'", "'return'", "'true'", "'false'", "'NULL'", "'string'",
229
+ "'sizeof'", "'bitmap8'", "'bitmap16'", "'bitmap24'", "'bitmap32'",
230
+ "'rw'", "'ro'", "'wo'", "'w1c'", "'w1s'", "'clamp'", "'wrap'", "'atomic'",
231
+ "'critical'", null, null, null, null, "'u8'", "'u16'", "'u32'",
232
+ "'u64'", "'i8'", "'i16'", "'i32'", "'i64'", "'f32'", "'f64'", "'bool'",
233
+ "'ISR'", "'<<<-'", "'>><-'", "'+<-'", "'-<-'", "'*<-'", "'/<-'",
234
+ "'%<-'", "'&<-'", "'|<-'", "'^<-'", "'<-'", "'='", "'!='", "'<'",
235
+ "'>'", "'<='", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'&&'",
236
+ "'||'", "'!'", "'&'", "'|'", "'^'", "'~'", "'<<'", "'>>'", "'('",
237
+ "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", "'@'", "':'"
236
238
  ];
237
239
 
238
240
  public static readonly symbolicNames = [
@@ -240,21 +242,21 @@ export class CNextParser extends antlr.Parser {
240
242
  "DEFINE_FLAG", "IFDEF_DIRECTIVE", "IFNDEF_DIRECTIVE", "ELSE_DIRECTIVE",
241
243
  "ENDIF_DIRECTIVE", "PRAGMA_TARGET", "SCOPE", "STRUCT", "ENUM", "THIS",
242
244
  "GLOBAL", "REGISTER", "PRIVATE", "PUBLIC", "CONST", "VOLATILE",
243
- "VOID", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "CASE", "DEFAULT",
244
- "RETURN", "TRUE", "FALSE", "C_NULL", "STRING", "SIZEOF", "BITMAP8",
245
- "BITMAP16", "BITMAP24", "BITMAP32", "RW", "RO", "WO", "W1C", "W1S",
246
- "CLAMP", "WRAP", "ATOMIC", "CRITICAL", "SUFFIXED_FLOAT", "SUFFIXED_HEX",
247
- "SUFFIXED_BINARY", "SUFFIXED_DECIMAL", "U8", "U16", "U32", "U64",
248
- "I8", "I16", "I32", "I64", "F32", "F64", "BOOL", "ISR_TYPE", "LSHIFT_ASSIGN",
249
- "RSHIFT_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", "STAR_ASSIGN", "SLASH_ASSIGN",
250
- "PERCENT_ASSIGN", "BITAND_ASSIGN", "BITOR_ASSIGN", "BITXOR_ASSIGN",
251
- "ASSIGN", "EQ", "NEQ", "LT", "GT", "LTE", "GTE", "PLUS", "MINUS",
252
- "STAR", "SLASH", "PERCENT", "AND", "OR", "NOT", "BITAND", "BITOR",
253
- "BITXOR", "BITNOT", "LSHIFT", "RSHIFT", "LPAREN", "RPAREN", "LBRACE",
254
- "RBRACE", "LBRACKET", "RBRACKET", "SEMI", "COMMA", "DOT", "AT",
255
- "COLON", "HEX_LITERAL", "BINARY_LITERAL", "FLOAT_LITERAL", "INTEGER_LITERAL",
256
- "STRING_LITERAL", "CHAR_LITERAL", "IDENTIFIER", "DOC_COMMENT", "LINE_COMMENT",
257
- "BLOCK_COMMENT", "WS"
245
+ "VOID", "IF", "ELSE", "WHILE", "DO", "FOR", "FOREVER", "SWITCH",
246
+ "CASE", "DEFAULT", "RETURN", "TRUE", "FALSE", "C_NULL", "STRING",
247
+ "SIZEOF", "BITMAP8", "BITMAP16", "BITMAP24", "BITMAP32", "RW", "RO",
248
+ "WO", "W1C", "W1S", "CLAMP", "WRAP", "ATOMIC", "CRITICAL", "SUFFIXED_FLOAT",
249
+ "SUFFIXED_HEX", "SUFFIXED_BINARY", "SUFFIXED_DECIMAL", "U8", "U16",
250
+ "U32", "U64", "I8", "I16", "I32", "I64", "F32", "F64", "BOOL", "ISR_TYPE",
251
+ "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN",
252
+ "STAR_ASSIGN", "SLASH_ASSIGN", "PERCENT_ASSIGN", "BITAND_ASSIGN",
253
+ "BITOR_ASSIGN", "BITXOR_ASSIGN", "ASSIGN", "EQ", "NEQ", "LT", "GT",
254
+ "LTE", "GTE", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", "AND",
255
+ "OR", "NOT", "BITAND", "BITOR", "BITXOR", "BITNOT", "LSHIFT", "RSHIFT",
256
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET",
257
+ "SEMI", "COMMA", "DOT", "AT", "COLON", "HEX_LITERAL", "BINARY_LITERAL",
258
+ "FLOAT_LITERAL", "INTEGER_LITERAL", "STRING_LITERAL", "CHAR_LITERAL",
259
+ "IDENTIFIER", "DOC_COMMENT", "LINE_COMMENT", "BLOCK_COMMENT", "WS"
258
260
  ];
259
261
  public static readonly ruleNames = [
260
262
  "program", "includeDirective", "preprocessorDirective", "defineDirective",
@@ -267,19 +269,19 @@ export class CNextParser extends antlr.Parser {
267
269
  "variableDeclaration", "constructorArgumentList", "block", "statement",
268
270
  "criticalStatement", "assignmentStatement", "assignmentOperator",
269
271
  "assignmentTarget", "postfixTargetOp", "expressionStatement", "ifStatement",
270
- "whileStatement", "doWhileStatement", "forStatement", "forInit",
271
- "forVarDecl", "forAssignment", "forUpdate", "returnStatement", "switchStatement",
272
- "switchCase", "caseLabel", "defaultCase", "expression", "ternaryExpression",
273
- "orExpression", "andExpression", "equalityExpression", "relationalExpression",
274
- "bitwiseOrExpression", "bitwiseXorExpression", "bitwiseAndExpression",
275
- "shiftExpression", "additiveExpression", "multiplicativeExpression",
276
- "unaryExpression", "postfixExpression", "postfixOp", "primaryExpression",
277
- "sizeofExpression", "castExpression", "structInitializer", "fieldInitializerList",
278
- "fieldInitializer", "arrayInitializer", "arrayInitializerElement",
279
- "argumentList", "type", "scopedType", "globalType", "qualifiedType",
280
- "primitiveType", "userType", "templateType", "templateArgumentList",
281
- "templateArgument", "stringType", "arrayType", "arrayTypeDimension",
282
- "literal",
272
+ "whileStatement", "doWhileStatement", "forStatement", "foreverStatement",
273
+ "forInit", "forVarDecl", "forAssignment", "forUpdate", "returnStatement",
274
+ "switchStatement", "switchCase", "caseLabel", "defaultCase", "expression",
275
+ "ternaryExpression", "orExpression", "andExpression", "equalityExpression",
276
+ "relationalExpression", "bitwiseOrExpression", "bitwiseXorExpression",
277
+ "bitwiseAndExpression", "shiftExpression", "additiveExpression",
278
+ "multiplicativeExpression", "unaryExpression", "postfixExpression",
279
+ "postfixOp", "primaryExpression", "sizeofExpression", "castExpression",
280
+ "structInitializer", "fieldInitializerList", "fieldInitializer",
281
+ "arrayInitializer", "arrayInitializerElement", "argumentList", "type",
282
+ "scopedType", "globalType", "qualifiedType", "primitiveType", "userType",
283
+ "templateType", "templateArgumentList", "templateArgument", "stringType",
284
+ "arrayType", "arrayTypeDimension", "literal",
283
285
  ];
284
286
 
285
287
  public get grammarFileName(): string { return "CNext.g4"; }
@@ -303,17 +305,17 @@ export class CNextParser extends antlr.Parser {
303
305
  try {
304
306
  this.enterOuterAlt(localContext, 1);
305
307
  {
306
- this.state = 180;
308
+ this.state = 182;
307
309
  this.errorHandler.sync(this);
308
310
  _la = this.tokenStream.LA(1);
309
311
  while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2044) !== 0)) {
310
312
  {
311
- this.state = 178;
313
+ this.state = 180;
312
314
  this.errorHandler.sync(this);
313
315
  switch (this.tokenStream.LA(1)) {
314
316
  case CNextParser.INCLUDE_DIRECTIVE:
315
317
  {
316
- this.state = 176;
318
+ this.state = 178;
317
319
  this.includeDirective();
318
320
  }
319
321
  break;
@@ -326,7 +328,7 @@ export class CNextParser extends antlr.Parser {
326
328
  case CNextParser.ENDIF_DIRECTIVE:
327
329
  case CNextParser.PRAGMA_TARGET:
328
330
  {
329
- this.state = 177;
331
+ this.state = 179;
330
332
  this.preprocessorDirective();
331
333
  }
332
334
  break;
@@ -334,25 +336,25 @@ export class CNextParser extends antlr.Parser {
334
336
  throw new antlr.NoViableAltException(this);
335
337
  }
336
338
  }
337
- this.state = 182;
339
+ this.state = 184;
338
340
  this.errorHandler.sync(this);
339
341
  _la = this.tokenStream.LA(1);
340
342
  }
341
- this.state = 186;
343
+ this.state = 188;
342
344
  this.errorHandler.sync(this);
343
345
  _la = this.tokenStream.LA(1);
344
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3799040) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973757) !== 0) || _la === 113) {
346
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3799040) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2146973757) !== 0) || _la === 114) {
345
347
  {
346
348
  {
347
- this.state = 183;
349
+ this.state = 185;
348
350
  this.declaration();
349
351
  }
350
352
  }
351
- this.state = 188;
353
+ this.state = 190;
352
354
  this.errorHandler.sync(this);
353
355
  _la = this.tokenStream.LA(1);
354
356
  }
355
- this.state = 189;
357
+ this.state = 191;
356
358
  this.match(CNextParser.EOF);
357
359
  }
358
360
  }
@@ -375,7 +377,7 @@ export class CNextParser extends antlr.Parser {
375
377
  try {
376
378
  this.enterOuterAlt(localContext, 1);
377
379
  {
378
- this.state = 191;
380
+ this.state = 193;
379
381
  this.match(CNextParser.INCLUDE_DIRECTIVE);
380
382
  }
381
383
  }
@@ -396,7 +398,7 @@ export class CNextParser extends antlr.Parser {
396
398
  let localContext = new PreprocessorDirectiveContext(this.context, this.state);
397
399
  this.enterRule(localContext, 4, CNextParser.RULE_preprocessorDirective);
398
400
  try {
399
- this.state = 196;
401
+ this.state = 198;
400
402
  this.errorHandler.sync(this);
401
403
  switch (this.tokenStream.LA(1)) {
402
404
  case CNextParser.DEFINE_FUNCTION:
@@ -404,7 +406,7 @@ export class CNextParser extends antlr.Parser {
404
406
  case CNextParser.DEFINE_FLAG:
405
407
  this.enterOuterAlt(localContext, 1);
406
408
  {
407
- this.state = 193;
409
+ this.state = 195;
408
410
  this.defineDirective();
409
411
  }
410
412
  break;
@@ -414,14 +416,14 @@ export class CNextParser extends antlr.Parser {
414
416
  case CNextParser.ENDIF_DIRECTIVE:
415
417
  this.enterOuterAlt(localContext, 2);
416
418
  {
417
- this.state = 194;
419
+ this.state = 196;
418
420
  this.conditionalDirective();
419
421
  }
420
422
  break;
421
423
  case CNextParser.PRAGMA_TARGET:
422
424
  this.enterOuterAlt(localContext, 3);
423
425
  {
424
- this.state = 195;
426
+ this.state = 197;
425
427
  this.pragmaDirective();
426
428
  }
427
429
  break;
@@ -449,7 +451,7 @@ export class CNextParser extends antlr.Parser {
449
451
  try {
450
452
  this.enterOuterAlt(localContext, 1);
451
453
  {
452
- this.state = 198;
454
+ this.state = 200;
453
455
  _la = this.tokenStream.LA(1);
454
456
  if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 56) !== 0))) {
455
457
  this.errorHandler.recoverInline(this);
@@ -480,7 +482,7 @@ export class CNextParser extends antlr.Parser {
480
482
  try {
481
483
  this.enterOuterAlt(localContext, 1);
482
484
  {
483
- this.state = 200;
485
+ this.state = 202;
484
486
  _la = this.tokenStream.LA(1);
485
487
  if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 960) !== 0))) {
486
488
  this.errorHandler.recoverInline(this);
@@ -510,7 +512,7 @@ export class CNextParser extends antlr.Parser {
510
512
  try {
511
513
  this.enterOuterAlt(localContext, 1);
512
514
  {
513
- this.state = 202;
515
+ this.state = 204;
514
516
  this.match(CNextParser.PRAGMA_TARGET);
515
517
  }
516
518
  }
@@ -531,55 +533,55 @@ export class CNextParser extends antlr.Parser {
531
533
  let localContext = new DeclarationContext(this.context, this.state);
532
534
  this.enterRule(localContext, 12, CNextParser.RULE_declaration);
533
535
  try {
534
- this.state = 211;
536
+ this.state = 213;
535
537
  this.errorHandler.sync(this);
536
538
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) {
537
539
  case 1:
538
540
  this.enterOuterAlt(localContext, 1);
539
541
  {
540
- this.state = 204;
542
+ this.state = 206;
541
543
  this.scopeDeclaration();
542
544
  }
543
545
  break;
544
546
  case 2:
545
547
  this.enterOuterAlt(localContext, 2);
546
548
  {
547
- this.state = 205;
549
+ this.state = 207;
548
550
  this.registerDeclaration();
549
551
  }
550
552
  break;
551
553
  case 3:
552
554
  this.enterOuterAlt(localContext, 3);
553
555
  {
554
- this.state = 206;
556
+ this.state = 208;
555
557
  this.structDeclaration();
556
558
  }
557
559
  break;
558
560
  case 4:
559
561
  this.enterOuterAlt(localContext, 4);
560
562
  {
561
- this.state = 207;
563
+ this.state = 209;
562
564
  this.enumDeclaration();
563
565
  }
564
566
  break;
565
567
  case 5:
566
568
  this.enterOuterAlt(localContext, 5);
567
569
  {
568
- this.state = 208;
570
+ this.state = 210;
569
571
  this.bitmapDeclaration();
570
572
  }
571
573
  break;
572
574
  case 6:
573
575
  this.enterOuterAlt(localContext, 6);
574
576
  {
575
- this.state = 209;
577
+ this.state = 211;
576
578
  this.functionDeclaration();
577
579
  }
578
580
  break;
579
581
  case 7:
580
582
  this.enterOuterAlt(localContext, 7);
581
583
  {
582
- this.state = 210;
584
+ this.state = 212;
583
585
  this.variableDeclaration();
584
586
  }
585
587
  break;
@@ -605,27 +607,27 @@ export class CNextParser extends antlr.Parser {
605
607
  try {
606
608
  this.enterOuterAlt(localContext, 1);
607
609
  {
608
- this.state = 213;
610
+ this.state = 215;
609
611
  this.match(CNextParser.SCOPE);
610
- this.state = 214;
612
+ this.state = 216;
611
613
  this.match(CNextParser.IDENTIFIER);
612
- this.state = 215;
614
+ this.state = 217;
613
615
  this.match(CNextParser.LBRACE);
614
- this.state = 219;
616
+ this.state = 221;
615
617
  this.errorHandler.sync(this);
616
618
  _la = this.tokenStream.LA(1);
617
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4190208) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973757) !== 0) || _la === 113) {
619
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4190208) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2146973757) !== 0) || _la === 114) {
618
620
  {
619
621
  {
620
- this.state = 216;
622
+ this.state = 218;
621
623
  this.scopeMember();
622
624
  }
623
625
  }
624
- this.state = 221;
626
+ this.state = 223;
625
627
  this.errorHandler.sync(this);
626
628
  _la = this.tokenStream.LA(1);
627
629
  }
628
- this.state = 222;
630
+ this.state = 224;
629
631
  this.match(CNextParser.RBRACE);
630
632
  }
631
633
  }
@@ -647,108 +649,108 @@ export class CNextParser extends antlr.Parser {
647
649
  this.enterRule(localContext, 16, CNextParser.RULE_scopeMember);
648
650
  let _la: number;
649
651
  try {
650
- this.state = 248;
652
+ this.state = 250;
651
653
  this.errorHandler.sync(this);
652
654
  switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) {
653
655
  case 1:
654
656
  this.enterOuterAlt(localContext, 1);
655
657
  {
656
- this.state = 225;
658
+ this.state = 227;
657
659
  this.errorHandler.sync(this);
658
660
  _la = this.tokenStream.LA(1);
659
661
  if (_la === 17 || _la === 18) {
660
662
  {
661
- this.state = 224;
663
+ this.state = 226;
662
664
  this.visibilityModifier();
663
665
  }
664
666
  }
665
667
 
666
- this.state = 227;
668
+ this.state = 229;
667
669
  this.variableDeclaration();
668
670
  }
669
671
  break;
670
672
  case 2:
671
673
  this.enterOuterAlt(localContext, 2);
672
674
  {
673
- this.state = 229;
675
+ this.state = 231;
674
676
  this.errorHandler.sync(this);
675
677
  _la = this.tokenStream.LA(1);
676
678
  if (_la === 17 || _la === 18) {
677
679
  {
678
- this.state = 228;
680
+ this.state = 230;
679
681
  this.visibilityModifier();
680
682
  }
681
683
  }
682
684
 
683
- this.state = 231;
685
+ this.state = 233;
684
686
  this.functionDeclaration();
685
687
  }
686
688
  break;
687
689
  case 3:
688
690
  this.enterOuterAlt(localContext, 3);
689
691
  {
690
- this.state = 233;
692
+ this.state = 235;
691
693
  this.errorHandler.sync(this);
692
694
  _la = this.tokenStream.LA(1);
693
695
  if (_la === 17 || _la === 18) {
694
696
  {
695
- this.state = 232;
697
+ this.state = 234;
696
698
  this.visibilityModifier();
697
699
  }
698
700
  }
699
701
 
700
- this.state = 235;
702
+ this.state = 237;
701
703
  this.enumDeclaration();
702
704
  }
703
705
  break;
704
706
  case 4:
705
707
  this.enterOuterAlt(localContext, 4);
706
708
  {
707
- this.state = 237;
709
+ this.state = 239;
708
710
  this.errorHandler.sync(this);
709
711
  _la = this.tokenStream.LA(1);
710
712
  if (_la === 17 || _la === 18) {
711
713
  {
712
- this.state = 236;
714
+ this.state = 238;
713
715
  this.visibilityModifier();
714
716
  }
715
717
  }
716
718
 
717
- this.state = 239;
719
+ this.state = 241;
718
720
  this.bitmapDeclaration();
719
721
  }
720
722
  break;
721
723
  case 5:
722
724
  this.enterOuterAlt(localContext, 5);
723
725
  {
724
- this.state = 241;
726
+ this.state = 243;
725
727
  this.errorHandler.sync(this);
726
728
  _la = this.tokenStream.LA(1);
727
729
  if (_la === 17 || _la === 18) {
728
730
  {
729
- this.state = 240;
731
+ this.state = 242;
730
732
  this.visibilityModifier();
731
733
  }
732
734
  }
733
735
 
734
- this.state = 243;
736
+ this.state = 245;
735
737
  this.registerDeclaration();
736
738
  }
737
739
  break;
738
740
  case 6:
739
741
  this.enterOuterAlt(localContext, 6);
740
742
  {
741
- this.state = 245;
743
+ this.state = 247;
742
744
  this.errorHandler.sync(this);
743
745
  _la = this.tokenStream.LA(1);
744
746
  if (_la === 17 || _la === 18) {
745
747
  {
746
- this.state = 244;
748
+ this.state = 246;
747
749
  this.visibilityModifier();
748
750
  }
749
751
  }
750
752
 
751
- this.state = 247;
753
+ this.state = 249;
752
754
  this.structDeclaration();
753
755
  }
754
756
  break;
@@ -774,7 +776,7 @@ export class CNextParser extends antlr.Parser {
774
776
  try {
775
777
  this.enterOuterAlt(localContext, 1);
776
778
  {
777
- this.state = 250;
779
+ this.state = 252;
778
780
  _la = this.tokenStream.LA(1);
779
781
  if(!(_la === 17 || _la === 18)) {
780
782
  this.errorHandler.recoverInline(this);
@@ -805,31 +807,31 @@ export class CNextParser extends antlr.Parser {
805
807
  try {
806
808
  this.enterOuterAlt(localContext, 1);
807
809
  {
808
- this.state = 252;
810
+ this.state = 254;
809
811
  this.match(CNextParser.REGISTER);
810
- this.state = 253;
812
+ this.state = 255;
811
813
  this.match(CNextParser.IDENTIFIER);
812
- this.state = 254;
814
+ this.state = 256;
813
815
  this.match(CNextParser.AT);
814
- this.state = 255;
816
+ this.state = 257;
815
817
  this.expression();
816
- this.state = 256;
818
+ this.state = 258;
817
819
  this.match(CNextParser.LBRACE);
818
- this.state = 260;
820
+ this.state = 262;
819
821
  this.errorHandler.sync(this);
820
822
  _la = this.tokenStream.LA(1);
821
- while (_la === 113) {
823
+ while (_la === 114) {
822
824
  {
823
825
  {
824
- this.state = 257;
826
+ this.state = 259;
825
827
  this.registerMember();
826
828
  }
827
829
  }
828
- this.state = 262;
830
+ this.state = 264;
829
831
  this.errorHandler.sync(this);
830
832
  _la = this.tokenStream.LA(1);
831
833
  }
832
- this.state = 263;
834
+ this.state = 265;
833
835
  this.match(CNextParser.RBRACE);
834
836
  }
835
837
  }
@@ -853,24 +855,24 @@ export class CNextParser extends antlr.Parser {
853
855
  try {
854
856
  this.enterOuterAlt(localContext, 1);
855
857
  {
856
- this.state = 265;
858
+ this.state = 267;
857
859
  this.match(CNextParser.IDENTIFIER);
858
- this.state = 266;
860
+ this.state = 268;
859
861
  this.match(CNextParser.COLON);
860
- this.state = 267;
862
+ this.state = 269;
861
863
  this.type_();
862
- this.state = 268;
864
+ this.state = 270;
863
865
  this.accessModifier();
864
- this.state = 269;
866
+ this.state = 271;
865
867
  this.match(CNextParser.AT);
866
- this.state = 270;
867
- this.expression();
868
868
  this.state = 272;
869
+ this.expression();
870
+ this.state = 274;
869
871
  this.errorHandler.sync(this);
870
872
  _la = this.tokenStream.LA(1);
871
- if (_la === 103) {
873
+ if (_la === 104) {
872
874
  {
873
- this.state = 271;
875
+ this.state = 273;
874
876
  this.match(CNextParser.COMMA);
875
877
  }
876
878
  }
@@ -897,9 +899,9 @@ export class CNextParser extends antlr.Parser {
897
899
  try {
898
900
  this.enterOuterAlt(localContext, 1);
899
901
  {
900
- this.state = 274;
902
+ this.state = 276;
901
903
  _la = this.tokenStream.LA(1);
902
- if(!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 31) !== 0))) {
904
+ if(!(((((_la - 41)) & ~0x1F) === 0 && ((1 << (_la - 41)) & 31) !== 0))) {
903
905
  this.errorHandler.recoverInline(this);
904
906
  }
905
907
  else {
@@ -928,27 +930,27 @@ export class CNextParser extends antlr.Parser {
928
930
  try {
929
931
  this.enterOuterAlt(localContext, 1);
930
932
  {
931
- this.state = 276;
933
+ this.state = 278;
932
934
  this.match(CNextParser.STRUCT);
933
- this.state = 277;
935
+ this.state = 279;
934
936
  this.match(CNextParser.IDENTIFIER);
935
- this.state = 278;
937
+ this.state = 280;
936
938
  this.match(CNextParser.LBRACE);
937
- this.state = 282;
939
+ this.state = 284;
938
940
  this.errorHandler.sync(this);
939
941
  _la = this.tokenStream.LA(1);
940
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2146304) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146959361) !== 0) || _la === 113) {
942
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2146304) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2146959361) !== 0) || _la === 114) {
941
943
  {
942
944
  {
943
- this.state = 279;
945
+ this.state = 281;
944
946
  this.structMember();
945
947
  }
946
948
  }
947
- this.state = 284;
949
+ this.state = 286;
948
950
  this.errorHandler.sync(this);
949
951
  _la = this.tokenStream.LA(1);
950
952
  }
951
- this.state = 285;
953
+ this.state = 287;
952
954
  this.match(CNextParser.RBRACE);
953
955
  }
954
956
  }
@@ -972,25 +974,25 @@ export class CNextParser extends antlr.Parser {
972
974
  try {
973
975
  this.enterOuterAlt(localContext, 1);
974
976
  {
975
- this.state = 287;
977
+ this.state = 289;
976
978
  this.type_();
977
- this.state = 288;
979
+ this.state = 290;
978
980
  this.match(CNextParser.IDENTIFIER);
979
- this.state = 292;
981
+ this.state = 294;
980
982
  this.errorHandler.sync(this);
981
983
  _la = this.tokenStream.LA(1);
982
- while (_la === 100) {
984
+ while (_la === 101) {
983
985
  {
984
986
  {
985
- this.state = 289;
987
+ this.state = 291;
986
988
  this.arrayDimension();
987
989
  }
988
990
  }
989
- this.state = 294;
991
+ this.state = 296;
990
992
  this.errorHandler.sync(this);
991
993
  _la = this.tokenStream.LA(1);
992
994
  }
993
- this.state = 295;
995
+ this.state = 297;
994
996
  this.match(CNextParser.SEMI);
995
997
  }
996
998
  }
@@ -1015,43 +1017,43 @@ export class CNextParser extends antlr.Parser {
1015
1017
  let alternative: number;
1016
1018
  this.enterOuterAlt(localContext, 1);
1017
1019
  {
1018
- this.state = 297;
1020
+ this.state = 299;
1019
1021
  this.match(CNextParser.ENUM);
1020
- this.state = 298;
1022
+ this.state = 300;
1021
1023
  this.match(CNextParser.IDENTIFIER);
1022
- this.state = 299;
1024
+ this.state = 301;
1023
1025
  this.match(CNextParser.LBRACE);
1024
- this.state = 300;
1026
+ this.state = 302;
1025
1027
  this.enumMember();
1026
- this.state = 305;
1028
+ this.state = 307;
1027
1029
  this.errorHandler.sync(this);
1028
1030
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 17, this.context);
1029
1031
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1030
1032
  if (alternative === 1) {
1031
1033
  {
1032
1034
  {
1033
- this.state = 301;
1035
+ this.state = 303;
1034
1036
  this.match(CNextParser.COMMA);
1035
- this.state = 302;
1037
+ this.state = 304;
1036
1038
  this.enumMember();
1037
1039
  }
1038
1040
  }
1039
1041
  }
1040
- this.state = 307;
1042
+ this.state = 309;
1041
1043
  this.errorHandler.sync(this);
1042
1044
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 17, this.context);
1043
1045
  }
1044
- this.state = 309;
1046
+ this.state = 311;
1045
1047
  this.errorHandler.sync(this);
1046
1048
  _la = this.tokenStream.LA(1);
1047
- if (_la === 103) {
1049
+ if (_la === 104) {
1048
1050
  {
1049
- this.state = 308;
1051
+ this.state = 310;
1050
1052
  this.match(CNextParser.COMMA);
1051
1053
  }
1052
1054
  }
1053
1055
 
1054
- this.state = 311;
1056
+ this.state = 313;
1055
1057
  this.match(CNextParser.RBRACE);
1056
1058
  }
1057
1059
  }
@@ -1075,16 +1077,16 @@ export class CNextParser extends antlr.Parser {
1075
1077
  try {
1076
1078
  this.enterOuterAlt(localContext, 1);
1077
1079
  {
1078
- this.state = 313;
1080
+ this.state = 315;
1079
1081
  this.match(CNextParser.IDENTIFIER);
1080
- this.state = 316;
1082
+ this.state = 318;
1081
1083
  this.errorHandler.sync(this);
1082
1084
  _la = this.tokenStream.LA(1);
1083
- if (_la === 75) {
1085
+ if (_la === 76) {
1084
1086
  {
1085
- this.state = 314;
1087
+ this.state = 316;
1086
1088
  this.match(CNextParser.ASSIGN);
1087
- this.state = 315;
1089
+ this.state = 317;
1088
1090
  this.expression();
1089
1091
  }
1090
1092
  }
@@ -1112,43 +1114,43 @@ export class CNextParser extends antlr.Parser {
1112
1114
  let alternative: number;
1113
1115
  this.enterOuterAlt(localContext, 1);
1114
1116
  {
1115
- this.state = 318;
1117
+ this.state = 320;
1116
1118
  this.bitmapType();
1117
- this.state = 319;
1119
+ this.state = 321;
1118
1120
  this.match(CNextParser.IDENTIFIER);
1119
- this.state = 320;
1121
+ this.state = 322;
1120
1122
  this.match(CNextParser.LBRACE);
1121
- this.state = 321;
1123
+ this.state = 323;
1122
1124
  this.bitmapMember();
1123
- this.state = 326;
1125
+ this.state = 328;
1124
1126
  this.errorHandler.sync(this);
1125
1127
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 20, this.context);
1126
1128
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1127
1129
  if (alternative === 1) {
1128
1130
  {
1129
1131
  {
1130
- this.state = 322;
1132
+ this.state = 324;
1131
1133
  this.match(CNextParser.COMMA);
1132
- this.state = 323;
1134
+ this.state = 325;
1133
1135
  this.bitmapMember();
1134
1136
  }
1135
1137
  }
1136
1138
  }
1137
- this.state = 328;
1139
+ this.state = 330;
1138
1140
  this.errorHandler.sync(this);
1139
1141
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 20, this.context);
1140
1142
  }
1141
- this.state = 330;
1143
+ this.state = 332;
1142
1144
  this.errorHandler.sync(this);
1143
1145
  _la = this.tokenStream.LA(1);
1144
- if (_la === 103) {
1146
+ if (_la === 104) {
1145
1147
  {
1146
- this.state = 329;
1148
+ this.state = 331;
1147
1149
  this.match(CNextParser.COMMA);
1148
1150
  }
1149
1151
  }
1150
1152
 
1151
- this.state = 332;
1153
+ this.state = 334;
1152
1154
  this.match(CNextParser.RBRACE);
1153
1155
  }
1154
1156
  }
@@ -1172,9 +1174,9 @@ export class CNextParser extends antlr.Parser {
1172
1174
  try {
1173
1175
  this.enterOuterAlt(localContext, 1);
1174
1176
  {
1175
- this.state = 334;
1177
+ this.state = 336;
1176
1178
  _la = this.tokenStream.LA(1);
1177
- if(!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 15) !== 0))) {
1179
+ if(!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 15) !== 0))) {
1178
1180
  this.errorHandler.recoverInline(this);
1179
1181
  }
1180
1182
  else {
@@ -1203,18 +1205,18 @@ export class CNextParser extends antlr.Parser {
1203
1205
  try {
1204
1206
  this.enterOuterAlt(localContext, 1);
1205
1207
  {
1206
- this.state = 336;
1208
+ this.state = 338;
1207
1209
  this.match(CNextParser.IDENTIFIER);
1208
- this.state = 340;
1210
+ this.state = 342;
1209
1211
  this.errorHandler.sync(this);
1210
1212
  _la = this.tokenStream.LA(1);
1211
- if (_la === 100) {
1213
+ if (_la === 101) {
1212
1214
  {
1213
- this.state = 337;
1215
+ this.state = 339;
1214
1216
  this.match(CNextParser.LBRACKET);
1215
- this.state = 338;
1217
+ this.state = 340;
1216
1218
  this.match(CNextParser.INTEGER_LITERAL);
1217
- this.state = 339;
1219
+ this.state = 341;
1218
1220
  this.match(CNextParser.RBRACKET);
1219
1221
  }
1220
1222
  }
@@ -1241,25 +1243,25 @@ export class CNextParser extends antlr.Parser {
1241
1243
  try {
1242
1244
  this.enterOuterAlt(localContext, 1);
1243
1245
  {
1244
- this.state = 342;
1246
+ this.state = 344;
1245
1247
  this.type_();
1246
- this.state = 343;
1248
+ this.state = 345;
1247
1249
  this.match(CNextParser.IDENTIFIER);
1248
- this.state = 344;
1249
- this.match(CNextParser.LPAREN);
1250
1250
  this.state = 346;
1251
+ this.match(CNextParser.LPAREN);
1252
+ this.state = 348;
1251
1253
  this.errorHandler.sync(this);
1252
1254
  _la = this.tokenStream.LA(1);
1253
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2670592) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146959361) !== 0) || _la === 113) {
1255
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2670592) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2146959361) !== 0) || _la === 114) {
1254
1256
  {
1255
- this.state = 345;
1257
+ this.state = 347;
1256
1258
  this.parameterList();
1257
1259
  }
1258
1260
  }
1259
1261
 
1260
- this.state = 348;
1262
+ this.state = 350;
1261
1263
  this.match(CNextParser.RPAREN);
1262
- this.state = 349;
1264
+ this.state = 351;
1263
1265
  this.block();
1264
1266
  }
1265
1267
  }
@@ -1283,21 +1285,21 @@ export class CNextParser extends antlr.Parser {
1283
1285
  try {
1284
1286
  this.enterOuterAlt(localContext, 1);
1285
1287
  {
1286
- this.state = 351;
1288
+ this.state = 353;
1287
1289
  this.parameter();
1288
- this.state = 356;
1290
+ this.state = 358;
1289
1291
  this.errorHandler.sync(this);
1290
1292
  _la = this.tokenStream.LA(1);
1291
- while (_la === 103) {
1293
+ while (_la === 104) {
1292
1294
  {
1293
1295
  {
1294
- this.state = 352;
1296
+ this.state = 354;
1295
1297
  this.match(CNextParser.COMMA);
1296
- this.state = 353;
1298
+ this.state = 355;
1297
1299
  this.parameter();
1298
1300
  }
1299
1301
  }
1300
- this.state = 358;
1302
+ this.state = 360;
1301
1303
  this.errorHandler.sync(this);
1302
1304
  _la = this.tokenStream.LA(1);
1303
1305
  }
@@ -1323,31 +1325,31 @@ export class CNextParser extends antlr.Parser {
1323
1325
  try {
1324
1326
  this.enterOuterAlt(localContext, 1);
1325
1327
  {
1326
- this.state = 360;
1328
+ this.state = 362;
1327
1329
  this.errorHandler.sync(this);
1328
1330
  _la = this.tokenStream.LA(1);
1329
1331
  if (_la === 19) {
1330
1332
  {
1331
- this.state = 359;
1333
+ this.state = 361;
1332
1334
  this.constModifier();
1333
1335
  }
1334
1336
  }
1335
1337
 
1336
- this.state = 362;
1338
+ this.state = 364;
1337
1339
  this.type_();
1338
- this.state = 363;
1340
+ this.state = 365;
1339
1341
  this.match(CNextParser.IDENTIFIER);
1340
- this.state = 367;
1342
+ this.state = 369;
1341
1343
  this.errorHandler.sync(this);
1342
1344
  _la = this.tokenStream.LA(1);
1343
- while (_la === 100) {
1345
+ while (_la === 101) {
1344
1346
  {
1345
1347
  {
1346
- this.state = 364;
1348
+ this.state = 366;
1347
1349
  this.arrayDimension();
1348
1350
  }
1349
1351
  }
1350
- this.state = 369;
1352
+ this.state = 371;
1351
1353
  this.errorHandler.sync(this);
1352
1354
  _la = this.tokenStream.LA(1);
1353
1355
  }
@@ -1372,7 +1374,7 @@ export class CNextParser extends antlr.Parser {
1372
1374
  try {
1373
1375
  this.enterOuterAlt(localContext, 1);
1374
1376
  {
1375
- this.state = 370;
1377
+ this.state = 372;
1376
1378
  this.match(CNextParser.CONST);
1377
1379
  }
1378
1380
  }
@@ -1395,7 +1397,7 @@ export class CNextParser extends antlr.Parser {
1395
1397
  try {
1396
1398
  this.enterOuterAlt(localContext, 1);
1397
1399
  {
1398
- this.state = 372;
1400
+ this.state = 374;
1399
1401
  this.match(CNextParser.VOLATILE);
1400
1402
  }
1401
1403
  }
@@ -1419,9 +1421,9 @@ export class CNextParser extends antlr.Parser {
1419
1421
  try {
1420
1422
  this.enterOuterAlt(localContext, 1);
1421
1423
  {
1422
- this.state = 374;
1424
+ this.state = 376;
1423
1425
  _la = this.tokenStream.LA(1);
1424
- if(!(_la === 45 || _la === 46)) {
1426
+ if(!(_la === 46 || _la === 47)) {
1425
1427
  this.errorHandler.recoverInline(this);
1426
1428
  }
1427
1429
  else {
@@ -1449,7 +1451,7 @@ export class CNextParser extends antlr.Parser {
1449
1451
  try {
1450
1452
  this.enterOuterAlt(localContext, 1);
1451
1453
  {
1452
- this.state = 376;
1454
+ this.state = 378;
1453
1455
  this.match(CNextParser.ATOMIC);
1454
1456
  }
1455
1457
  }
@@ -1473,19 +1475,19 @@ export class CNextParser extends antlr.Parser {
1473
1475
  try {
1474
1476
  this.enterOuterAlt(localContext, 1);
1475
1477
  {
1476
- this.state = 378;
1477
- this.match(CNextParser.LBRACKET);
1478
1478
  this.state = 380;
1479
+ this.match(CNextParser.LBRACKET);
1480
+ this.state = 382;
1479
1481
  this.errorHandler.sync(this);
1480
1482
  _la = this.tokenStream.LA(1);
1481
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147532800) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1966091) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
1483
+ if (_la === 14 || _la === 15 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932183) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
1482
1484
  {
1483
- this.state = 379;
1485
+ this.state = 381;
1484
1486
  this.expression();
1485
1487
  }
1486
1488
  }
1487
1489
 
1488
- this.state = 382;
1490
+ this.state = 384;
1489
1491
  this.match(CNextParser.RBRACKET);
1490
1492
  }
1491
1493
  }
@@ -1507,100 +1509,100 @@ export class CNextParser extends antlr.Parser {
1507
1509
  this.enterRule(localContext, 56, CNextParser.RULE_variableDeclaration);
1508
1510
  let _la: number;
1509
1511
  try {
1510
- this.state = 417;
1512
+ this.state = 419;
1511
1513
  this.errorHandler.sync(this);
1512
1514
  switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) {
1513
1515
  case 1:
1514
1516
  this.enterOuterAlt(localContext, 1);
1515
1517
  {
1516
- this.state = 385;
1518
+ this.state = 387;
1517
1519
  this.errorHandler.sync(this);
1518
1520
  _la = this.tokenStream.LA(1);
1519
- if (_la === 47) {
1521
+ if (_la === 48) {
1520
1522
  {
1521
- this.state = 384;
1523
+ this.state = 386;
1522
1524
  this.atomicModifier();
1523
1525
  }
1524
1526
  }
1525
1527
 
1526
- this.state = 388;
1528
+ this.state = 390;
1527
1529
  this.errorHandler.sync(this);
1528
1530
  _la = this.tokenStream.LA(1);
1529
1531
  if (_la === 20) {
1530
1532
  {
1531
- this.state = 387;
1533
+ this.state = 389;
1532
1534
  this.volatileModifier();
1533
1535
  }
1534
1536
  }
1535
1537
 
1536
- this.state = 391;
1538
+ this.state = 393;
1537
1539
  this.errorHandler.sync(this);
1538
1540
  _la = this.tokenStream.LA(1);
1539
1541
  if (_la === 19) {
1540
1542
  {
1541
- this.state = 390;
1543
+ this.state = 392;
1542
1544
  this.constModifier();
1543
1545
  }
1544
1546
  }
1545
1547
 
1546
- this.state = 394;
1548
+ this.state = 396;
1547
1549
  this.errorHandler.sync(this);
1548
1550
  _la = this.tokenStream.LA(1);
1549
- if (_la === 45 || _la === 46) {
1551
+ if (_la === 46 || _la === 47) {
1550
1552
  {
1551
- this.state = 393;
1553
+ this.state = 395;
1552
1554
  this.overflowModifier();
1553
1555
  }
1554
1556
  }
1555
1557
 
1556
- this.state = 396;
1558
+ this.state = 398;
1557
1559
  this.type_();
1558
- this.state = 397;
1560
+ this.state = 399;
1559
1561
  this.match(CNextParser.IDENTIFIER);
1560
- this.state = 401;
1562
+ this.state = 403;
1561
1563
  this.errorHandler.sync(this);
1562
1564
  _la = this.tokenStream.LA(1);
1563
- while (_la === 100) {
1565
+ while (_la === 101) {
1564
1566
  {
1565
1567
  {
1566
- this.state = 398;
1568
+ this.state = 400;
1567
1569
  this.arrayDimension();
1568
1570
  }
1569
1571
  }
1570
- this.state = 403;
1572
+ this.state = 405;
1571
1573
  this.errorHandler.sync(this);
1572
1574
  _la = this.tokenStream.LA(1);
1573
1575
  }
1574
- this.state = 406;
1576
+ this.state = 408;
1575
1577
  this.errorHandler.sync(this);
1576
1578
  _la = this.tokenStream.LA(1);
1577
- if (_la === 75) {
1579
+ if (_la === 76) {
1578
1580
  {
1579
- this.state = 404;
1581
+ this.state = 406;
1580
1582
  this.match(CNextParser.ASSIGN);
1581
- this.state = 405;
1583
+ this.state = 407;
1582
1584
  this.expression();
1583
1585
  }
1584
1586
  }
1585
1587
 
1586
- this.state = 408;
1588
+ this.state = 410;
1587
1589
  this.match(CNextParser.SEMI);
1588
1590
  }
1589
1591
  break;
1590
1592
  case 2:
1591
1593
  this.enterOuterAlt(localContext, 2);
1592
1594
  {
1593
- this.state = 410;
1595
+ this.state = 412;
1594
1596
  this.type_();
1595
- this.state = 411;
1597
+ this.state = 413;
1596
1598
  this.match(CNextParser.IDENTIFIER);
1597
- this.state = 412;
1599
+ this.state = 414;
1598
1600
  this.match(CNextParser.LPAREN);
1599
- this.state = 413;
1601
+ this.state = 415;
1600
1602
  this.constructorArgumentList();
1601
- this.state = 414;
1603
+ this.state = 416;
1602
1604
  this.match(CNextParser.RPAREN);
1603
- this.state = 415;
1605
+ this.state = 417;
1604
1606
  this.match(CNextParser.SEMI);
1605
1607
  }
1606
1608
  break;
@@ -1626,21 +1628,21 @@ export class CNextParser extends antlr.Parser {
1626
1628
  try {
1627
1629
  this.enterOuterAlt(localContext, 1);
1628
1630
  {
1629
- this.state = 419;
1631
+ this.state = 421;
1630
1632
  this.match(CNextParser.IDENTIFIER);
1631
- this.state = 424;
1633
+ this.state = 426;
1632
1634
  this.errorHandler.sync(this);
1633
1635
  _la = this.tokenStream.LA(1);
1634
- while (_la === 103) {
1636
+ while (_la === 104) {
1635
1637
  {
1636
1638
  {
1637
- this.state = 420;
1639
+ this.state = 422;
1638
1640
  this.match(CNextParser.COMMA);
1639
- this.state = 421;
1641
+ this.state = 423;
1640
1642
  this.match(CNextParser.IDENTIFIER);
1641
1643
  }
1642
1644
  }
1643
- this.state = 426;
1645
+ this.state = 428;
1644
1646
  this.errorHandler.sync(this);
1645
1647
  _la = this.tokenStream.LA(1);
1646
1648
  }
@@ -1666,23 +1668,23 @@ export class CNextParser extends antlr.Parser {
1666
1668
  try {
1667
1669
  this.enterOuterAlt(localContext, 1);
1668
1670
  {
1669
- this.state = 427;
1671
+ this.state = 429;
1670
1672
  this.match(CNextParser.LBRACE);
1671
- this.state = 431;
1673
+ this.state = 433;
1672
1674
  this.errorHandler.sync(this);
1673
1675
  _la = this.tokenStream.LA(1);
1674
- while (((((_la - 14)) & ~0x1F) === 0 && ((1 << (_la - 14)) & 2151628259) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 524287) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
1676
+ while (((((_la - 14)) & ~0x1F) === 0 && ((1 << (_la - 14)) & 8289763) !== 0) || ((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 1048575) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
1675
1677
  {
1676
1678
  {
1677
- this.state = 428;
1679
+ this.state = 430;
1678
1680
  this.statement();
1679
1681
  }
1680
1682
  }
1681
- this.state = 433;
1683
+ this.state = 435;
1682
1684
  this.errorHandler.sync(this);
1683
1685
  _la = this.tokenStream.LA(1);
1684
1686
  }
1685
- this.state = 434;
1687
+ this.state = 436;
1686
1688
  this.match(CNextParser.RBRACE);
1687
1689
  }
1688
1690
  }
@@ -1703,83 +1705,90 @@ export class CNextParser extends antlr.Parser {
1703
1705
  let localContext = new StatementContext(this.context, this.state);
1704
1706
  this.enterRule(localContext, 62, CNextParser.RULE_statement);
1705
1707
  try {
1706
- this.state = 447;
1708
+ this.state = 450;
1707
1709
  this.errorHandler.sync(this);
1708
1710
  switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) {
1709
1711
  case 1:
1710
1712
  this.enterOuterAlt(localContext, 1);
1711
1713
  {
1712
- this.state = 436;
1714
+ this.state = 438;
1713
1715
  this.variableDeclaration();
1714
1716
  }
1715
1717
  break;
1716
1718
  case 2:
1717
1719
  this.enterOuterAlt(localContext, 2);
1718
1720
  {
1719
- this.state = 437;
1721
+ this.state = 439;
1720
1722
  this.assignmentStatement();
1721
1723
  }
1722
1724
  break;
1723
1725
  case 3:
1724
1726
  this.enterOuterAlt(localContext, 3);
1725
1727
  {
1726
- this.state = 438;
1728
+ this.state = 440;
1727
1729
  this.expressionStatement();
1728
1730
  }
1729
1731
  break;
1730
1732
  case 4:
1731
1733
  this.enterOuterAlt(localContext, 4);
1732
1734
  {
1733
- this.state = 439;
1735
+ this.state = 441;
1734
1736
  this.ifStatement();
1735
1737
  }
1736
1738
  break;
1737
1739
  case 5:
1738
1740
  this.enterOuterAlt(localContext, 5);
1739
1741
  {
1740
- this.state = 440;
1742
+ this.state = 442;
1741
1743
  this.whileStatement();
1742
1744
  }
1743
1745
  break;
1744
1746
  case 6:
1745
1747
  this.enterOuterAlt(localContext, 6);
1746
1748
  {
1747
- this.state = 441;
1749
+ this.state = 443;
1748
1750
  this.doWhileStatement();
1749
1751
  }
1750
1752
  break;
1751
1753
  case 7:
1752
1754
  this.enterOuterAlt(localContext, 7);
1753
1755
  {
1754
- this.state = 442;
1756
+ this.state = 444;
1755
1757
  this.forStatement();
1756
1758
  }
1757
1759
  break;
1758
1760
  case 8:
1759
1761
  this.enterOuterAlt(localContext, 8);
1760
1762
  {
1761
- this.state = 443;
1762
- this.switchStatement();
1763
+ this.state = 445;
1764
+ this.foreverStatement();
1763
1765
  }
1764
1766
  break;
1765
1767
  case 9:
1766
1768
  this.enterOuterAlt(localContext, 9);
1767
1769
  {
1768
- this.state = 444;
1769
- this.returnStatement();
1770
+ this.state = 446;
1771
+ this.switchStatement();
1770
1772
  }
1771
1773
  break;
1772
1774
  case 10:
1773
1775
  this.enterOuterAlt(localContext, 10);
1774
1776
  {
1775
- this.state = 445;
1776
- this.criticalStatement();
1777
+ this.state = 447;
1778
+ this.returnStatement();
1777
1779
  }
1778
1780
  break;
1779
1781
  case 11:
1780
1782
  this.enterOuterAlt(localContext, 11);
1781
1783
  {
1782
- this.state = 446;
1784
+ this.state = 448;
1785
+ this.criticalStatement();
1786
+ }
1787
+ break;
1788
+ case 12:
1789
+ this.enterOuterAlt(localContext, 12);
1790
+ {
1791
+ this.state = 449;
1783
1792
  this.block();
1784
1793
  }
1785
1794
  break;
@@ -1804,9 +1813,9 @@ export class CNextParser extends antlr.Parser {
1804
1813
  try {
1805
1814
  this.enterOuterAlt(localContext, 1);
1806
1815
  {
1807
- this.state = 449;
1816
+ this.state = 452;
1808
1817
  this.match(CNextParser.CRITICAL);
1809
- this.state = 450;
1818
+ this.state = 453;
1810
1819
  this.block();
1811
1820
  }
1812
1821
  }
@@ -1829,13 +1838,13 @@ export class CNextParser extends antlr.Parser {
1829
1838
  try {
1830
1839
  this.enterOuterAlt(localContext, 1);
1831
1840
  {
1832
- this.state = 452;
1841
+ this.state = 455;
1833
1842
  this.assignmentTarget();
1834
- this.state = 453;
1843
+ this.state = 456;
1835
1844
  this.assignmentOperator();
1836
- this.state = 454;
1845
+ this.state = 457;
1837
1846
  this.expression();
1838
- this.state = 455;
1847
+ this.state = 458;
1839
1848
  this.match(CNextParser.SEMI);
1840
1849
  }
1841
1850
  }
@@ -1859,9 +1868,9 @@ export class CNextParser extends antlr.Parser {
1859
1868
  try {
1860
1869
  this.enterOuterAlt(localContext, 1);
1861
1870
  {
1862
- this.state = 457;
1871
+ this.state = 460;
1863
1872
  _la = this.tokenStream.LA(1);
1864
- if(!(((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2047) !== 0))) {
1873
+ if(!(((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 2047) !== 0))) {
1865
1874
  this.errorHandler.recoverInline(this);
1866
1875
  }
1867
1876
  else {
@@ -1888,29 +1897,29 @@ export class CNextParser extends antlr.Parser {
1888
1897
  this.enterRule(localContext, 70, CNextParser.RULE_assignmentTarget);
1889
1898
  let _la: number;
1890
1899
  try {
1891
- this.state = 484;
1900
+ this.state = 487;
1892
1901
  this.errorHandler.sync(this);
1893
1902
  switch (this.tokenStream.LA(1)) {
1894
1903
  case CNextParser.GLOBAL:
1895
1904
  this.enterOuterAlt(localContext, 1);
1896
1905
  {
1897
- this.state = 459;
1906
+ this.state = 462;
1898
1907
  this.match(CNextParser.GLOBAL);
1899
- this.state = 460;
1908
+ this.state = 463;
1900
1909
  this.match(CNextParser.DOT);
1901
- this.state = 461;
1910
+ this.state = 464;
1902
1911
  this.match(CNextParser.IDENTIFIER);
1903
- this.state = 465;
1912
+ this.state = 468;
1904
1913
  this.errorHandler.sync(this);
1905
1914
  _la = this.tokenStream.LA(1);
1906
- while (_la === 100 || _la === 104) {
1915
+ while (_la === 101 || _la === 105) {
1907
1916
  {
1908
1917
  {
1909
- this.state = 462;
1918
+ this.state = 465;
1910
1919
  this.postfixTargetOp();
1911
1920
  }
1912
1921
  }
1913
- this.state = 467;
1922
+ this.state = 470;
1914
1923
  this.errorHandler.sync(this);
1915
1924
  _la = this.tokenStream.LA(1);
1916
1925
  }
@@ -1919,23 +1928,23 @@ export class CNextParser extends antlr.Parser {
1919
1928
  case CNextParser.THIS:
1920
1929
  this.enterOuterAlt(localContext, 2);
1921
1930
  {
1922
- this.state = 468;
1931
+ this.state = 471;
1923
1932
  this.match(CNextParser.THIS);
1924
- this.state = 469;
1933
+ this.state = 472;
1925
1934
  this.match(CNextParser.DOT);
1926
- this.state = 470;
1935
+ this.state = 473;
1927
1936
  this.match(CNextParser.IDENTIFIER);
1928
- this.state = 474;
1937
+ this.state = 477;
1929
1938
  this.errorHandler.sync(this);
1930
1939
  _la = this.tokenStream.LA(1);
1931
- while (_la === 100 || _la === 104) {
1940
+ while (_la === 101 || _la === 105) {
1932
1941
  {
1933
1942
  {
1934
- this.state = 471;
1943
+ this.state = 474;
1935
1944
  this.postfixTargetOp();
1936
1945
  }
1937
1946
  }
1938
- this.state = 476;
1947
+ this.state = 479;
1939
1948
  this.errorHandler.sync(this);
1940
1949
  _la = this.tokenStream.LA(1);
1941
1950
  }
@@ -1944,19 +1953,19 @@ export class CNextParser extends antlr.Parser {
1944
1953
  case CNextParser.IDENTIFIER:
1945
1954
  this.enterOuterAlt(localContext, 3);
1946
1955
  {
1947
- this.state = 477;
1956
+ this.state = 480;
1948
1957
  this.match(CNextParser.IDENTIFIER);
1949
- this.state = 481;
1958
+ this.state = 484;
1950
1959
  this.errorHandler.sync(this);
1951
1960
  _la = this.tokenStream.LA(1);
1952
- while (_la === 100 || _la === 104) {
1961
+ while (_la === 101 || _la === 105) {
1953
1962
  {
1954
1963
  {
1955
- this.state = 478;
1964
+ this.state = 481;
1956
1965
  this.postfixTargetOp();
1957
1966
  }
1958
1967
  }
1959
- this.state = 483;
1968
+ this.state = 486;
1960
1969
  this.errorHandler.sync(this);
1961
1970
  _la = this.tokenStream.LA(1);
1962
1971
  }
@@ -1983,41 +1992,41 @@ export class CNextParser extends antlr.Parser {
1983
1992
  let localContext = new PostfixTargetOpContext(this.context, this.state);
1984
1993
  this.enterRule(localContext, 72, CNextParser.RULE_postfixTargetOp);
1985
1994
  try {
1986
- this.state = 498;
1995
+ this.state = 501;
1987
1996
  this.errorHandler.sync(this);
1988
1997
  switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context) ) {
1989
1998
  case 1:
1990
1999
  this.enterOuterAlt(localContext, 1);
1991
2000
  {
1992
- this.state = 486;
2001
+ this.state = 489;
1993
2002
  this.match(CNextParser.DOT);
1994
- this.state = 487;
2003
+ this.state = 490;
1995
2004
  this.match(CNextParser.IDENTIFIER);
1996
2005
  }
1997
2006
  break;
1998
2007
  case 2:
1999
2008
  this.enterOuterAlt(localContext, 2);
2000
2009
  {
2001
- this.state = 488;
2010
+ this.state = 491;
2002
2011
  this.match(CNextParser.LBRACKET);
2003
- this.state = 489;
2012
+ this.state = 492;
2004
2013
  this.expression();
2005
- this.state = 490;
2014
+ this.state = 493;
2006
2015
  this.match(CNextParser.RBRACKET);
2007
2016
  }
2008
2017
  break;
2009
2018
  case 3:
2010
2019
  this.enterOuterAlt(localContext, 3);
2011
2020
  {
2012
- this.state = 492;
2021
+ this.state = 495;
2013
2022
  this.match(CNextParser.LBRACKET);
2014
- this.state = 493;
2023
+ this.state = 496;
2015
2024
  this.expression();
2016
- this.state = 494;
2025
+ this.state = 497;
2017
2026
  this.match(CNextParser.COMMA);
2018
- this.state = 495;
2027
+ this.state = 498;
2019
2028
  this.expression();
2020
- this.state = 496;
2029
+ this.state = 499;
2021
2030
  this.match(CNextParser.RBRACKET);
2022
2031
  }
2023
2032
  break;
@@ -2042,9 +2051,9 @@ export class CNextParser extends antlr.Parser {
2042
2051
  try {
2043
2052
  this.enterOuterAlt(localContext, 1);
2044
2053
  {
2045
- this.state = 500;
2054
+ this.state = 503;
2046
2055
  this.expression();
2047
- this.state = 501;
2056
+ this.state = 504;
2048
2057
  this.match(CNextParser.SEMI);
2049
2058
  }
2050
2059
  }
@@ -2067,24 +2076,24 @@ export class CNextParser extends antlr.Parser {
2067
2076
  try {
2068
2077
  this.enterOuterAlt(localContext, 1);
2069
2078
  {
2070
- this.state = 503;
2079
+ this.state = 506;
2071
2080
  this.match(CNextParser.IF);
2072
- this.state = 504;
2081
+ this.state = 507;
2073
2082
  this.match(CNextParser.LPAREN);
2074
- this.state = 505;
2083
+ this.state = 508;
2075
2084
  this.expression();
2076
- this.state = 506;
2085
+ this.state = 509;
2077
2086
  this.match(CNextParser.RPAREN);
2078
- this.state = 507;
2079
- this.statement();
2080
2087
  this.state = 510;
2088
+ this.statement();
2089
+ this.state = 513;
2081
2090
  this.errorHandler.sync(this);
2082
2091
  switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) {
2083
2092
  case 1:
2084
2093
  {
2085
- this.state = 508;
2094
+ this.state = 511;
2086
2095
  this.match(CNextParser.ELSE);
2087
- this.state = 509;
2096
+ this.state = 512;
2088
2097
  this.statement();
2089
2098
  }
2090
2099
  break;
@@ -2110,15 +2119,15 @@ export class CNextParser extends antlr.Parser {
2110
2119
  try {
2111
2120
  this.enterOuterAlt(localContext, 1);
2112
2121
  {
2113
- this.state = 512;
2122
+ this.state = 515;
2114
2123
  this.match(CNextParser.WHILE);
2115
- this.state = 513;
2124
+ this.state = 516;
2116
2125
  this.match(CNextParser.LPAREN);
2117
- this.state = 514;
2126
+ this.state = 517;
2118
2127
  this.expression();
2119
- this.state = 515;
2128
+ this.state = 518;
2120
2129
  this.match(CNextParser.RPAREN);
2121
- this.state = 516;
2130
+ this.state = 519;
2122
2131
  this.statement();
2123
2132
  }
2124
2133
  }
@@ -2141,19 +2150,19 @@ export class CNextParser extends antlr.Parser {
2141
2150
  try {
2142
2151
  this.enterOuterAlt(localContext, 1);
2143
2152
  {
2144
- this.state = 518;
2153
+ this.state = 521;
2145
2154
  this.match(CNextParser.DO);
2146
- this.state = 519;
2155
+ this.state = 522;
2147
2156
  this.block();
2148
- this.state = 520;
2157
+ this.state = 523;
2149
2158
  this.match(CNextParser.WHILE);
2150
- this.state = 521;
2159
+ this.state = 524;
2151
2160
  this.match(CNextParser.LPAREN);
2152
- this.state = 522;
2161
+ this.state = 525;
2153
2162
  this.expression();
2154
- this.state = 523;
2163
+ this.state = 526;
2155
2164
  this.match(CNextParser.RPAREN);
2156
- this.state = 524;
2165
+ this.state = 527;
2157
2166
  this.match(CNextParser.SEMI);
2158
2167
  }
2159
2168
  }
@@ -2177,47 +2186,47 @@ export class CNextParser extends antlr.Parser {
2177
2186
  try {
2178
2187
  this.enterOuterAlt(localContext, 1);
2179
2188
  {
2180
- this.state = 526;
2189
+ this.state = 529;
2181
2190
  this.match(CNextParser.FOR);
2182
- this.state = 527;
2191
+ this.state = 530;
2183
2192
  this.match(CNextParser.LPAREN);
2184
- this.state = 529;
2193
+ this.state = 532;
2185
2194
  this.errorHandler.sync(this);
2186
2195
  _la = this.tokenStream.LA(1);
2187
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3194880) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973697) !== 0) || _la === 113) {
2196
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3194880) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 2146973697) !== 0) || _la === 114) {
2188
2197
  {
2189
- this.state = 528;
2198
+ this.state = 531;
2190
2199
  this.forInit();
2191
2200
  }
2192
2201
  }
2193
2202
 
2194
- this.state = 531;
2203
+ this.state = 534;
2195
2204
  this.match(CNextParser.SEMI);
2196
- this.state = 533;
2205
+ this.state = 536;
2197
2206
  this.errorHandler.sync(this);
2198
2207
  _la = this.tokenStream.LA(1);
2199
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147532800) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1966091) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
2208
+ if (_la === 14 || _la === 15 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932183) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
2200
2209
  {
2201
- this.state = 532;
2210
+ this.state = 535;
2202
2211
  this.expression();
2203
2212
  }
2204
2213
  }
2205
2214
 
2206
- this.state = 535;
2215
+ this.state = 538;
2207
2216
  this.match(CNextParser.SEMI);
2208
- this.state = 537;
2217
+ this.state = 540;
2209
2218
  this.errorHandler.sync(this);
2210
2219
  _la = this.tokenStream.LA(1);
2211
- if (_la === 14 || _la === 15 || _la === 113) {
2220
+ if (_la === 14 || _la === 15 || _la === 114) {
2212
2221
  {
2213
- this.state = 536;
2222
+ this.state = 539;
2214
2223
  this.forUpdate();
2215
2224
  }
2216
2225
  }
2217
2226
 
2218
- this.state = 539;
2227
+ this.state = 542;
2219
2228
  this.match(CNextParser.RPAREN);
2220
- this.state = 540;
2229
+ this.state = 543;
2221
2230
  this.statement();
2222
2231
  }
2223
2232
  }
@@ -2234,24 +2243,49 @@ export class CNextParser extends antlr.Parser {
2234
2243
  }
2235
2244
  return localContext;
2236
2245
  }
2246
+ public foreverStatement(): ForeverStatementContext {
2247
+ let localContext = new ForeverStatementContext(this.context, this.state);
2248
+ this.enterRule(localContext, 84, CNextParser.RULE_foreverStatement);
2249
+ try {
2250
+ this.enterOuterAlt(localContext, 1);
2251
+ {
2252
+ this.state = 545;
2253
+ this.match(CNextParser.FOREVER);
2254
+ this.state = 546;
2255
+ this.block();
2256
+ }
2257
+ }
2258
+ catch (re) {
2259
+ if (re instanceof antlr.RecognitionException) {
2260
+ this.errorHandler.reportError(this, re);
2261
+ this.errorHandler.recover(this, re);
2262
+ } else {
2263
+ throw re;
2264
+ }
2265
+ }
2266
+ finally {
2267
+ this.exitRule();
2268
+ }
2269
+ return localContext;
2270
+ }
2237
2271
  public forInit(): ForInitContext {
2238
2272
  let localContext = new ForInitContext(this.context, this.state);
2239
- this.enterRule(localContext, 84, CNextParser.RULE_forInit);
2273
+ this.enterRule(localContext, 86, CNextParser.RULE_forInit);
2240
2274
  try {
2241
- this.state = 544;
2275
+ this.state = 550;
2242
2276
  this.errorHandler.sync(this);
2243
2277
  switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) {
2244
2278
  case 1:
2245
2279
  this.enterOuterAlt(localContext, 1);
2246
2280
  {
2247
- this.state = 542;
2281
+ this.state = 548;
2248
2282
  this.forVarDecl();
2249
2283
  }
2250
2284
  break;
2251
2285
  case 2:
2252
2286
  this.enterOuterAlt(localContext, 2);
2253
2287
  {
2254
- this.state = 543;
2288
+ this.state = 549;
2255
2289
  this.forAssignment();
2256
2290
  }
2257
2291
  break;
@@ -2272,67 +2306,67 @@ export class CNextParser extends antlr.Parser {
2272
2306
  }
2273
2307
  public forVarDecl(): ForVarDeclContext {
2274
2308
  let localContext = new ForVarDeclContext(this.context, this.state);
2275
- this.enterRule(localContext, 86, CNextParser.RULE_forVarDecl);
2309
+ this.enterRule(localContext, 88, CNextParser.RULE_forVarDecl);
2276
2310
  let _la: number;
2277
2311
  try {
2278
2312
  this.enterOuterAlt(localContext, 1);
2279
2313
  {
2280
- this.state = 547;
2314
+ this.state = 553;
2281
2315
  this.errorHandler.sync(this);
2282
2316
  _la = this.tokenStream.LA(1);
2283
- if (_la === 47) {
2317
+ if (_la === 48) {
2284
2318
  {
2285
- this.state = 546;
2319
+ this.state = 552;
2286
2320
  this.atomicModifier();
2287
2321
  }
2288
2322
  }
2289
2323
 
2290
- this.state = 550;
2324
+ this.state = 556;
2291
2325
  this.errorHandler.sync(this);
2292
2326
  _la = this.tokenStream.LA(1);
2293
2327
  if (_la === 20) {
2294
2328
  {
2295
- this.state = 549;
2329
+ this.state = 555;
2296
2330
  this.volatileModifier();
2297
2331
  }
2298
2332
  }
2299
2333
 
2300
- this.state = 553;
2334
+ this.state = 559;
2301
2335
  this.errorHandler.sync(this);
2302
2336
  _la = this.tokenStream.LA(1);
2303
- if (_la === 45 || _la === 46) {
2337
+ if (_la === 46 || _la === 47) {
2304
2338
  {
2305
- this.state = 552;
2339
+ this.state = 558;
2306
2340
  this.overflowModifier();
2307
2341
  }
2308
2342
  }
2309
2343
 
2310
- this.state = 555;
2344
+ this.state = 561;
2311
2345
  this.type_();
2312
- this.state = 556;
2346
+ this.state = 562;
2313
2347
  this.match(CNextParser.IDENTIFIER);
2314
- this.state = 560;
2348
+ this.state = 566;
2315
2349
  this.errorHandler.sync(this);
2316
2350
  _la = this.tokenStream.LA(1);
2317
- while (_la === 100) {
2351
+ while (_la === 101) {
2318
2352
  {
2319
2353
  {
2320
- this.state = 557;
2354
+ this.state = 563;
2321
2355
  this.arrayDimension();
2322
2356
  }
2323
2357
  }
2324
- this.state = 562;
2358
+ this.state = 568;
2325
2359
  this.errorHandler.sync(this);
2326
2360
  _la = this.tokenStream.LA(1);
2327
2361
  }
2328
- this.state = 565;
2362
+ this.state = 571;
2329
2363
  this.errorHandler.sync(this);
2330
2364
  _la = this.tokenStream.LA(1);
2331
- if (_la === 75) {
2365
+ if (_la === 76) {
2332
2366
  {
2333
- this.state = 563;
2367
+ this.state = 569;
2334
2368
  this.match(CNextParser.ASSIGN);
2335
- this.state = 564;
2369
+ this.state = 570;
2336
2370
  this.expression();
2337
2371
  }
2338
2372
  }
@@ -2354,15 +2388,15 @@ export class CNextParser extends antlr.Parser {
2354
2388
  }
2355
2389
  public forAssignment(): ForAssignmentContext {
2356
2390
  let localContext = new ForAssignmentContext(this.context, this.state);
2357
- this.enterRule(localContext, 88, CNextParser.RULE_forAssignment);
2391
+ this.enterRule(localContext, 90, CNextParser.RULE_forAssignment);
2358
2392
  try {
2359
2393
  this.enterOuterAlt(localContext, 1);
2360
2394
  {
2361
- this.state = 567;
2395
+ this.state = 573;
2362
2396
  this.assignmentTarget();
2363
- this.state = 568;
2397
+ this.state = 574;
2364
2398
  this.assignmentOperator();
2365
- this.state = 569;
2399
+ this.state = 575;
2366
2400
  this.expression();
2367
2401
  }
2368
2402
  }
@@ -2381,15 +2415,15 @@ export class CNextParser extends antlr.Parser {
2381
2415
  }
2382
2416
  public forUpdate(): ForUpdateContext {
2383
2417
  let localContext = new ForUpdateContext(this.context, this.state);
2384
- this.enterRule(localContext, 90, CNextParser.RULE_forUpdate);
2418
+ this.enterRule(localContext, 92, CNextParser.RULE_forUpdate);
2385
2419
  try {
2386
2420
  this.enterOuterAlt(localContext, 1);
2387
2421
  {
2388
- this.state = 571;
2422
+ this.state = 577;
2389
2423
  this.assignmentTarget();
2390
- this.state = 572;
2424
+ this.state = 578;
2391
2425
  this.assignmentOperator();
2392
- this.state = 573;
2426
+ this.state = 579;
2393
2427
  this.expression();
2394
2428
  }
2395
2429
  }
@@ -2408,24 +2442,24 @@ export class CNextParser extends antlr.Parser {
2408
2442
  }
2409
2443
  public returnStatement(): ReturnStatementContext {
2410
2444
  let localContext = new ReturnStatementContext(this.context, this.state);
2411
- this.enterRule(localContext, 92, CNextParser.RULE_returnStatement);
2445
+ this.enterRule(localContext, 94, CNextParser.RULE_returnStatement);
2412
2446
  let _la: number;
2413
2447
  try {
2414
2448
  this.enterOuterAlt(localContext, 1);
2415
2449
  {
2416
- this.state = 575;
2450
+ this.state = 581;
2417
2451
  this.match(CNextParser.RETURN);
2418
- this.state = 577;
2452
+ this.state = 583;
2419
2453
  this.errorHandler.sync(this);
2420
2454
  _la = this.tokenStream.LA(1);
2421
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147532800) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1966091) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
2455
+ if (_la === 14 || _la === 15 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932183) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
2422
2456
  {
2423
- this.state = 576;
2457
+ this.state = 582;
2424
2458
  this.expression();
2425
2459
  }
2426
2460
  }
2427
2461
 
2428
- this.state = 579;
2462
+ this.state = 585;
2429
2463
  this.match(CNextParser.SEMI);
2430
2464
  }
2431
2465
  }
@@ -2444,46 +2478,46 @@ export class CNextParser extends antlr.Parser {
2444
2478
  }
2445
2479
  public switchStatement(): SwitchStatementContext {
2446
2480
  let localContext = new SwitchStatementContext(this.context, this.state);
2447
- this.enterRule(localContext, 94, CNextParser.RULE_switchStatement);
2481
+ this.enterRule(localContext, 96, CNextParser.RULE_switchStatement);
2448
2482
  let _la: number;
2449
2483
  try {
2450
2484
  this.enterOuterAlt(localContext, 1);
2451
2485
  {
2452
- this.state = 581;
2486
+ this.state = 587;
2453
2487
  this.match(CNextParser.SWITCH);
2454
- this.state = 582;
2488
+ this.state = 588;
2455
2489
  this.match(CNextParser.LPAREN);
2456
- this.state = 583;
2490
+ this.state = 589;
2457
2491
  this.expression();
2458
- this.state = 584;
2492
+ this.state = 590;
2459
2493
  this.match(CNextParser.RPAREN);
2460
- this.state = 585;
2494
+ this.state = 591;
2461
2495
  this.match(CNextParser.LBRACE);
2462
- this.state = 587;
2496
+ this.state = 593;
2463
2497
  this.errorHandler.sync(this);
2464
2498
  _la = this.tokenStream.LA(1);
2465
2499
  do {
2466
2500
  {
2467
2501
  {
2468
- this.state = 586;
2502
+ this.state = 592;
2469
2503
  this.switchCase();
2470
2504
  }
2471
2505
  }
2472
- this.state = 589;
2506
+ this.state = 595;
2473
2507
  this.errorHandler.sync(this);
2474
2508
  _la = this.tokenStream.LA(1);
2475
- } while (_la === 28);
2476
- this.state = 592;
2509
+ } while (_la === 29);
2510
+ this.state = 598;
2477
2511
  this.errorHandler.sync(this);
2478
2512
  _la = this.tokenStream.LA(1);
2479
- if (_la === 29) {
2513
+ if (_la === 30) {
2480
2514
  {
2481
- this.state = 591;
2515
+ this.state = 597;
2482
2516
  this.defaultCase();
2483
2517
  }
2484
2518
  }
2485
2519
 
2486
- this.state = 594;
2520
+ this.state = 600;
2487
2521
  this.match(CNextParser.RBRACE);
2488
2522
  }
2489
2523
  }
@@ -2502,32 +2536,32 @@ export class CNextParser extends antlr.Parser {
2502
2536
  }
2503
2537
  public switchCase(): SwitchCaseContext {
2504
2538
  let localContext = new SwitchCaseContext(this.context, this.state);
2505
- this.enterRule(localContext, 96, CNextParser.RULE_switchCase);
2539
+ this.enterRule(localContext, 98, CNextParser.RULE_switchCase);
2506
2540
  let _la: number;
2507
2541
  try {
2508
2542
  this.enterOuterAlt(localContext, 1);
2509
2543
  {
2510
- this.state = 596;
2544
+ this.state = 602;
2511
2545
  this.match(CNextParser.CASE);
2512
- this.state = 597;
2546
+ this.state = 603;
2513
2547
  this.caseLabel();
2514
- this.state = 602;
2548
+ this.state = 608;
2515
2549
  this.errorHandler.sync(this);
2516
2550
  _la = this.tokenStream.LA(1);
2517
- while (_la === 88) {
2551
+ while (_la === 89) {
2518
2552
  {
2519
2553
  {
2520
- this.state = 598;
2554
+ this.state = 604;
2521
2555
  this.match(CNextParser.OR);
2522
- this.state = 599;
2556
+ this.state = 605;
2523
2557
  this.caseLabel();
2524
2558
  }
2525
2559
  }
2526
- this.state = 604;
2560
+ this.state = 610;
2527
2561
  this.errorHandler.sync(this);
2528
2562
  _la = this.tokenStream.LA(1);
2529
2563
  }
2530
- this.state = 605;
2564
+ this.state = 611;
2531
2565
  this.block();
2532
2566
  }
2533
2567
  }
@@ -2546,71 +2580,71 @@ export class CNextParser extends antlr.Parser {
2546
2580
  }
2547
2581
  public caseLabel(): CaseLabelContext {
2548
2582
  let localContext = new CaseLabelContext(this.context, this.state);
2549
- this.enterRule(localContext, 98, CNextParser.RULE_caseLabel);
2583
+ this.enterRule(localContext, 100, CNextParser.RULE_caseLabel);
2550
2584
  let _la: number;
2551
2585
  try {
2552
- this.state = 619;
2586
+ this.state = 625;
2553
2587
  this.errorHandler.sync(this);
2554
2588
  switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) {
2555
2589
  case 1:
2556
2590
  this.enterOuterAlt(localContext, 1);
2557
2591
  {
2558
- this.state = 607;
2592
+ this.state = 613;
2559
2593
  this.qualifiedType();
2560
2594
  }
2561
2595
  break;
2562
2596
  case 2:
2563
2597
  this.enterOuterAlt(localContext, 2);
2564
2598
  {
2565
- this.state = 608;
2599
+ this.state = 614;
2566
2600
  this.match(CNextParser.IDENTIFIER);
2567
2601
  }
2568
2602
  break;
2569
2603
  case 3:
2570
2604
  this.enterOuterAlt(localContext, 3);
2571
2605
  {
2572
- this.state = 610;
2606
+ this.state = 616;
2573
2607
  this.errorHandler.sync(this);
2574
2608
  _la = this.tokenStream.LA(1);
2575
- if (_la === 83) {
2609
+ if (_la === 84) {
2576
2610
  {
2577
- this.state = 609;
2611
+ this.state = 615;
2578
2612
  this.match(CNextParser.MINUS);
2579
2613
  }
2580
2614
  }
2581
2615
 
2582
- this.state = 612;
2616
+ this.state = 618;
2583
2617
  this.match(CNextParser.INTEGER_LITERAL);
2584
2618
  }
2585
2619
  break;
2586
2620
  case 4:
2587
2621
  this.enterOuterAlt(localContext, 4);
2588
2622
  {
2589
- this.state = 614;
2623
+ this.state = 620;
2590
2624
  this.errorHandler.sync(this);
2591
2625
  _la = this.tokenStream.LA(1);
2592
- if (_la === 83) {
2626
+ if (_la === 84) {
2593
2627
  {
2594
- this.state = 613;
2628
+ this.state = 619;
2595
2629
  this.match(CNextParser.MINUS);
2596
2630
  }
2597
2631
  }
2598
2632
 
2599
- this.state = 616;
2633
+ this.state = 622;
2600
2634
  this.match(CNextParser.HEX_LITERAL);
2601
2635
  }
2602
2636
  break;
2603
2637
  case 5:
2604
2638
  this.enterOuterAlt(localContext, 5);
2605
2639
  {
2606
- this.state = 617;
2640
+ this.state = 623;
2607
2641
  this.match(CNextParser.BINARY_LITERAL);
2608
2642
  }
2609
2643
  break;
2610
2644
  case 6:
2611
2645
  this.enterOuterAlt(localContext, 6);
2612
2646
  {
2613
- this.state = 618;
2647
+ this.state = 624;
2614
2648
  this.match(CNextParser.CHAR_LITERAL);
2615
2649
  }
2616
2650
  break;
@@ -2631,28 +2665,28 @@ export class CNextParser extends antlr.Parser {
2631
2665
  }
2632
2666
  public defaultCase(): DefaultCaseContext {
2633
2667
  let localContext = new DefaultCaseContext(this.context, this.state);
2634
- this.enterRule(localContext, 100, CNextParser.RULE_defaultCase);
2668
+ this.enterRule(localContext, 102, CNextParser.RULE_defaultCase);
2635
2669
  let _la: number;
2636
2670
  try {
2637
2671
  this.enterOuterAlt(localContext, 1);
2638
2672
  {
2639
- this.state = 621;
2673
+ this.state = 627;
2640
2674
  this.match(CNextParser.DEFAULT);
2641
- this.state = 625;
2675
+ this.state = 631;
2642
2676
  this.errorHandler.sync(this);
2643
2677
  _la = this.tokenStream.LA(1);
2644
- if (_la === 96) {
2678
+ if (_la === 97) {
2645
2679
  {
2646
- this.state = 622;
2680
+ this.state = 628;
2647
2681
  this.match(CNextParser.LPAREN);
2648
- this.state = 623;
2682
+ this.state = 629;
2649
2683
  this.match(CNextParser.INTEGER_LITERAL);
2650
- this.state = 624;
2684
+ this.state = 630;
2651
2685
  this.match(CNextParser.RPAREN);
2652
2686
  }
2653
2687
  }
2654
2688
 
2655
- this.state = 627;
2689
+ this.state = 633;
2656
2690
  this.block();
2657
2691
  }
2658
2692
  }
@@ -2671,11 +2705,11 @@ export class CNextParser extends antlr.Parser {
2671
2705
  }
2672
2706
  public expression(): ExpressionContext {
2673
2707
  let localContext = new ExpressionContext(this.context, this.state);
2674
- this.enterRule(localContext, 102, CNextParser.RULE_expression);
2708
+ this.enterRule(localContext, 104, CNextParser.RULE_expression);
2675
2709
  try {
2676
2710
  this.enterOuterAlt(localContext, 1);
2677
2711
  {
2678
- this.state = 629;
2712
+ this.state = 635;
2679
2713
  this.ternaryExpression();
2680
2714
  }
2681
2715
  }
@@ -2694,34 +2728,34 @@ export class CNextParser extends antlr.Parser {
2694
2728
  }
2695
2729
  public ternaryExpression(): TernaryExpressionContext {
2696
2730
  let localContext = new TernaryExpressionContext(this.context, this.state);
2697
- this.enterRule(localContext, 104, CNextParser.RULE_ternaryExpression);
2731
+ this.enterRule(localContext, 106, CNextParser.RULE_ternaryExpression);
2698
2732
  try {
2699
- this.state = 640;
2733
+ this.state = 646;
2700
2734
  this.errorHandler.sync(this);
2701
2735
  switch (this.interpreter.adaptivePredict(this.tokenStream, 61, this.context) ) {
2702
2736
  case 1:
2703
2737
  this.enterOuterAlt(localContext, 1);
2704
2738
  {
2705
- this.state = 631;
2739
+ this.state = 637;
2706
2740
  this.match(CNextParser.LPAREN);
2707
- this.state = 632;
2741
+ this.state = 638;
2708
2742
  this.orExpression();
2709
- this.state = 633;
2743
+ this.state = 639;
2710
2744
  this.match(CNextParser.RPAREN);
2711
- this.state = 634;
2745
+ this.state = 640;
2712
2746
  this.match(CNextParser.T__0);
2713
- this.state = 635;
2747
+ this.state = 641;
2714
2748
  this.orExpression();
2715
- this.state = 636;
2749
+ this.state = 642;
2716
2750
  this.match(CNextParser.COLON);
2717
- this.state = 637;
2751
+ this.state = 643;
2718
2752
  this.orExpression();
2719
2753
  }
2720
2754
  break;
2721
2755
  case 2:
2722
2756
  this.enterOuterAlt(localContext, 2);
2723
2757
  {
2724
- this.state = 639;
2758
+ this.state = 645;
2725
2759
  this.orExpression();
2726
2760
  }
2727
2761
  break;
@@ -2742,26 +2776,26 @@ export class CNextParser extends antlr.Parser {
2742
2776
  }
2743
2777
  public orExpression(): OrExpressionContext {
2744
2778
  let localContext = new OrExpressionContext(this.context, this.state);
2745
- this.enterRule(localContext, 106, CNextParser.RULE_orExpression);
2779
+ this.enterRule(localContext, 108, CNextParser.RULE_orExpression);
2746
2780
  let _la: number;
2747
2781
  try {
2748
2782
  this.enterOuterAlt(localContext, 1);
2749
2783
  {
2750
- this.state = 642;
2784
+ this.state = 648;
2751
2785
  this.andExpression();
2752
- this.state = 647;
2786
+ this.state = 653;
2753
2787
  this.errorHandler.sync(this);
2754
2788
  _la = this.tokenStream.LA(1);
2755
- while (_la === 88) {
2789
+ while (_la === 89) {
2756
2790
  {
2757
2791
  {
2758
- this.state = 643;
2792
+ this.state = 649;
2759
2793
  this.match(CNextParser.OR);
2760
- this.state = 644;
2794
+ this.state = 650;
2761
2795
  this.andExpression();
2762
2796
  }
2763
2797
  }
2764
- this.state = 649;
2798
+ this.state = 655;
2765
2799
  this.errorHandler.sync(this);
2766
2800
  _la = this.tokenStream.LA(1);
2767
2801
  }
@@ -2782,26 +2816,26 @@ export class CNextParser extends antlr.Parser {
2782
2816
  }
2783
2817
  public andExpression(): AndExpressionContext {
2784
2818
  let localContext = new AndExpressionContext(this.context, this.state);
2785
- this.enterRule(localContext, 108, CNextParser.RULE_andExpression);
2819
+ this.enterRule(localContext, 110, CNextParser.RULE_andExpression);
2786
2820
  let _la: number;
2787
2821
  try {
2788
2822
  this.enterOuterAlt(localContext, 1);
2789
2823
  {
2790
- this.state = 650;
2824
+ this.state = 656;
2791
2825
  this.equalityExpression();
2792
- this.state = 655;
2826
+ this.state = 661;
2793
2827
  this.errorHandler.sync(this);
2794
2828
  _la = this.tokenStream.LA(1);
2795
- while (_la === 87) {
2829
+ while (_la === 88) {
2796
2830
  {
2797
2831
  {
2798
- this.state = 651;
2832
+ this.state = 657;
2799
2833
  this.match(CNextParser.AND);
2800
- this.state = 652;
2834
+ this.state = 658;
2801
2835
  this.equalityExpression();
2802
2836
  }
2803
2837
  }
2804
- this.state = 657;
2838
+ this.state = 663;
2805
2839
  this.errorHandler.sync(this);
2806
2840
  _la = this.tokenStream.LA(1);
2807
2841
  }
@@ -2822,33 +2856,33 @@ export class CNextParser extends antlr.Parser {
2822
2856
  }
2823
2857
  public equalityExpression(): EqualityExpressionContext {
2824
2858
  let localContext = new EqualityExpressionContext(this.context, this.state);
2825
- this.enterRule(localContext, 110, CNextParser.RULE_equalityExpression);
2859
+ this.enterRule(localContext, 112, CNextParser.RULE_equalityExpression);
2826
2860
  let _la: number;
2827
2861
  try {
2828
2862
  this.enterOuterAlt(localContext, 1);
2829
2863
  {
2830
- this.state = 658;
2864
+ this.state = 664;
2831
2865
  this.relationalExpression();
2832
- this.state = 663;
2866
+ this.state = 669;
2833
2867
  this.errorHandler.sync(this);
2834
2868
  _la = this.tokenStream.LA(1);
2835
- while (_la === 76 || _la === 77) {
2869
+ while (_la === 77 || _la === 78) {
2836
2870
  {
2837
2871
  {
2838
- this.state = 659;
2872
+ this.state = 665;
2839
2873
  _la = this.tokenStream.LA(1);
2840
- if(!(_la === 76 || _la === 77)) {
2874
+ if(!(_la === 77 || _la === 78)) {
2841
2875
  this.errorHandler.recoverInline(this);
2842
2876
  }
2843
2877
  else {
2844
2878
  this.errorHandler.reportMatch(this);
2845
2879
  this.consume();
2846
2880
  }
2847
- this.state = 660;
2881
+ this.state = 666;
2848
2882
  this.relationalExpression();
2849
2883
  }
2850
2884
  }
2851
- this.state = 665;
2885
+ this.state = 671;
2852
2886
  this.errorHandler.sync(this);
2853
2887
  _la = this.tokenStream.LA(1);
2854
2888
  }
@@ -2869,33 +2903,33 @@ export class CNextParser extends antlr.Parser {
2869
2903
  }
2870
2904
  public relationalExpression(): RelationalExpressionContext {
2871
2905
  let localContext = new RelationalExpressionContext(this.context, this.state);
2872
- this.enterRule(localContext, 112, CNextParser.RULE_relationalExpression);
2906
+ this.enterRule(localContext, 114, CNextParser.RULE_relationalExpression);
2873
2907
  let _la: number;
2874
2908
  try {
2875
2909
  this.enterOuterAlt(localContext, 1);
2876
2910
  {
2877
- this.state = 666;
2911
+ this.state = 672;
2878
2912
  this.bitwiseOrExpression();
2879
- this.state = 671;
2913
+ this.state = 677;
2880
2914
  this.errorHandler.sync(this);
2881
2915
  _la = this.tokenStream.LA(1);
2882
- while (((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 15) !== 0)) {
2916
+ while (((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 15) !== 0)) {
2883
2917
  {
2884
2918
  {
2885
- this.state = 667;
2919
+ this.state = 673;
2886
2920
  _la = this.tokenStream.LA(1);
2887
- if(!(((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 15) !== 0))) {
2921
+ if(!(((((_la - 79)) & ~0x1F) === 0 && ((1 << (_la - 79)) & 15) !== 0))) {
2888
2922
  this.errorHandler.recoverInline(this);
2889
2923
  }
2890
2924
  else {
2891
2925
  this.errorHandler.reportMatch(this);
2892
2926
  this.consume();
2893
2927
  }
2894
- this.state = 668;
2928
+ this.state = 674;
2895
2929
  this.bitwiseOrExpression();
2896
2930
  }
2897
2931
  }
2898
- this.state = 673;
2932
+ this.state = 679;
2899
2933
  this.errorHandler.sync(this);
2900
2934
  _la = this.tokenStream.LA(1);
2901
2935
  }
@@ -2916,26 +2950,26 @@ export class CNextParser extends antlr.Parser {
2916
2950
  }
2917
2951
  public bitwiseOrExpression(): BitwiseOrExpressionContext {
2918
2952
  let localContext = new BitwiseOrExpressionContext(this.context, this.state);
2919
- this.enterRule(localContext, 114, CNextParser.RULE_bitwiseOrExpression);
2953
+ this.enterRule(localContext, 116, CNextParser.RULE_bitwiseOrExpression);
2920
2954
  let _la: number;
2921
2955
  try {
2922
2956
  this.enterOuterAlt(localContext, 1);
2923
2957
  {
2924
- this.state = 674;
2958
+ this.state = 680;
2925
2959
  this.bitwiseXorExpression();
2926
- this.state = 679;
2960
+ this.state = 685;
2927
2961
  this.errorHandler.sync(this);
2928
2962
  _la = this.tokenStream.LA(1);
2929
- while (_la === 91) {
2963
+ while (_la === 92) {
2930
2964
  {
2931
2965
  {
2932
- this.state = 675;
2966
+ this.state = 681;
2933
2967
  this.match(CNextParser.BITOR);
2934
- this.state = 676;
2968
+ this.state = 682;
2935
2969
  this.bitwiseXorExpression();
2936
2970
  }
2937
2971
  }
2938
- this.state = 681;
2972
+ this.state = 687;
2939
2973
  this.errorHandler.sync(this);
2940
2974
  _la = this.tokenStream.LA(1);
2941
2975
  }
@@ -2956,26 +2990,26 @@ export class CNextParser extends antlr.Parser {
2956
2990
  }
2957
2991
  public bitwiseXorExpression(): BitwiseXorExpressionContext {
2958
2992
  let localContext = new BitwiseXorExpressionContext(this.context, this.state);
2959
- this.enterRule(localContext, 116, CNextParser.RULE_bitwiseXorExpression);
2993
+ this.enterRule(localContext, 118, CNextParser.RULE_bitwiseXorExpression);
2960
2994
  let _la: number;
2961
2995
  try {
2962
2996
  this.enterOuterAlt(localContext, 1);
2963
2997
  {
2964
- this.state = 682;
2998
+ this.state = 688;
2965
2999
  this.bitwiseAndExpression();
2966
- this.state = 687;
3000
+ this.state = 693;
2967
3001
  this.errorHandler.sync(this);
2968
3002
  _la = this.tokenStream.LA(1);
2969
- while (_la === 92) {
3003
+ while (_la === 93) {
2970
3004
  {
2971
3005
  {
2972
- this.state = 683;
3006
+ this.state = 689;
2973
3007
  this.match(CNextParser.BITXOR);
2974
- this.state = 684;
3008
+ this.state = 690;
2975
3009
  this.bitwiseAndExpression();
2976
3010
  }
2977
3011
  }
2978
- this.state = 689;
3012
+ this.state = 695;
2979
3013
  this.errorHandler.sync(this);
2980
3014
  _la = this.tokenStream.LA(1);
2981
3015
  }
@@ -2996,26 +3030,26 @@ export class CNextParser extends antlr.Parser {
2996
3030
  }
2997
3031
  public bitwiseAndExpression(): BitwiseAndExpressionContext {
2998
3032
  let localContext = new BitwiseAndExpressionContext(this.context, this.state);
2999
- this.enterRule(localContext, 118, CNextParser.RULE_bitwiseAndExpression);
3033
+ this.enterRule(localContext, 120, CNextParser.RULE_bitwiseAndExpression);
3000
3034
  let _la: number;
3001
3035
  try {
3002
3036
  this.enterOuterAlt(localContext, 1);
3003
3037
  {
3004
- this.state = 690;
3038
+ this.state = 696;
3005
3039
  this.shiftExpression();
3006
- this.state = 695;
3040
+ this.state = 701;
3007
3041
  this.errorHandler.sync(this);
3008
3042
  _la = this.tokenStream.LA(1);
3009
- while (_la === 90) {
3043
+ while (_la === 91) {
3010
3044
  {
3011
3045
  {
3012
- this.state = 691;
3046
+ this.state = 697;
3013
3047
  this.match(CNextParser.BITAND);
3014
- this.state = 692;
3048
+ this.state = 698;
3015
3049
  this.shiftExpression();
3016
3050
  }
3017
3051
  }
3018
- this.state = 697;
3052
+ this.state = 703;
3019
3053
  this.errorHandler.sync(this);
3020
3054
  _la = this.tokenStream.LA(1);
3021
3055
  }
@@ -3036,33 +3070,33 @@ export class CNextParser extends antlr.Parser {
3036
3070
  }
3037
3071
  public shiftExpression(): ShiftExpressionContext {
3038
3072
  let localContext = new ShiftExpressionContext(this.context, this.state);
3039
- this.enterRule(localContext, 120, CNextParser.RULE_shiftExpression);
3073
+ this.enterRule(localContext, 122, CNextParser.RULE_shiftExpression);
3040
3074
  let _la: number;
3041
3075
  try {
3042
3076
  this.enterOuterAlt(localContext, 1);
3043
3077
  {
3044
- this.state = 698;
3078
+ this.state = 704;
3045
3079
  this.additiveExpression();
3046
- this.state = 703;
3080
+ this.state = 709;
3047
3081
  this.errorHandler.sync(this);
3048
3082
  _la = this.tokenStream.LA(1);
3049
- while (_la === 94 || _la === 95) {
3083
+ while (_la === 95 || _la === 96) {
3050
3084
  {
3051
3085
  {
3052
- this.state = 699;
3086
+ this.state = 705;
3053
3087
  _la = this.tokenStream.LA(1);
3054
- if(!(_la === 94 || _la === 95)) {
3088
+ if(!(_la === 95 || _la === 96)) {
3055
3089
  this.errorHandler.recoverInline(this);
3056
3090
  }
3057
3091
  else {
3058
3092
  this.errorHandler.reportMatch(this);
3059
3093
  this.consume();
3060
3094
  }
3061
- this.state = 700;
3095
+ this.state = 706;
3062
3096
  this.additiveExpression();
3063
3097
  }
3064
3098
  }
3065
- this.state = 705;
3099
+ this.state = 711;
3066
3100
  this.errorHandler.sync(this);
3067
3101
  _la = this.tokenStream.LA(1);
3068
3102
  }
@@ -3083,33 +3117,33 @@ export class CNextParser extends antlr.Parser {
3083
3117
  }
3084
3118
  public additiveExpression(): AdditiveExpressionContext {
3085
3119
  let localContext = new AdditiveExpressionContext(this.context, this.state);
3086
- this.enterRule(localContext, 122, CNextParser.RULE_additiveExpression);
3120
+ this.enterRule(localContext, 124, CNextParser.RULE_additiveExpression);
3087
3121
  let _la: number;
3088
3122
  try {
3089
3123
  this.enterOuterAlt(localContext, 1);
3090
3124
  {
3091
- this.state = 706;
3125
+ this.state = 712;
3092
3126
  this.multiplicativeExpression();
3093
- this.state = 711;
3127
+ this.state = 717;
3094
3128
  this.errorHandler.sync(this);
3095
3129
  _la = this.tokenStream.LA(1);
3096
- while (_la === 82 || _la === 83) {
3130
+ while (_la === 83 || _la === 84) {
3097
3131
  {
3098
3132
  {
3099
- this.state = 707;
3133
+ this.state = 713;
3100
3134
  _la = this.tokenStream.LA(1);
3101
- if(!(_la === 82 || _la === 83)) {
3135
+ if(!(_la === 83 || _la === 84)) {
3102
3136
  this.errorHandler.recoverInline(this);
3103
3137
  }
3104
3138
  else {
3105
3139
  this.errorHandler.reportMatch(this);
3106
3140
  this.consume();
3107
3141
  }
3108
- this.state = 708;
3142
+ this.state = 714;
3109
3143
  this.multiplicativeExpression();
3110
3144
  }
3111
3145
  }
3112
- this.state = 713;
3146
+ this.state = 719;
3113
3147
  this.errorHandler.sync(this);
3114
3148
  _la = this.tokenStream.LA(1);
3115
3149
  }
@@ -3130,36 +3164,36 @@ export class CNextParser extends antlr.Parser {
3130
3164
  }
3131
3165
  public multiplicativeExpression(): MultiplicativeExpressionContext {
3132
3166
  let localContext = new MultiplicativeExpressionContext(this.context, this.state);
3133
- this.enterRule(localContext, 124, CNextParser.RULE_multiplicativeExpression);
3167
+ this.enterRule(localContext, 126, CNextParser.RULE_multiplicativeExpression);
3134
3168
  let _la: number;
3135
3169
  try {
3136
3170
  let alternative: number;
3137
3171
  this.enterOuterAlt(localContext, 1);
3138
3172
  {
3139
- this.state = 714;
3173
+ this.state = 720;
3140
3174
  this.unaryExpression();
3141
- this.state = 719;
3175
+ this.state = 725;
3142
3176
  this.errorHandler.sync(this);
3143
3177
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3144
3178
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3145
3179
  if (alternative === 1) {
3146
3180
  {
3147
3181
  {
3148
- this.state = 715;
3182
+ this.state = 721;
3149
3183
  _la = this.tokenStream.LA(1);
3150
- if(!(((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 7) !== 0))) {
3184
+ if(!(((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 7) !== 0))) {
3151
3185
  this.errorHandler.recoverInline(this);
3152
3186
  }
3153
3187
  else {
3154
3188
  this.errorHandler.reportMatch(this);
3155
3189
  this.consume();
3156
3190
  }
3157
- this.state = 716;
3191
+ this.state = 722;
3158
3192
  this.unaryExpression();
3159
3193
  }
3160
3194
  }
3161
3195
  }
3162
- this.state = 721;
3196
+ this.state = 727;
3163
3197
  this.errorHandler.sync(this);
3164
3198
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3165
3199
  }
@@ -3180,44 +3214,44 @@ export class CNextParser extends antlr.Parser {
3180
3214
  }
3181
3215
  public unaryExpression(): UnaryExpressionContext {
3182
3216
  let localContext = new UnaryExpressionContext(this.context, this.state);
3183
- this.enterRule(localContext, 126, CNextParser.RULE_unaryExpression);
3217
+ this.enterRule(localContext, 128, CNextParser.RULE_unaryExpression);
3184
3218
  try {
3185
- this.state = 731;
3219
+ this.state = 737;
3186
3220
  this.errorHandler.sync(this);
3187
3221
  switch (this.tokenStream.LA(1)) {
3188
3222
  case CNextParser.NOT:
3189
3223
  this.enterOuterAlt(localContext, 1);
3190
3224
  {
3191
- this.state = 722;
3225
+ this.state = 728;
3192
3226
  this.match(CNextParser.NOT);
3193
- this.state = 723;
3227
+ this.state = 729;
3194
3228
  this.unaryExpression();
3195
3229
  }
3196
3230
  break;
3197
3231
  case CNextParser.MINUS:
3198
3232
  this.enterOuterAlt(localContext, 2);
3199
3233
  {
3200
- this.state = 724;
3234
+ this.state = 730;
3201
3235
  this.match(CNextParser.MINUS);
3202
- this.state = 725;
3236
+ this.state = 731;
3203
3237
  this.unaryExpression();
3204
3238
  }
3205
3239
  break;
3206
3240
  case CNextParser.BITNOT:
3207
3241
  this.enterOuterAlt(localContext, 3);
3208
3242
  {
3209
- this.state = 726;
3243
+ this.state = 732;
3210
3244
  this.match(CNextParser.BITNOT);
3211
- this.state = 727;
3245
+ this.state = 733;
3212
3246
  this.unaryExpression();
3213
3247
  }
3214
3248
  break;
3215
3249
  case CNextParser.BITAND:
3216
3250
  this.enterOuterAlt(localContext, 4);
3217
3251
  {
3218
- this.state = 728;
3252
+ this.state = 734;
3219
3253
  this.match(CNextParser.BITAND);
3220
- this.state = 729;
3254
+ this.state = 735;
3221
3255
  this.unaryExpression();
3222
3256
  }
3223
3257
  break;
@@ -3243,7 +3277,7 @@ export class CNextParser extends antlr.Parser {
3243
3277
  case CNextParser.IDENTIFIER:
3244
3278
  this.enterOuterAlt(localContext, 5);
3245
3279
  {
3246
- this.state = 730;
3280
+ this.state = 736;
3247
3281
  this.postfixExpression();
3248
3282
  }
3249
3283
  break;
@@ -3266,26 +3300,26 @@ export class CNextParser extends antlr.Parser {
3266
3300
  }
3267
3301
  public postfixExpression(): PostfixExpressionContext {
3268
3302
  let localContext = new PostfixExpressionContext(this.context, this.state);
3269
- this.enterRule(localContext, 128, CNextParser.RULE_postfixExpression);
3303
+ this.enterRule(localContext, 130, CNextParser.RULE_postfixExpression);
3270
3304
  try {
3271
3305
  let alternative: number;
3272
3306
  this.enterOuterAlt(localContext, 1);
3273
3307
  {
3274
- this.state = 733;
3308
+ this.state = 739;
3275
3309
  this.primaryExpression();
3276
- this.state = 737;
3310
+ this.state = 743;
3277
3311
  this.errorHandler.sync(this);
3278
3312
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 73, this.context);
3279
3313
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3280
3314
  if (alternative === 1) {
3281
3315
  {
3282
3316
  {
3283
- this.state = 734;
3317
+ this.state = 740;
3284
3318
  this.postfixOp();
3285
3319
  }
3286
3320
  }
3287
3321
  }
3288
- this.state = 739;
3322
+ this.state = 745;
3289
3323
  this.errorHandler.sync(this);
3290
3324
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 73, this.context);
3291
3325
  }
@@ -3306,63 +3340,63 @@ export class CNextParser extends antlr.Parser {
3306
3340
  }
3307
3341
  public postfixOp(): PostfixOpContext {
3308
3342
  let localContext = new PostfixOpContext(this.context, this.state);
3309
- this.enterRule(localContext, 130, CNextParser.RULE_postfixOp);
3343
+ this.enterRule(localContext, 132, CNextParser.RULE_postfixOp);
3310
3344
  let _la: number;
3311
3345
  try {
3312
- this.state = 757;
3346
+ this.state = 763;
3313
3347
  this.errorHandler.sync(this);
3314
3348
  switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context) ) {
3315
3349
  case 1:
3316
3350
  this.enterOuterAlt(localContext, 1);
3317
3351
  {
3318
- this.state = 740;
3352
+ this.state = 746;
3319
3353
  this.match(CNextParser.DOT);
3320
- this.state = 741;
3354
+ this.state = 747;
3321
3355
  this.match(CNextParser.IDENTIFIER);
3322
3356
  }
3323
3357
  break;
3324
3358
  case 2:
3325
3359
  this.enterOuterAlt(localContext, 2);
3326
3360
  {
3327
- this.state = 742;
3361
+ this.state = 748;
3328
3362
  this.match(CNextParser.LBRACKET);
3329
- this.state = 743;
3363
+ this.state = 749;
3330
3364
  this.expression();
3331
- this.state = 744;
3365
+ this.state = 750;
3332
3366
  this.match(CNextParser.RBRACKET);
3333
3367
  }
3334
3368
  break;
3335
3369
  case 3:
3336
3370
  this.enterOuterAlt(localContext, 3);
3337
3371
  {
3338
- this.state = 746;
3372
+ this.state = 752;
3339
3373
  this.match(CNextParser.LBRACKET);
3340
- this.state = 747;
3374
+ this.state = 753;
3341
3375
  this.expression();
3342
- this.state = 748;
3376
+ this.state = 754;
3343
3377
  this.match(CNextParser.COMMA);
3344
- this.state = 749;
3378
+ this.state = 755;
3345
3379
  this.expression();
3346
- this.state = 750;
3380
+ this.state = 756;
3347
3381
  this.match(CNextParser.RBRACKET);
3348
3382
  }
3349
3383
  break;
3350
3384
  case 4:
3351
3385
  this.enterOuterAlt(localContext, 4);
3352
3386
  {
3353
- this.state = 752;
3387
+ this.state = 758;
3354
3388
  this.match(CNextParser.LPAREN);
3355
- this.state = 754;
3389
+ this.state = 760;
3356
3390
  this.errorHandler.sync(this);
3357
3391
  _la = this.tokenStream.LA(1);
3358
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147532800) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1966091) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
3392
+ if (_la === 14 || _la === 15 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932183) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
3359
3393
  {
3360
- this.state = 753;
3394
+ this.state = 759;
3361
3395
  this.argumentList();
3362
3396
  }
3363
3397
  }
3364
3398
 
3365
- this.state = 756;
3399
+ this.state = 762;
3366
3400
  this.match(CNextParser.RPAREN);
3367
3401
  }
3368
3402
  break;
@@ -3383,75 +3417,75 @@ export class CNextParser extends antlr.Parser {
3383
3417
  }
3384
3418
  public primaryExpression(): PrimaryExpressionContext {
3385
3419
  let localContext = new PrimaryExpressionContext(this.context, this.state);
3386
- this.enterRule(localContext, 132, CNextParser.RULE_primaryExpression);
3420
+ this.enterRule(localContext, 134, CNextParser.RULE_primaryExpression);
3387
3421
  try {
3388
- this.state = 771;
3422
+ this.state = 777;
3389
3423
  this.errorHandler.sync(this);
3390
3424
  switch (this.interpreter.adaptivePredict(this.tokenStream, 76, this.context) ) {
3391
3425
  case 1:
3392
3426
  this.enterOuterAlt(localContext, 1);
3393
3427
  {
3394
- this.state = 759;
3428
+ this.state = 765;
3395
3429
  this.sizeofExpression();
3396
3430
  }
3397
3431
  break;
3398
3432
  case 2:
3399
3433
  this.enterOuterAlt(localContext, 2);
3400
3434
  {
3401
- this.state = 760;
3435
+ this.state = 766;
3402
3436
  this.castExpression();
3403
3437
  }
3404
3438
  break;
3405
3439
  case 3:
3406
3440
  this.enterOuterAlt(localContext, 3);
3407
3441
  {
3408
- this.state = 761;
3442
+ this.state = 767;
3409
3443
  this.structInitializer();
3410
3444
  }
3411
3445
  break;
3412
3446
  case 4:
3413
3447
  this.enterOuterAlt(localContext, 4);
3414
3448
  {
3415
- this.state = 762;
3449
+ this.state = 768;
3416
3450
  this.arrayInitializer();
3417
3451
  }
3418
3452
  break;
3419
3453
  case 5:
3420
3454
  this.enterOuterAlt(localContext, 5);
3421
3455
  {
3422
- this.state = 763;
3456
+ this.state = 769;
3423
3457
  this.match(CNextParser.THIS);
3424
3458
  }
3425
3459
  break;
3426
3460
  case 6:
3427
3461
  this.enterOuterAlt(localContext, 6);
3428
3462
  {
3429
- this.state = 764;
3463
+ this.state = 770;
3430
3464
  this.match(CNextParser.GLOBAL);
3431
3465
  }
3432
3466
  break;
3433
3467
  case 7:
3434
3468
  this.enterOuterAlt(localContext, 7);
3435
3469
  {
3436
- this.state = 765;
3470
+ this.state = 771;
3437
3471
  this.match(CNextParser.IDENTIFIER);
3438
3472
  }
3439
3473
  break;
3440
3474
  case 8:
3441
3475
  this.enterOuterAlt(localContext, 8);
3442
3476
  {
3443
- this.state = 766;
3477
+ this.state = 772;
3444
3478
  this.literal();
3445
3479
  }
3446
3480
  break;
3447
3481
  case 9:
3448
3482
  this.enterOuterAlt(localContext, 9);
3449
3483
  {
3450
- this.state = 767;
3484
+ this.state = 773;
3451
3485
  this.match(CNextParser.LPAREN);
3452
- this.state = 768;
3486
+ this.state = 774;
3453
3487
  this.expression();
3454
- this.state = 769;
3488
+ this.state = 775;
3455
3489
  this.match(CNextParser.RPAREN);
3456
3490
  }
3457
3491
  break;
@@ -3472,31 +3506,31 @@ export class CNextParser extends antlr.Parser {
3472
3506
  }
3473
3507
  public sizeofExpression(): SizeofExpressionContext {
3474
3508
  let localContext = new SizeofExpressionContext(this.context, this.state);
3475
- this.enterRule(localContext, 134, CNextParser.RULE_sizeofExpression);
3509
+ this.enterRule(localContext, 136, CNextParser.RULE_sizeofExpression);
3476
3510
  try {
3477
3511
  this.enterOuterAlt(localContext, 1);
3478
3512
  {
3479
- this.state = 773;
3513
+ this.state = 779;
3480
3514
  this.match(CNextParser.SIZEOF);
3481
- this.state = 774;
3515
+ this.state = 780;
3482
3516
  this.match(CNextParser.LPAREN);
3483
- this.state = 777;
3517
+ this.state = 783;
3484
3518
  this.errorHandler.sync(this);
3485
3519
  switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context) ) {
3486
3520
  case 1:
3487
3521
  {
3488
- this.state = 775;
3522
+ this.state = 781;
3489
3523
  this.type_();
3490
3524
  }
3491
3525
  break;
3492
3526
  case 2:
3493
3527
  {
3494
- this.state = 776;
3528
+ this.state = 782;
3495
3529
  this.expression();
3496
3530
  }
3497
3531
  break;
3498
3532
  }
3499
- this.state = 779;
3533
+ this.state = 785;
3500
3534
  this.match(CNextParser.RPAREN);
3501
3535
  }
3502
3536
  }
@@ -3515,17 +3549,17 @@ export class CNextParser extends antlr.Parser {
3515
3549
  }
3516
3550
  public castExpression(): CastExpressionContext {
3517
3551
  let localContext = new CastExpressionContext(this.context, this.state);
3518
- this.enterRule(localContext, 136, CNextParser.RULE_castExpression);
3552
+ this.enterRule(localContext, 138, CNextParser.RULE_castExpression);
3519
3553
  try {
3520
3554
  this.enterOuterAlt(localContext, 1);
3521
3555
  {
3522
- this.state = 781;
3556
+ this.state = 787;
3523
3557
  this.match(CNextParser.LPAREN);
3524
- this.state = 782;
3558
+ this.state = 788;
3525
3559
  this.type_();
3526
- this.state = 783;
3560
+ this.state = 789;
3527
3561
  this.match(CNextParser.RPAREN);
3528
- this.state = 784;
3562
+ this.state = 790;
3529
3563
  this.unaryExpression();
3530
3564
  }
3531
3565
  }
@@ -3544,41 +3578,41 @@ export class CNextParser extends antlr.Parser {
3544
3578
  }
3545
3579
  public structInitializer(): StructInitializerContext {
3546
3580
  let localContext = new StructInitializerContext(this.context, this.state);
3547
- this.enterRule(localContext, 138, CNextParser.RULE_structInitializer);
3581
+ this.enterRule(localContext, 140, CNextParser.RULE_structInitializer);
3548
3582
  let _la: number;
3549
3583
  try {
3550
- this.state = 796;
3584
+ this.state = 802;
3551
3585
  this.errorHandler.sync(this);
3552
3586
  switch (this.tokenStream.LA(1)) {
3553
3587
  case CNextParser.IDENTIFIER:
3554
3588
  this.enterOuterAlt(localContext, 1);
3555
3589
  {
3556
- this.state = 786;
3590
+ this.state = 792;
3557
3591
  this.match(CNextParser.IDENTIFIER);
3558
- this.state = 787;
3592
+ this.state = 793;
3559
3593
  this.match(CNextParser.LBRACE);
3560
- this.state = 789;
3594
+ this.state = 795;
3561
3595
  this.errorHandler.sync(this);
3562
3596
  _la = this.tokenStream.LA(1);
3563
- if (_la === 113) {
3597
+ if (_la === 114) {
3564
3598
  {
3565
- this.state = 788;
3599
+ this.state = 794;
3566
3600
  this.fieldInitializerList();
3567
3601
  }
3568
3602
  }
3569
3603
 
3570
- this.state = 791;
3604
+ this.state = 797;
3571
3605
  this.match(CNextParser.RBRACE);
3572
3606
  }
3573
3607
  break;
3574
3608
  case CNextParser.LBRACE:
3575
3609
  this.enterOuterAlt(localContext, 2);
3576
3610
  {
3577
- this.state = 792;
3611
+ this.state = 798;
3578
3612
  this.match(CNextParser.LBRACE);
3579
- this.state = 793;
3613
+ this.state = 799;
3580
3614
  this.fieldInitializerList();
3581
- this.state = 794;
3615
+ this.state = 800;
3582
3616
  this.match(CNextParser.RBRACE);
3583
3617
  }
3584
3618
  break;
@@ -3601,38 +3635,38 @@ export class CNextParser extends antlr.Parser {
3601
3635
  }
3602
3636
  public fieldInitializerList(): FieldInitializerListContext {
3603
3637
  let localContext = new FieldInitializerListContext(this.context, this.state);
3604
- this.enterRule(localContext, 140, CNextParser.RULE_fieldInitializerList);
3638
+ this.enterRule(localContext, 142, CNextParser.RULE_fieldInitializerList);
3605
3639
  let _la: number;
3606
3640
  try {
3607
3641
  let alternative: number;
3608
3642
  this.enterOuterAlt(localContext, 1);
3609
3643
  {
3610
- this.state = 798;
3644
+ this.state = 804;
3611
3645
  this.fieldInitializer();
3612
- this.state = 803;
3646
+ this.state = 809;
3613
3647
  this.errorHandler.sync(this);
3614
3648
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 80, this.context);
3615
3649
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3616
3650
  if (alternative === 1) {
3617
3651
  {
3618
3652
  {
3619
- this.state = 799;
3653
+ this.state = 805;
3620
3654
  this.match(CNextParser.COMMA);
3621
- this.state = 800;
3655
+ this.state = 806;
3622
3656
  this.fieldInitializer();
3623
3657
  }
3624
3658
  }
3625
3659
  }
3626
- this.state = 805;
3660
+ this.state = 811;
3627
3661
  this.errorHandler.sync(this);
3628
3662
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 80, this.context);
3629
3663
  }
3630
- this.state = 807;
3664
+ this.state = 813;
3631
3665
  this.errorHandler.sync(this);
3632
3666
  _la = this.tokenStream.LA(1);
3633
- if (_la === 103) {
3667
+ if (_la === 104) {
3634
3668
  {
3635
- this.state = 806;
3669
+ this.state = 812;
3636
3670
  this.match(CNextParser.COMMA);
3637
3671
  }
3638
3672
  }
@@ -3654,15 +3688,15 @@ export class CNextParser extends antlr.Parser {
3654
3688
  }
3655
3689
  public fieldInitializer(): FieldInitializerContext {
3656
3690
  let localContext = new FieldInitializerContext(this.context, this.state);
3657
- this.enterRule(localContext, 142, CNextParser.RULE_fieldInitializer);
3691
+ this.enterRule(localContext, 144, CNextParser.RULE_fieldInitializer);
3658
3692
  try {
3659
3693
  this.enterOuterAlt(localContext, 1);
3660
3694
  {
3661
- this.state = 809;
3695
+ this.state = 815;
3662
3696
  this.match(CNextParser.IDENTIFIER);
3663
- this.state = 810;
3697
+ this.state = 816;
3664
3698
  this.match(CNextParser.COLON);
3665
- this.state = 811;
3699
+ this.state = 817;
3666
3700
  this.expression();
3667
3701
  }
3668
3702
  }
@@ -3681,62 +3715,62 @@ export class CNextParser extends antlr.Parser {
3681
3715
  }
3682
3716
  public arrayInitializer(): ArrayInitializerContext {
3683
3717
  let localContext = new ArrayInitializerContext(this.context, this.state);
3684
- this.enterRule(localContext, 144, CNextParser.RULE_arrayInitializer);
3718
+ this.enterRule(localContext, 146, CNextParser.RULE_arrayInitializer);
3685
3719
  let _la: number;
3686
3720
  try {
3687
3721
  let alternative: number;
3688
- this.state = 832;
3722
+ this.state = 838;
3689
3723
  this.errorHandler.sync(this);
3690
3724
  switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) {
3691
3725
  case 1:
3692
3726
  this.enterOuterAlt(localContext, 1);
3693
3727
  {
3694
- this.state = 813;
3728
+ this.state = 819;
3695
3729
  this.match(CNextParser.LBRACKET);
3696
- this.state = 814;
3730
+ this.state = 820;
3697
3731
  this.arrayInitializerElement();
3698
- this.state = 819;
3732
+ this.state = 825;
3699
3733
  this.errorHandler.sync(this);
3700
3734
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3701
3735
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3702
3736
  if (alternative === 1) {
3703
3737
  {
3704
3738
  {
3705
- this.state = 815;
3739
+ this.state = 821;
3706
3740
  this.match(CNextParser.COMMA);
3707
- this.state = 816;
3741
+ this.state = 822;
3708
3742
  this.arrayInitializerElement();
3709
3743
  }
3710
3744
  }
3711
3745
  }
3712
- this.state = 821;
3746
+ this.state = 827;
3713
3747
  this.errorHandler.sync(this);
3714
3748
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3715
3749
  }
3716
- this.state = 823;
3750
+ this.state = 829;
3717
3751
  this.errorHandler.sync(this);
3718
3752
  _la = this.tokenStream.LA(1);
3719
- if (_la === 103) {
3753
+ if (_la === 104) {
3720
3754
  {
3721
- this.state = 822;
3755
+ this.state = 828;
3722
3756
  this.match(CNextParser.COMMA);
3723
3757
  }
3724
3758
  }
3725
3759
 
3726
- this.state = 825;
3760
+ this.state = 831;
3727
3761
  this.match(CNextParser.RBRACKET);
3728
3762
  }
3729
3763
  break;
3730
3764
  case 2:
3731
3765
  this.enterOuterAlt(localContext, 2);
3732
3766
  {
3733
- this.state = 827;
3767
+ this.state = 833;
3734
3768
  this.match(CNextParser.LBRACKET);
3735
- this.state = 828;
3769
+ this.state = 834;
3736
3770
  this.expression();
3737
- this.state = 829;
3771
+ this.state = 835;
3738
3772
  this.match(CNextParser.STAR);
3739
- this.state = 830;
3773
+ this.state = 836;
3740
3774
  this.match(CNextParser.RBRACKET);
3741
3775
  }
3742
3776
  break;
@@ -3757,29 +3791,29 @@ export class CNextParser extends antlr.Parser {
3757
3791
  }
3758
3792
  public arrayInitializerElement(): ArrayInitializerElementContext {
3759
3793
  let localContext = new ArrayInitializerElementContext(this.context, this.state);
3760
- this.enterRule(localContext, 146, CNextParser.RULE_arrayInitializerElement);
3794
+ this.enterRule(localContext, 148, CNextParser.RULE_arrayInitializerElement);
3761
3795
  try {
3762
- this.state = 837;
3796
+ this.state = 843;
3763
3797
  this.errorHandler.sync(this);
3764
3798
  switch (this.interpreter.adaptivePredict(this.tokenStream, 85, this.context) ) {
3765
3799
  case 1:
3766
3800
  this.enterOuterAlt(localContext, 1);
3767
3801
  {
3768
- this.state = 834;
3802
+ this.state = 840;
3769
3803
  this.expression();
3770
3804
  }
3771
3805
  break;
3772
3806
  case 2:
3773
3807
  this.enterOuterAlt(localContext, 2);
3774
3808
  {
3775
- this.state = 835;
3809
+ this.state = 841;
3776
3810
  this.structInitializer();
3777
3811
  }
3778
3812
  break;
3779
3813
  case 3:
3780
3814
  this.enterOuterAlt(localContext, 3);
3781
3815
  {
3782
- this.state = 836;
3816
+ this.state = 842;
3783
3817
  this.arrayInitializer();
3784
3818
  }
3785
3819
  break;
@@ -3800,26 +3834,26 @@ export class CNextParser extends antlr.Parser {
3800
3834
  }
3801
3835
  public argumentList(): ArgumentListContext {
3802
3836
  let localContext = new ArgumentListContext(this.context, this.state);
3803
- this.enterRule(localContext, 148, CNextParser.RULE_argumentList);
3837
+ this.enterRule(localContext, 150, CNextParser.RULE_argumentList);
3804
3838
  let _la: number;
3805
3839
  try {
3806
3840
  this.enterOuterAlt(localContext, 1);
3807
3841
  {
3808
- this.state = 839;
3842
+ this.state = 845;
3809
3843
  this.expression();
3810
- this.state = 844;
3844
+ this.state = 850;
3811
3845
  this.errorHandler.sync(this);
3812
3846
  _la = this.tokenStream.LA(1);
3813
- while (_la === 103) {
3847
+ while (_la === 104) {
3814
3848
  {
3815
3849
  {
3816
- this.state = 840;
3850
+ this.state = 846;
3817
3851
  this.match(CNextParser.COMMA);
3818
- this.state = 841;
3852
+ this.state = 847;
3819
3853
  this.expression();
3820
3854
  }
3821
3855
  }
3822
- this.state = 846;
3856
+ this.state = 852;
3823
3857
  this.errorHandler.sync(this);
3824
3858
  _la = this.tokenStream.LA(1);
3825
3859
  }
@@ -3840,71 +3874,71 @@ export class CNextParser extends antlr.Parser {
3840
3874
  }
3841
3875
  public type_(): TypeContext {
3842
3876
  let localContext = new TypeContext(this.context, this.state);
3843
- this.enterRule(localContext, 150, CNextParser.RULE_type);
3877
+ this.enterRule(localContext, 152, CNextParser.RULE_type);
3844
3878
  try {
3845
- this.state = 856;
3879
+ this.state = 862;
3846
3880
  this.errorHandler.sync(this);
3847
3881
  switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) {
3848
3882
  case 1:
3849
3883
  this.enterOuterAlt(localContext, 1);
3850
3884
  {
3851
- this.state = 847;
3885
+ this.state = 853;
3852
3886
  this.primitiveType();
3853
3887
  }
3854
3888
  break;
3855
3889
  case 2:
3856
3890
  this.enterOuterAlt(localContext, 2);
3857
3891
  {
3858
- this.state = 848;
3892
+ this.state = 854;
3859
3893
  this.stringType();
3860
3894
  }
3861
3895
  break;
3862
3896
  case 3:
3863
3897
  this.enterOuterAlt(localContext, 3);
3864
3898
  {
3865
- this.state = 849;
3899
+ this.state = 855;
3866
3900
  this.scopedType();
3867
3901
  }
3868
3902
  break;
3869
3903
  case 4:
3870
3904
  this.enterOuterAlt(localContext, 4);
3871
3905
  {
3872
- this.state = 850;
3906
+ this.state = 856;
3873
3907
  this.globalType();
3874
3908
  }
3875
3909
  break;
3876
3910
  case 5:
3877
3911
  this.enterOuterAlt(localContext, 5);
3878
3912
  {
3879
- this.state = 851;
3913
+ this.state = 857;
3880
3914
  this.qualifiedType();
3881
3915
  }
3882
3916
  break;
3883
3917
  case 6:
3884
3918
  this.enterOuterAlt(localContext, 6);
3885
3919
  {
3886
- this.state = 852;
3920
+ this.state = 858;
3887
3921
  this.templateType();
3888
3922
  }
3889
3923
  break;
3890
3924
  case 7:
3891
3925
  this.enterOuterAlt(localContext, 7);
3892
3926
  {
3893
- this.state = 853;
3927
+ this.state = 859;
3894
3928
  this.userType();
3895
3929
  }
3896
3930
  break;
3897
3931
  case 8:
3898
3932
  this.enterOuterAlt(localContext, 8);
3899
3933
  {
3900
- this.state = 854;
3934
+ this.state = 860;
3901
3935
  this.arrayType();
3902
3936
  }
3903
3937
  break;
3904
3938
  case 9:
3905
3939
  this.enterOuterAlt(localContext, 9);
3906
3940
  {
3907
- this.state = 855;
3941
+ this.state = 861;
3908
3942
  this.match(CNextParser.VOID);
3909
3943
  }
3910
3944
  break;
@@ -3925,15 +3959,15 @@ export class CNextParser extends antlr.Parser {
3925
3959
  }
3926
3960
  public scopedType(): ScopedTypeContext {
3927
3961
  let localContext = new ScopedTypeContext(this.context, this.state);
3928
- this.enterRule(localContext, 152, CNextParser.RULE_scopedType);
3962
+ this.enterRule(localContext, 154, CNextParser.RULE_scopedType);
3929
3963
  try {
3930
3964
  this.enterOuterAlt(localContext, 1);
3931
3965
  {
3932
- this.state = 858;
3966
+ this.state = 864;
3933
3967
  this.match(CNextParser.THIS);
3934
- this.state = 859;
3968
+ this.state = 865;
3935
3969
  this.match(CNextParser.DOT);
3936
- this.state = 860;
3970
+ this.state = 866;
3937
3971
  this.match(CNextParser.IDENTIFIER);
3938
3972
  }
3939
3973
  }
@@ -3952,15 +3986,15 @@ export class CNextParser extends antlr.Parser {
3952
3986
  }
3953
3987
  public globalType(): GlobalTypeContext {
3954
3988
  let localContext = new GlobalTypeContext(this.context, this.state);
3955
- this.enterRule(localContext, 154, CNextParser.RULE_globalType);
3989
+ this.enterRule(localContext, 156, CNextParser.RULE_globalType);
3956
3990
  try {
3957
3991
  this.enterOuterAlt(localContext, 1);
3958
3992
  {
3959
- this.state = 862;
3993
+ this.state = 868;
3960
3994
  this.match(CNextParser.GLOBAL);
3961
- this.state = 863;
3995
+ this.state = 869;
3962
3996
  this.match(CNextParser.DOT);
3963
- this.state = 864;
3997
+ this.state = 870;
3964
3998
  this.match(CNextParser.IDENTIFIER);
3965
3999
  }
3966
4000
  }
@@ -3979,29 +4013,29 @@ export class CNextParser extends antlr.Parser {
3979
4013
  }
3980
4014
  public qualifiedType(): QualifiedTypeContext {
3981
4015
  let localContext = new QualifiedTypeContext(this.context, this.state);
3982
- this.enterRule(localContext, 156, CNextParser.RULE_qualifiedType);
4016
+ this.enterRule(localContext, 158, CNextParser.RULE_qualifiedType);
3983
4017
  let _la: number;
3984
4018
  try {
3985
4019
  this.enterOuterAlt(localContext, 1);
3986
4020
  {
3987
- this.state = 866;
4021
+ this.state = 872;
3988
4022
  this.match(CNextParser.IDENTIFIER);
3989
- this.state = 869;
4023
+ this.state = 875;
3990
4024
  this.errorHandler.sync(this);
3991
4025
  _la = this.tokenStream.LA(1);
3992
4026
  do {
3993
4027
  {
3994
4028
  {
3995
- this.state = 867;
4029
+ this.state = 873;
3996
4030
  this.match(CNextParser.DOT);
3997
- this.state = 868;
4031
+ this.state = 874;
3998
4032
  this.match(CNextParser.IDENTIFIER);
3999
4033
  }
4000
4034
  }
4001
- this.state = 871;
4035
+ this.state = 877;
4002
4036
  this.errorHandler.sync(this);
4003
4037
  _la = this.tokenStream.LA(1);
4004
- } while (_la === 104);
4038
+ } while (_la === 105);
4005
4039
  }
4006
4040
  }
4007
4041
  catch (re) {
@@ -4019,14 +4053,14 @@ export class CNextParser extends antlr.Parser {
4019
4053
  }
4020
4054
  public primitiveType(): PrimitiveTypeContext {
4021
4055
  let localContext = new PrimitiveTypeContext(this.context, this.state);
4022
- this.enterRule(localContext, 158, CNextParser.RULE_primitiveType);
4056
+ this.enterRule(localContext, 160, CNextParser.RULE_primitiveType);
4023
4057
  let _la: number;
4024
4058
  try {
4025
4059
  this.enterOuterAlt(localContext, 1);
4026
4060
  {
4027
- this.state = 873;
4061
+ this.state = 879;
4028
4062
  _la = this.tokenStream.LA(1);
4029
- if(!(((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 4095) !== 0))) {
4063
+ if(!(((((_la - 54)) & ~0x1F) === 0 && ((1 << (_la - 54)) & 4095) !== 0))) {
4030
4064
  this.errorHandler.recoverInline(this);
4031
4065
  }
4032
4066
  else {
@@ -4050,11 +4084,11 @@ export class CNextParser extends antlr.Parser {
4050
4084
  }
4051
4085
  public userType(): UserTypeContext {
4052
4086
  let localContext = new UserTypeContext(this.context, this.state);
4053
- this.enterRule(localContext, 160, CNextParser.RULE_userType);
4087
+ this.enterRule(localContext, 162, CNextParser.RULE_userType);
4054
4088
  try {
4055
4089
  this.enterOuterAlt(localContext, 1);
4056
4090
  {
4057
- this.state = 875;
4091
+ this.state = 881;
4058
4092
  this.match(CNextParser.IDENTIFIER);
4059
4093
  }
4060
4094
  }
@@ -4073,17 +4107,17 @@ export class CNextParser extends antlr.Parser {
4073
4107
  }
4074
4108
  public templateType(): TemplateTypeContext {
4075
4109
  let localContext = new TemplateTypeContext(this.context, this.state);
4076
- this.enterRule(localContext, 162, CNextParser.RULE_templateType);
4110
+ this.enterRule(localContext, 164, CNextParser.RULE_templateType);
4077
4111
  try {
4078
4112
  this.enterOuterAlt(localContext, 1);
4079
4113
  {
4080
- this.state = 877;
4114
+ this.state = 883;
4081
4115
  this.match(CNextParser.IDENTIFIER);
4082
- this.state = 878;
4116
+ this.state = 884;
4083
4117
  this.match(CNextParser.LT);
4084
- this.state = 879;
4118
+ this.state = 885;
4085
4119
  this.templateArgumentList();
4086
- this.state = 880;
4120
+ this.state = 886;
4087
4121
  this.match(CNextParser.GT);
4088
4122
  }
4089
4123
  }
@@ -4102,26 +4136,26 @@ export class CNextParser extends antlr.Parser {
4102
4136
  }
4103
4137
  public templateArgumentList(): TemplateArgumentListContext {
4104
4138
  let localContext = new TemplateArgumentListContext(this.context, this.state);
4105
- this.enterRule(localContext, 164, CNextParser.RULE_templateArgumentList);
4139
+ this.enterRule(localContext, 166, CNextParser.RULE_templateArgumentList);
4106
4140
  let _la: number;
4107
4141
  try {
4108
4142
  this.enterOuterAlt(localContext, 1);
4109
4143
  {
4110
- this.state = 882;
4144
+ this.state = 888;
4111
4145
  this.templateArgument();
4112
- this.state = 887;
4146
+ this.state = 893;
4113
4147
  this.errorHandler.sync(this);
4114
4148
  _la = this.tokenStream.LA(1);
4115
- while (_la === 103) {
4149
+ while (_la === 104) {
4116
4150
  {
4117
4151
  {
4118
- this.state = 883;
4152
+ this.state = 889;
4119
4153
  this.match(CNextParser.COMMA);
4120
- this.state = 884;
4154
+ this.state = 890;
4121
4155
  this.templateArgument();
4122
4156
  }
4123
4157
  }
4124
- this.state = 889;
4158
+ this.state = 895;
4125
4159
  this.errorHandler.sync(this);
4126
4160
  _la = this.tokenStream.LA(1);
4127
4161
  }
@@ -4142,36 +4176,36 @@ export class CNextParser extends antlr.Parser {
4142
4176
  }
4143
4177
  public templateArgument(): TemplateArgumentContext {
4144
4178
  let localContext = new TemplateArgumentContext(this.context, this.state);
4145
- this.enterRule(localContext, 166, CNextParser.RULE_templateArgument);
4179
+ this.enterRule(localContext, 168, CNextParser.RULE_templateArgument);
4146
4180
  try {
4147
- this.state = 894;
4181
+ this.state = 900;
4148
4182
  this.errorHandler.sync(this);
4149
4183
  switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) {
4150
4184
  case 1:
4151
4185
  this.enterOuterAlt(localContext, 1);
4152
4186
  {
4153
- this.state = 890;
4187
+ this.state = 896;
4154
4188
  this.templateType();
4155
4189
  }
4156
4190
  break;
4157
4191
  case 2:
4158
4192
  this.enterOuterAlt(localContext, 2);
4159
4193
  {
4160
- this.state = 891;
4194
+ this.state = 897;
4161
4195
  this.primitiveType();
4162
4196
  }
4163
4197
  break;
4164
4198
  case 3:
4165
4199
  this.enterOuterAlt(localContext, 3);
4166
4200
  {
4167
- this.state = 892;
4201
+ this.state = 898;
4168
4202
  this.match(CNextParser.IDENTIFIER);
4169
4203
  }
4170
4204
  break;
4171
4205
  case 4:
4172
4206
  this.enterOuterAlt(localContext, 4);
4173
4207
  {
4174
- this.state = 893;
4208
+ this.state = 899;
4175
4209
  this.match(CNextParser.INTEGER_LITERAL);
4176
4210
  }
4177
4211
  break;
@@ -4192,28 +4226,28 @@ export class CNextParser extends antlr.Parser {
4192
4226
  }
4193
4227
  public stringType(): StringTypeContext {
4194
4228
  let localContext = new StringTypeContext(this.context, this.state);
4195
- this.enterRule(localContext, 168, CNextParser.RULE_stringType);
4229
+ this.enterRule(localContext, 170, CNextParser.RULE_stringType);
4196
4230
  try {
4197
- this.state = 901;
4231
+ this.state = 907;
4198
4232
  this.errorHandler.sync(this);
4199
4233
  switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) {
4200
4234
  case 1:
4201
4235
  this.enterOuterAlt(localContext, 1);
4202
4236
  {
4203
- this.state = 896;
4237
+ this.state = 902;
4204
4238
  this.match(CNextParser.STRING);
4205
- this.state = 897;
4239
+ this.state = 903;
4206
4240
  this.match(CNextParser.LT);
4207
- this.state = 898;
4241
+ this.state = 904;
4208
4242
  this.match(CNextParser.INTEGER_LITERAL);
4209
- this.state = 899;
4243
+ this.state = 905;
4210
4244
  this.match(CNextParser.GT);
4211
4245
  }
4212
4246
  break;
4213
4247
  case 2:
4214
4248
  this.enterOuterAlt(localContext, 2);
4215
4249
  {
4216
- this.state = 900;
4250
+ this.state = 906;
4217
4251
  this.match(CNextParser.STRING);
4218
4252
  }
4219
4253
  break;
@@ -4234,88 +4268,138 @@ export class CNextParser extends antlr.Parser {
4234
4268
  }
4235
4269
  public arrayType(): ArrayTypeContext {
4236
4270
  let localContext = new ArrayTypeContext(this.context, this.state);
4237
- this.enterRule(localContext, 170, CNextParser.RULE_arrayType);
4271
+ this.enterRule(localContext, 172, CNextParser.RULE_arrayType);
4238
4272
  let _la: number;
4239
4273
  try {
4240
- this.state = 921;
4274
+ this.state = 945;
4241
4275
  this.errorHandler.sync(this);
4242
- switch (this.tokenStream.LA(1)) {
4243
- case CNextParser.U8:
4244
- case CNextParser.U16:
4245
- case CNextParser.U32:
4246
- case CNextParser.U64:
4247
- case CNextParser.I8:
4248
- case CNextParser.I16:
4249
- case CNextParser.I32:
4250
- case CNextParser.I64:
4251
- case CNextParser.F32:
4252
- case CNextParser.F64:
4253
- case CNextParser.BOOL:
4254
- case CNextParser.ISR_TYPE:
4276
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 98, this.context) ) {
4277
+ case 1:
4255
4278
  this.enterOuterAlt(localContext, 1);
4256
4279
  {
4257
- this.state = 903;
4280
+ this.state = 909;
4258
4281
  this.primitiveType();
4259
- this.state = 905;
4282
+ this.state = 911;
4260
4283
  this.errorHandler.sync(this);
4261
4284
  _la = this.tokenStream.LA(1);
4262
4285
  do {
4263
4286
  {
4264
4287
  {
4265
- this.state = 904;
4288
+ this.state = 910;
4266
4289
  this.arrayTypeDimension();
4267
4290
  }
4268
4291
  }
4269
- this.state = 907;
4292
+ this.state = 913;
4270
4293
  this.errorHandler.sync(this);
4271
4294
  _la = this.tokenStream.LA(1);
4272
- } while (_la === 100);
4295
+ } while (_la === 101);
4273
4296
  }
4274
4297
  break;
4275
- case CNextParser.IDENTIFIER:
4298
+ case 2:
4276
4299
  this.enterOuterAlt(localContext, 2);
4277
4300
  {
4278
- this.state = 909;
4301
+ this.state = 915;
4279
4302
  this.userType();
4280
- this.state = 911;
4303
+ this.state = 917;
4281
4304
  this.errorHandler.sync(this);
4282
4305
  _la = this.tokenStream.LA(1);
4283
4306
  do {
4284
4307
  {
4285
4308
  {
4286
- this.state = 910;
4309
+ this.state = 916;
4287
4310
  this.arrayTypeDimension();
4288
4311
  }
4289
4312
  }
4290
- this.state = 913;
4313
+ this.state = 919;
4291
4314
  this.errorHandler.sync(this);
4292
4315
  _la = this.tokenStream.LA(1);
4293
- } while (_la === 100);
4316
+ } while (_la === 101);
4294
4317
  }
4295
4318
  break;
4296
- case CNextParser.STRING:
4319
+ case 3:
4297
4320
  this.enterOuterAlt(localContext, 3);
4298
4321
  {
4299
- this.state = 915;
4322
+ this.state = 921;
4300
4323
  this.stringType();
4301
- this.state = 917;
4324
+ this.state = 923;
4302
4325
  this.errorHandler.sync(this);
4303
4326
  _la = this.tokenStream.LA(1);
4304
4327
  do {
4305
4328
  {
4306
4329
  {
4307
- this.state = 916;
4330
+ this.state = 922;
4308
4331
  this.arrayTypeDimension();
4309
4332
  }
4310
4333
  }
4311
- this.state = 919;
4334
+ this.state = 925;
4312
4335
  this.errorHandler.sync(this);
4313
4336
  _la = this.tokenStream.LA(1);
4314
- } while (_la === 100);
4337
+ } while (_la === 101);
4338
+ }
4339
+ break;
4340
+ case 4:
4341
+ this.enterOuterAlt(localContext, 4);
4342
+ {
4343
+ this.state = 927;
4344
+ this.scopedType();
4345
+ this.state = 929;
4346
+ this.errorHandler.sync(this);
4347
+ _la = this.tokenStream.LA(1);
4348
+ do {
4349
+ {
4350
+ {
4351
+ this.state = 928;
4352
+ this.arrayTypeDimension();
4353
+ }
4354
+ }
4355
+ this.state = 931;
4356
+ this.errorHandler.sync(this);
4357
+ _la = this.tokenStream.LA(1);
4358
+ } while (_la === 101);
4359
+ }
4360
+ break;
4361
+ case 5:
4362
+ this.enterOuterAlt(localContext, 5);
4363
+ {
4364
+ this.state = 933;
4365
+ this.qualifiedType();
4366
+ this.state = 935;
4367
+ this.errorHandler.sync(this);
4368
+ _la = this.tokenStream.LA(1);
4369
+ do {
4370
+ {
4371
+ {
4372
+ this.state = 934;
4373
+ this.arrayTypeDimension();
4374
+ }
4375
+ }
4376
+ this.state = 937;
4377
+ this.errorHandler.sync(this);
4378
+ _la = this.tokenStream.LA(1);
4379
+ } while (_la === 101);
4380
+ }
4381
+ break;
4382
+ case 6:
4383
+ this.enterOuterAlt(localContext, 6);
4384
+ {
4385
+ this.state = 939;
4386
+ this.globalType();
4387
+ this.state = 941;
4388
+ this.errorHandler.sync(this);
4389
+ _la = this.tokenStream.LA(1);
4390
+ do {
4391
+ {
4392
+ {
4393
+ this.state = 940;
4394
+ this.arrayTypeDimension();
4395
+ }
4396
+ }
4397
+ this.state = 943;
4398
+ this.errorHandler.sync(this);
4399
+ _la = this.tokenStream.LA(1);
4400
+ } while (_la === 101);
4315
4401
  }
4316
4402
  break;
4317
- default:
4318
- throw new antlr.NoViableAltException(this);
4319
4403
  }
4320
4404
  }
4321
4405
  catch (re) {
@@ -4333,24 +4417,24 @@ export class CNextParser extends antlr.Parser {
4333
4417
  }
4334
4418
  public arrayTypeDimension(): ArrayTypeDimensionContext {
4335
4419
  let localContext = new ArrayTypeDimensionContext(this.context, this.state);
4336
- this.enterRule(localContext, 172, CNextParser.RULE_arrayTypeDimension);
4420
+ this.enterRule(localContext, 174, CNextParser.RULE_arrayTypeDimension);
4337
4421
  let _la: number;
4338
4422
  try {
4339
4423
  this.enterOuterAlt(localContext, 1);
4340
4424
  {
4341
- this.state = 923;
4425
+ this.state = 947;
4342
4426
  this.match(CNextParser.LBRACKET);
4343
- this.state = 925;
4427
+ this.state = 949;
4344
4428
  this.errorHandler.sync(this);
4345
4429
  _la = this.tokenStream.LA(1);
4346
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147532800) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1966091) !== 0) || ((((_la - 83)) & ~0x1F) === 0 && ((1 << (_la - 83)) & 2130879681) !== 0)) {
4430
+ if (_la === 14 || _la === 15 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932183) !== 0) || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 2130879681) !== 0)) {
4347
4431
  {
4348
- this.state = 924;
4432
+ this.state = 948;
4349
4433
  this.expression();
4350
4434
  }
4351
4435
  }
4352
4436
 
4353
- this.state = 927;
4437
+ this.state = 951;
4354
4438
  this.match(CNextParser.RBRACKET);
4355
4439
  }
4356
4440
  }
@@ -4369,14 +4453,14 @@ export class CNextParser extends antlr.Parser {
4369
4453
  }
4370
4454
  public literal(): LiteralContext {
4371
4455
  let localContext = new LiteralContext(this.context, this.state);
4372
- this.enterRule(localContext, 174, CNextParser.RULE_literal);
4456
+ this.enterRule(localContext, 176, CNextParser.RULE_literal);
4373
4457
  let _la: number;
4374
4458
  try {
4375
4459
  this.enterOuterAlt(localContext, 1);
4376
4460
  {
4377
- this.state = 929;
4461
+ this.state = 953;
4378
4462
  _la = this.tokenStream.LA(1);
4379
- if(!(((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & 3932167) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 63) !== 0))) {
4463
+ if(!(((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3932167) !== 0) || ((((_la - 108)) & ~0x1F) === 0 && ((1 << (_la - 108)) & 63) !== 0))) {
4380
4464
  this.errorHandler.recoverInline(this);
4381
4465
  }
4382
4466
  else {
@@ -4400,7 +4484,7 @@ export class CNextParser extends antlr.Parser {
4400
4484
  }
4401
4485
 
4402
4486
  public static readonly _serializedATN: number[] = [
4403
- 4,1,117,932,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,
4487
+ 4,1,118,956,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,
4404
4488
  7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,
4405
4489
  13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,
4406
4490
  20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,
@@ -4413,340 +4497,351 @@ export class CNextParser extends antlr.Parser {
4413
4497
  65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,
4414
4498
  72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,
4415
4499
  78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,
4416
- 85,7,85,2,86,7,86,2,87,7,87,1,0,1,0,5,0,179,8,0,10,0,12,0,182,9,
4417
- 0,1,0,5,0,185,8,0,10,0,12,0,188,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,
4418
- 3,2,197,8,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,
4419
- 3,6,212,8,6,1,7,1,7,1,7,1,7,5,7,218,8,7,10,7,12,7,221,9,7,1,7,1,
4420
- 7,1,8,3,8,226,8,8,1,8,1,8,3,8,230,8,8,1,8,1,8,3,8,234,8,8,1,8,1,
4421
- 8,3,8,238,8,8,1,8,1,8,3,8,242,8,8,1,8,1,8,3,8,246,8,8,1,8,3,8,249,
4422
- 8,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,5,10,259,8,10,10,10,12,
4423
- 10,262,9,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,273,
4424
- 8,11,1,12,1,12,1,13,1,13,1,13,1,13,5,13,281,8,13,10,13,12,13,284,
4425
- 9,13,1,13,1,13,1,14,1,14,1,14,5,14,291,8,14,10,14,12,14,294,9,14,
4426
- 1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,5,15,304,8,15,10,15,12,15,
4427
- 307,9,15,1,15,3,15,310,8,15,1,15,1,15,1,16,1,16,1,16,3,16,317,8,
4428
- 16,1,17,1,17,1,17,1,17,1,17,1,17,5,17,325,8,17,10,17,12,17,328,9,
4429
- 17,1,17,3,17,331,8,17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,19,3,
4430
- 19,341,8,19,1,20,1,20,1,20,1,20,3,20,347,8,20,1,20,1,20,1,20,1,21,
4431
- 1,21,1,21,5,21,355,8,21,10,21,12,21,358,9,21,1,22,3,22,361,8,22,
4432
- 1,22,1,22,1,22,5,22,366,8,22,10,22,12,22,369,9,22,1,23,1,23,1,24,
4433
- 1,24,1,25,1,25,1,26,1,26,1,27,1,27,3,27,381,8,27,1,27,1,27,1,28,
4434
- 3,28,386,8,28,1,28,3,28,389,8,28,1,28,3,28,392,8,28,1,28,3,28,395,
4435
- 8,28,1,28,1,28,1,28,5,28,400,8,28,10,28,12,28,403,9,28,1,28,1,28,
4436
- 3,28,407,8,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,
4437
- 418,8,28,1,29,1,29,1,29,5,29,423,8,29,10,29,12,29,426,9,29,1,30,
4438
- 1,30,5,30,430,8,30,10,30,12,30,433,9,30,1,30,1,30,1,31,1,31,1,31,
4439
- 1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,448,8,31,1,32,1,32,
4440
- 1,32,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,35,5,35,
4441
- 464,8,35,10,35,12,35,467,9,35,1,35,1,35,1,35,1,35,5,35,473,8,35,
4442
- 10,35,12,35,476,9,35,1,35,1,35,5,35,480,8,35,10,35,12,35,483,9,35,
4443
- 3,35,485,8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,
4444
- 1,36,1,36,3,36,499,8,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,
4445
- 1,38,1,38,3,38,511,8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,
4446
- 1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,3,41,530,8,41,1,41,
4447
- 1,41,3,41,534,8,41,1,41,1,41,3,41,538,8,41,1,41,1,41,1,41,1,42,1,
4448
- 42,3,42,545,8,42,1,43,3,43,548,8,43,1,43,3,43,551,8,43,1,43,3,43,
4449
- 554,8,43,1,43,1,43,1,43,5,43,559,8,43,10,43,12,43,562,9,43,1,43,
4450
- 1,43,3,43,566,8,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,
4451
- 1,46,3,46,578,8,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,4,47,
4452
- 588,8,47,11,47,12,47,589,1,47,3,47,593,8,47,1,47,1,47,1,48,1,48,
4453
- 1,48,1,48,5,48,601,8,48,10,48,12,48,604,9,48,1,48,1,48,1,49,1,49,
4454
- 1,49,3,49,611,8,49,1,49,1,49,3,49,615,8,49,1,49,1,49,1,49,3,49,620,
4455
- 8,49,1,50,1,50,1,50,1,50,3,50,626,8,50,1,50,1,50,1,51,1,51,1,52,
4456
- 1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,641,8,52,1,53,1,53,
4457
- 1,53,5,53,646,8,53,10,53,12,53,649,9,53,1,54,1,54,1,54,5,54,654,
4458
- 8,54,10,54,12,54,657,9,54,1,55,1,55,1,55,5,55,662,8,55,10,55,12,
4459
- 55,665,9,55,1,56,1,56,1,56,5,56,670,8,56,10,56,12,56,673,9,56,1,
4460
- 57,1,57,1,57,5,57,678,8,57,10,57,12,57,681,9,57,1,58,1,58,1,58,5,
4461
- 58,686,8,58,10,58,12,58,689,9,58,1,59,1,59,1,59,5,59,694,8,59,10,
4462
- 59,12,59,697,9,59,1,60,1,60,1,60,5,60,702,8,60,10,60,12,60,705,9,
4463
- 60,1,61,1,61,1,61,5,61,710,8,61,10,61,12,61,713,9,61,1,62,1,62,1,
4464
- 62,5,62,718,8,62,10,62,12,62,721,9,62,1,63,1,63,1,63,1,63,1,63,1,
4465
- 63,1,63,1,63,1,63,3,63,732,8,63,1,64,1,64,5,64,736,8,64,10,64,12,
4466
- 64,739,9,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,
4467
- 65,1,65,1,65,1,65,3,65,755,8,65,1,65,3,65,758,8,65,1,66,1,66,1,66,
4468
- 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,772,8,66,1,67,
4469
- 1,67,1,67,1,67,3,67,778,8,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,
4470
- 1,69,1,69,1,69,3,69,790,8,69,1,69,1,69,1,69,1,69,1,69,3,69,797,8,
4471
- 69,1,70,1,70,1,70,5,70,802,8,70,10,70,12,70,805,9,70,1,70,3,70,808,
4472
- 8,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,5,72,818,8,72,10,72,
4473
- 12,72,821,9,72,1,72,3,72,824,8,72,1,72,1,72,1,72,1,72,1,72,1,72,
4474
- 1,72,3,72,833,8,72,1,73,1,73,1,73,3,73,838,8,73,1,74,1,74,1,74,5,
4475
- 74,843,8,74,10,74,12,74,846,9,74,1,75,1,75,1,75,1,75,1,75,1,75,1,
4476
- 75,1,75,1,75,3,75,857,8,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,
4477
- 77,1,78,1,78,1,78,4,78,870,8,78,11,78,12,78,871,1,79,1,79,1,80,1,
4478
- 80,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,5,82,886,8,82,10,82,12,
4479
- 82,889,9,82,1,83,1,83,1,83,1,83,3,83,895,8,83,1,84,1,84,1,84,1,84,
4480
- 1,84,3,84,902,8,84,1,85,1,85,4,85,906,8,85,11,85,12,85,907,1,85,
4481
- 1,85,4,85,912,8,85,11,85,12,85,913,1,85,1,85,4,85,918,8,85,11,85,
4482
- 12,85,919,3,85,922,8,85,1,86,1,86,3,86,926,8,86,1,86,1,86,1,87,1,
4483
- 87,1,87,0,0,88,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,
4484
- 36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,
4485
- 80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,
4486
- 118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,
4487
- 150,152,154,156,158,160,162,164,166,168,170,172,174,0,14,1,0,3,5,
4488
- 1,0,6,9,1,0,17,18,1,0,40,44,1,0,36,39,1,0,45,46,1,0,65,75,1,0,76,
4489
- 77,1,0,78,81,1,0,94,95,1,0,82,83,1,0,84,86,1,0,53,64,3,0,31,33,49,
4490
- 52,107,112,988,0,180,1,0,0,0,2,191,1,0,0,0,4,196,1,0,0,0,6,198,1,
4491
- 0,0,0,8,200,1,0,0,0,10,202,1,0,0,0,12,211,1,0,0,0,14,213,1,0,0,0,
4492
- 16,248,1,0,0,0,18,250,1,0,0,0,20,252,1,0,0,0,22,265,1,0,0,0,24,274,
4493
- 1,0,0,0,26,276,1,0,0,0,28,287,1,0,0,0,30,297,1,0,0,0,32,313,1,0,
4494
- 0,0,34,318,1,0,0,0,36,334,1,0,0,0,38,336,1,0,0,0,40,342,1,0,0,0,
4495
- 42,351,1,0,0,0,44,360,1,0,0,0,46,370,1,0,0,0,48,372,1,0,0,0,50,374,
4496
- 1,0,0,0,52,376,1,0,0,0,54,378,1,0,0,0,56,417,1,0,0,0,58,419,1,0,
4497
- 0,0,60,427,1,0,0,0,62,447,1,0,0,0,64,449,1,0,0,0,66,452,1,0,0,0,
4498
- 68,457,1,0,0,0,70,484,1,0,0,0,72,498,1,0,0,0,74,500,1,0,0,0,76,503,
4499
- 1,0,0,0,78,512,1,0,0,0,80,518,1,0,0,0,82,526,1,0,0,0,84,544,1,0,
4500
- 0,0,86,547,1,0,0,0,88,567,1,0,0,0,90,571,1,0,0,0,92,575,1,0,0,0,
4501
- 94,581,1,0,0,0,96,596,1,0,0,0,98,619,1,0,0,0,100,621,1,0,0,0,102,
4502
- 629,1,0,0,0,104,640,1,0,0,0,106,642,1,0,0,0,108,650,1,0,0,0,110,
4503
- 658,1,0,0,0,112,666,1,0,0,0,114,674,1,0,0,0,116,682,1,0,0,0,118,
4504
- 690,1,0,0,0,120,698,1,0,0,0,122,706,1,0,0,0,124,714,1,0,0,0,126,
4505
- 731,1,0,0,0,128,733,1,0,0,0,130,757,1,0,0,0,132,771,1,0,0,0,134,
4506
- 773,1,0,0,0,136,781,1,0,0,0,138,796,1,0,0,0,140,798,1,0,0,0,142,
4507
- 809,1,0,0,0,144,832,1,0,0,0,146,837,1,0,0,0,148,839,1,0,0,0,150,
4508
- 856,1,0,0,0,152,858,1,0,0,0,154,862,1,0,0,0,156,866,1,0,0,0,158,
4509
- 873,1,0,0,0,160,875,1,0,0,0,162,877,1,0,0,0,164,882,1,0,0,0,166,
4510
- 894,1,0,0,0,168,901,1,0,0,0,170,921,1,0,0,0,172,923,1,0,0,0,174,
4511
- 929,1,0,0,0,176,179,3,2,1,0,177,179,3,4,2,0,178,176,1,0,0,0,178,
4512
- 177,1,0,0,0,179,182,1,0,0,0,180,178,1,0,0,0,180,181,1,0,0,0,181,
4513
- 186,1,0,0,0,182,180,1,0,0,0,183,185,3,12,6,0,184,183,1,0,0,0,185,
4514
- 188,1,0,0,0,186,184,1,0,0,0,186,187,1,0,0,0,187,189,1,0,0,0,188,
4515
- 186,1,0,0,0,189,190,5,0,0,1,190,1,1,0,0,0,191,192,5,2,0,0,192,3,
4516
- 1,0,0,0,193,197,3,6,3,0,194,197,3,8,4,0,195,197,3,10,5,0,196,193,
4517
- 1,0,0,0,196,194,1,0,0,0,196,195,1,0,0,0,197,5,1,0,0,0,198,199,7,
4518
- 0,0,0,199,7,1,0,0,0,200,201,7,1,0,0,201,9,1,0,0,0,202,203,5,10,0,
4519
- 0,203,11,1,0,0,0,204,212,3,14,7,0,205,212,3,20,10,0,206,212,3,26,
4520
- 13,0,207,212,3,30,15,0,208,212,3,34,17,0,209,212,3,40,20,0,210,212,
4521
- 3,56,28,0,211,204,1,0,0,0,211,205,1,0,0,0,211,206,1,0,0,0,211,207,
4522
- 1,0,0,0,211,208,1,0,0,0,211,209,1,0,0,0,211,210,1,0,0,0,212,13,1,
4523
- 0,0,0,213,214,5,11,0,0,214,215,5,113,0,0,215,219,5,98,0,0,216,218,
4524
- 3,16,8,0,217,216,1,0,0,0,218,221,1,0,0,0,219,217,1,0,0,0,219,220,
4525
- 1,0,0,0,220,222,1,0,0,0,221,219,1,0,0,0,222,223,5,99,0,0,223,15,
4526
- 1,0,0,0,224,226,3,18,9,0,225,224,1,0,0,0,225,226,1,0,0,0,226,227,
4527
- 1,0,0,0,227,249,3,56,28,0,228,230,3,18,9,0,229,228,1,0,0,0,229,230,
4528
- 1,0,0,0,230,231,1,0,0,0,231,249,3,40,20,0,232,234,3,18,9,0,233,232,
4529
- 1,0,0,0,233,234,1,0,0,0,234,235,1,0,0,0,235,249,3,30,15,0,236,238,
4530
- 3,18,9,0,237,236,1,0,0,0,237,238,1,0,0,0,238,239,1,0,0,0,239,249,
4531
- 3,34,17,0,240,242,3,18,9,0,241,240,1,0,0,0,241,242,1,0,0,0,242,243,
4532
- 1,0,0,0,243,249,3,20,10,0,244,246,3,18,9,0,245,244,1,0,0,0,245,246,
4533
- 1,0,0,0,246,247,1,0,0,0,247,249,3,26,13,0,248,225,1,0,0,0,248,229,
4534
- 1,0,0,0,248,233,1,0,0,0,248,237,1,0,0,0,248,241,1,0,0,0,248,245,
4535
- 1,0,0,0,249,17,1,0,0,0,250,251,7,2,0,0,251,19,1,0,0,0,252,253,5,
4536
- 16,0,0,253,254,5,113,0,0,254,255,5,105,0,0,255,256,3,102,51,0,256,
4537
- 260,5,98,0,0,257,259,3,22,11,0,258,257,1,0,0,0,259,262,1,0,0,0,260,
4538
- 258,1,0,0,0,260,261,1,0,0,0,261,263,1,0,0,0,262,260,1,0,0,0,263,
4539
- 264,5,99,0,0,264,21,1,0,0,0,265,266,5,113,0,0,266,267,5,106,0,0,
4540
- 267,268,3,150,75,0,268,269,3,24,12,0,269,270,5,105,0,0,270,272,3,
4541
- 102,51,0,271,273,5,103,0,0,272,271,1,0,0,0,272,273,1,0,0,0,273,23,
4542
- 1,0,0,0,274,275,7,3,0,0,275,25,1,0,0,0,276,277,5,12,0,0,277,278,
4543
- 5,113,0,0,278,282,5,98,0,0,279,281,3,28,14,0,280,279,1,0,0,0,281,
4544
- 284,1,0,0,0,282,280,1,0,0,0,282,283,1,0,0,0,283,285,1,0,0,0,284,
4545
- 282,1,0,0,0,285,286,5,99,0,0,286,27,1,0,0,0,287,288,3,150,75,0,288,
4546
- 292,5,113,0,0,289,291,3,54,27,0,290,289,1,0,0,0,291,294,1,0,0,0,
4547
- 292,290,1,0,0,0,292,293,1,0,0,0,293,295,1,0,0,0,294,292,1,0,0,0,
4548
- 295,296,5,102,0,0,296,29,1,0,0,0,297,298,5,13,0,0,298,299,5,113,
4549
- 0,0,299,300,5,98,0,0,300,305,3,32,16,0,301,302,5,103,0,0,302,304,
4550
- 3,32,16,0,303,301,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,
4551
- 1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,308,310,5,103,0,0,309,308,
4552
- 1,0,0,0,309,310,1,0,0,0,310,311,1,0,0,0,311,312,5,99,0,0,312,31,
4553
- 1,0,0,0,313,316,5,113,0,0,314,315,5,75,0,0,315,317,3,102,51,0,316,
4554
- 314,1,0,0,0,316,317,1,0,0,0,317,33,1,0,0,0,318,319,3,36,18,0,319,
4555
- 320,5,113,0,0,320,321,5,98,0,0,321,326,3,38,19,0,322,323,5,103,0,
4556
- 0,323,325,3,38,19,0,324,322,1,0,0,0,325,328,1,0,0,0,326,324,1,0,
4557
- 0,0,326,327,1,0,0,0,327,330,1,0,0,0,328,326,1,0,0,0,329,331,5,103,
4558
- 0,0,330,329,1,0,0,0,330,331,1,0,0,0,331,332,1,0,0,0,332,333,5,99,
4559
- 0,0,333,35,1,0,0,0,334,335,7,4,0,0,335,37,1,0,0,0,336,340,5,113,
4560
- 0,0,337,338,5,100,0,0,338,339,5,110,0,0,339,341,5,101,0,0,340,337,
4561
- 1,0,0,0,340,341,1,0,0,0,341,39,1,0,0,0,342,343,3,150,75,0,343,344,
4562
- 5,113,0,0,344,346,5,96,0,0,345,347,3,42,21,0,346,345,1,0,0,0,346,
4563
- 347,1,0,0,0,347,348,1,0,0,0,348,349,5,97,0,0,349,350,3,60,30,0,350,
4564
- 41,1,0,0,0,351,356,3,44,22,0,352,353,5,103,0,0,353,355,3,44,22,0,
4565
- 354,352,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0,356,357,1,0,0,0,
4566
- 357,43,1,0,0,0,358,356,1,0,0,0,359,361,3,46,23,0,360,359,1,0,0,0,
4567
- 360,361,1,0,0,0,361,362,1,0,0,0,362,363,3,150,75,0,363,367,5,113,
4568
- 0,0,364,366,3,54,27,0,365,364,1,0,0,0,366,369,1,0,0,0,367,365,1,
4569
- 0,0,0,367,368,1,0,0,0,368,45,1,0,0,0,369,367,1,0,0,0,370,371,5,19,
4570
- 0,0,371,47,1,0,0,0,372,373,5,20,0,0,373,49,1,0,0,0,374,375,7,5,0,
4571
- 0,375,51,1,0,0,0,376,377,5,47,0,0,377,53,1,0,0,0,378,380,5,100,0,
4572
- 0,379,381,3,102,51,0,380,379,1,0,0,0,380,381,1,0,0,0,381,382,1,0,
4573
- 0,0,382,383,5,101,0,0,383,55,1,0,0,0,384,386,3,52,26,0,385,384,1,
4574
- 0,0,0,385,386,1,0,0,0,386,388,1,0,0,0,387,389,3,48,24,0,388,387,
4575
- 1,0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390,392,3,46,23,0,391,390,
4576
- 1,0,0,0,391,392,1,0,0,0,392,394,1,0,0,0,393,395,3,50,25,0,394,393,
4577
- 1,0,0,0,394,395,1,0,0,0,395,396,1,0,0,0,396,397,3,150,75,0,397,401,
4578
- 5,113,0,0,398,400,3,54,27,0,399,398,1,0,0,0,400,403,1,0,0,0,401,
4579
- 399,1,0,0,0,401,402,1,0,0,0,402,406,1,0,0,0,403,401,1,0,0,0,404,
4580
- 405,5,75,0,0,405,407,3,102,51,0,406,404,1,0,0,0,406,407,1,0,0,0,
4581
- 407,408,1,0,0,0,408,409,5,102,0,0,409,418,1,0,0,0,410,411,3,150,
4582
- 75,0,411,412,5,113,0,0,412,413,5,96,0,0,413,414,3,58,29,0,414,415,
4583
- 5,97,0,0,415,416,5,102,0,0,416,418,1,0,0,0,417,385,1,0,0,0,417,410,
4584
- 1,0,0,0,418,57,1,0,0,0,419,424,5,113,0,0,420,421,5,103,0,0,421,423,
4585
- 5,113,0,0,422,420,1,0,0,0,423,426,1,0,0,0,424,422,1,0,0,0,424,425,
4586
- 1,0,0,0,425,59,1,0,0,0,426,424,1,0,0,0,427,431,5,98,0,0,428,430,
4587
- 3,62,31,0,429,428,1,0,0,0,430,433,1,0,0,0,431,429,1,0,0,0,431,432,
4588
- 1,0,0,0,432,434,1,0,0,0,433,431,1,0,0,0,434,435,5,99,0,0,435,61,
4589
- 1,0,0,0,436,448,3,56,28,0,437,448,3,66,33,0,438,448,3,74,37,0,439,
4590
- 448,3,76,38,0,440,448,3,78,39,0,441,448,3,80,40,0,442,448,3,82,41,
4591
- 0,443,448,3,94,47,0,444,448,3,92,46,0,445,448,3,64,32,0,446,448,
4592
- 3,60,30,0,447,436,1,0,0,0,447,437,1,0,0,0,447,438,1,0,0,0,447,439,
4593
- 1,0,0,0,447,440,1,0,0,0,447,441,1,0,0,0,447,442,1,0,0,0,447,443,
4594
- 1,0,0,0,447,444,1,0,0,0,447,445,1,0,0,0,447,446,1,0,0,0,448,63,1,
4595
- 0,0,0,449,450,5,48,0,0,450,451,3,60,30,0,451,65,1,0,0,0,452,453,
4596
- 3,70,35,0,453,454,3,68,34,0,454,455,3,102,51,0,455,456,5,102,0,0,
4597
- 456,67,1,0,0,0,457,458,7,6,0,0,458,69,1,0,0,0,459,460,5,15,0,0,460,
4598
- 461,5,104,0,0,461,465,5,113,0,0,462,464,3,72,36,0,463,462,1,0,0,
4599
- 0,464,467,1,0,0,0,465,463,1,0,0,0,465,466,1,0,0,0,466,485,1,0,0,
4600
- 0,467,465,1,0,0,0,468,469,5,14,0,0,469,470,5,104,0,0,470,474,5,113,
4601
- 0,0,471,473,3,72,36,0,472,471,1,0,0,0,473,476,1,0,0,0,474,472,1,
4602
- 0,0,0,474,475,1,0,0,0,475,485,1,0,0,0,476,474,1,0,0,0,477,481,5,
4603
- 113,0,0,478,480,3,72,36,0,479,478,1,0,0,0,480,483,1,0,0,0,481,479,
4604
- 1,0,0,0,481,482,1,0,0,0,482,485,1,0,0,0,483,481,1,0,0,0,484,459,
4605
- 1,0,0,0,484,468,1,0,0,0,484,477,1,0,0,0,485,71,1,0,0,0,486,487,5,
4606
- 104,0,0,487,499,5,113,0,0,488,489,5,100,0,0,489,490,3,102,51,0,490,
4607
- 491,5,101,0,0,491,499,1,0,0,0,492,493,5,100,0,0,493,494,3,102,51,
4608
- 0,494,495,5,103,0,0,495,496,3,102,51,0,496,497,5,101,0,0,497,499,
4609
- 1,0,0,0,498,486,1,0,0,0,498,488,1,0,0,0,498,492,1,0,0,0,499,73,1,
4610
- 0,0,0,500,501,3,102,51,0,501,502,5,102,0,0,502,75,1,0,0,0,503,504,
4611
- 5,22,0,0,504,505,5,96,0,0,505,506,3,102,51,0,506,507,5,97,0,0,507,
4612
- 510,3,62,31,0,508,509,5,23,0,0,509,511,3,62,31,0,510,508,1,0,0,0,
4613
- 510,511,1,0,0,0,511,77,1,0,0,0,512,513,5,24,0,0,513,514,5,96,0,0,
4614
- 514,515,3,102,51,0,515,516,5,97,0,0,516,517,3,62,31,0,517,79,1,0,
4615
- 0,0,518,519,5,25,0,0,519,520,3,60,30,0,520,521,5,24,0,0,521,522,
4616
- 5,96,0,0,522,523,3,102,51,0,523,524,5,97,0,0,524,525,5,102,0,0,525,
4617
- 81,1,0,0,0,526,527,5,26,0,0,527,529,5,96,0,0,528,530,3,84,42,0,529,
4618
- 528,1,0,0,0,529,530,1,0,0,0,530,531,1,0,0,0,531,533,5,102,0,0,532,
4619
- 534,3,102,51,0,533,532,1,0,0,0,533,534,1,0,0,0,534,535,1,0,0,0,535,
4620
- 537,5,102,0,0,536,538,3,90,45,0,537,536,1,0,0,0,537,538,1,0,0,0,
4621
- 538,539,1,0,0,0,539,540,5,97,0,0,540,541,3,62,31,0,541,83,1,0,0,
4622
- 0,542,545,3,86,43,0,543,545,3,88,44,0,544,542,1,0,0,0,544,543,1,
4623
- 0,0,0,545,85,1,0,0,0,546,548,3,52,26,0,547,546,1,0,0,0,547,548,1,
4624
- 0,0,0,548,550,1,0,0,0,549,551,3,48,24,0,550,549,1,0,0,0,550,551,
4625
- 1,0,0,0,551,553,1,0,0,0,552,554,3,50,25,0,553,552,1,0,0,0,553,554,
4626
- 1,0,0,0,554,555,1,0,0,0,555,556,3,150,75,0,556,560,5,113,0,0,557,
4627
- 559,3,54,27,0,558,557,1,0,0,0,559,562,1,0,0,0,560,558,1,0,0,0,560,
4628
- 561,1,0,0,0,561,565,1,0,0,0,562,560,1,0,0,0,563,564,5,75,0,0,564,
4629
- 566,3,102,51,0,565,563,1,0,0,0,565,566,1,0,0,0,566,87,1,0,0,0,567,
4630
- 568,3,70,35,0,568,569,3,68,34,0,569,570,3,102,51,0,570,89,1,0,0,
4631
- 0,571,572,3,70,35,0,572,573,3,68,34,0,573,574,3,102,51,0,574,91,
4632
- 1,0,0,0,575,577,5,30,0,0,576,578,3,102,51,0,577,576,1,0,0,0,577,
4633
- 578,1,0,0,0,578,579,1,0,0,0,579,580,5,102,0,0,580,93,1,0,0,0,581,
4634
- 582,5,27,0,0,582,583,5,96,0,0,583,584,3,102,51,0,584,585,5,97,0,
4635
- 0,585,587,5,98,0,0,586,588,3,96,48,0,587,586,1,0,0,0,588,589,1,0,
4636
- 0,0,589,587,1,0,0,0,589,590,1,0,0,0,590,592,1,0,0,0,591,593,3,100,
4637
- 50,0,592,591,1,0,0,0,592,593,1,0,0,0,593,594,1,0,0,0,594,595,5,99,
4638
- 0,0,595,95,1,0,0,0,596,597,5,28,0,0,597,602,3,98,49,0,598,599,5,
4639
- 88,0,0,599,601,3,98,49,0,600,598,1,0,0,0,601,604,1,0,0,0,602,600,
4640
- 1,0,0,0,602,603,1,0,0,0,603,605,1,0,0,0,604,602,1,0,0,0,605,606,
4641
- 3,60,30,0,606,97,1,0,0,0,607,620,3,156,78,0,608,620,5,113,0,0,609,
4642
- 611,5,83,0,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0,612,
4643
- 620,5,110,0,0,613,615,5,83,0,0,614,613,1,0,0,0,614,615,1,0,0,0,615,
4644
- 616,1,0,0,0,616,620,5,107,0,0,617,620,5,108,0,0,618,620,5,112,0,
4645
- 0,619,607,1,0,0,0,619,608,1,0,0,0,619,610,1,0,0,0,619,614,1,0,0,
4646
- 0,619,617,1,0,0,0,619,618,1,0,0,0,620,99,1,0,0,0,621,625,5,29,0,
4647
- 0,622,623,5,96,0,0,623,624,5,110,0,0,624,626,5,97,0,0,625,622,1,
4648
- 0,0,0,625,626,1,0,0,0,626,627,1,0,0,0,627,628,3,60,30,0,628,101,
4649
- 1,0,0,0,629,630,3,104,52,0,630,103,1,0,0,0,631,632,5,96,0,0,632,
4650
- 633,3,106,53,0,633,634,5,97,0,0,634,635,5,1,0,0,635,636,3,106,53,
4651
- 0,636,637,5,106,0,0,637,638,3,106,53,0,638,641,1,0,0,0,639,641,3,
4652
- 106,53,0,640,631,1,0,0,0,640,639,1,0,0,0,641,105,1,0,0,0,642,647,
4653
- 3,108,54,0,643,644,5,88,0,0,644,646,3,108,54,0,645,643,1,0,0,0,646,
4654
- 649,1,0,0,0,647,645,1,0,0,0,647,648,1,0,0,0,648,107,1,0,0,0,649,
4655
- 647,1,0,0,0,650,655,3,110,55,0,651,652,5,87,0,0,652,654,3,110,55,
4656
- 0,653,651,1,0,0,0,654,657,1,0,0,0,655,653,1,0,0,0,655,656,1,0,0,
4657
- 0,656,109,1,0,0,0,657,655,1,0,0,0,658,663,3,112,56,0,659,660,7,7,
4658
- 0,0,660,662,3,112,56,0,661,659,1,0,0,0,662,665,1,0,0,0,663,661,1,
4659
- 0,0,0,663,664,1,0,0,0,664,111,1,0,0,0,665,663,1,0,0,0,666,671,3,
4660
- 114,57,0,667,668,7,8,0,0,668,670,3,114,57,0,669,667,1,0,0,0,670,
4661
- 673,1,0,0,0,671,669,1,0,0,0,671,672,1,0,0,0,672,113,1,0,0,0,673,
4662
- 671,1,0,0,0,674,679,3,116,58,0,675,676,5,91,0,0,676,678,3,116,58,
4663
- 0,677,675,1,0,0,0,678,681,1,0,0,0,679,677,1,0,0,0,679,680,1,0,0,
4664
- 0,680,115,1,0,0,0,681,679,1,0,0,0,682,687,3,118,59,0,683,684,5,92,
4665
- 0,0,684,686,3,118,59,0,685,683,1,0,0,0,686,689,1,0,0,0,687,685,1,
4666
- 0,0,0,687,688,1,0,0,0,688,117,1,0,0,0,689,687,1,0,0,0,690,695,3,
4667
- 120,60,0,691,692,5,90,0,0,692,694,3,120,60,0,693,691,1,0,0,0,694,
4668
- 697,1,0,0,0,695,693,1,0,0,0,695,696,1,0,0,0,696,119,1,0,0,0,697,
4669
- 695,1,0,0,0,698,703,3,122,61,0,699,700,7,9,0,0,700,702,3,122,61,
4670
- 0,701,699,1,0,0,0,702,705,1,0,0,0,703,701,1,0,0,0,703,704,1,0,0,
4671
- 0,704,121,1,0,0,0,705,703,1,0,0,0,706,711,3,124,62,0,707,708,7,10,
4672
- 0,0,708,710,3,124,62,0,709,707,1,0,0,0,710,713,1,0,0,0,711,709,1,
4673
- 0,0,0,711,712,1,0,0,0,712,123,1,0,0,0,713,711,1,0,0,0,714,719,3,
4674
- 126,63,0,715,716,7,11,0,0,716,718,3,126,63,0,717,715,1,0,0,0,718,
4675
- 721,1,0,0,0,719,717,1,0,0,0,719,720,1,0,0,0,720,125,1,0,0,0,721,
4676
- 719,1,0,0,0,722,723,5,89,0,0,723,732,3,126,63,0,724,725,5,83,0,0,
4677
- 725,732,3,126,63,0,726,727,5,93,0,0,727,732,3,126,63,0,728,729,5,
4678
- 90,0,0,729,732,3,126,63,0,730,732,3,128,64,0,731,722,1,0,0,0,731,
4679
- 724,1,0,0,0,731,726,1,0,0,0,731,728,1,0,0,0,731,730,1,0,0,0,732,
4680
- 127,1,0,0,0,733,737,3,132,66,0,734,736,3,130,65,0,735,734,1,0,0,
4681
- 0,736,739,1,0,0,0,737,735,1,0,0,0,737,738,1,0,0,0,738,129,1,0,0,
4682
- 0,739,737,1,0,0,0,740,741,5,104,0,0,741,758,5,113,0,0,742,743,5,
4683
- 100,0,0,743,744,3,102,51,0,744,745,5,101,0,0,745,758,1,0,0,0,746,
4684
- 747,5,100,0,0,747,748,3,102,51,0,748,749,5,103,0,0,749,750,3,102,
4685
- 51,0,750,751,5,101,0,0,751,758,1,0,0,0,752,754,5,96,0,0,753,755,
4686
- 3,148,74,0,754,753,1,0,0,0,754,755,1,0,0,0,755,756,1,0,0,0,756,758,
4687
- 5,97,0,0,757,740,1,0,0,0,757,742,1,0,0,0,757,746,1,0,0,0,757,752,
4688
- 1,0,0,0,758,131,1,0,0,0,759,772,3,134,67,0,760,772,3,136,68,0,761,
4689
- 772,3,138,69,0,762,772,3,144,72,0,763,772,5,14,0,0,764,772,5,15,
4690
- 0,0,765,772,5,113,0,0,766,772,3,174,87,0,767,768,5,96,0,0,768,769,
4691
- 3,102,51,0,769,770,5,97,0,0,770,772,1,0,0,0,771,759,1,0,0,0,771,
4692
- 760,1,0,0,0,771,761,1,0,0,0,771,762,1,0,0,0,771,763,1,0,0,0,771,
4693
- 764,1,0,0,0,771,765,1,0,0,0,771,766,1,0,0,0,771,767,1,0,0,0,772,
4694
- 133,1,0,0,0,773,774,5,35,0,0,774,777,5,96,0,0,775,778,3,150,75,0,
4695
- 776,778,3,102,51,0,777,775,1,0,0,0,777,776,1,0,0,0,778,779,1,0,0,
4696
- 0,779,780,5,97,0,0,780,135,1,0,0,0,781,782,5,96,0,0,782,783,3,150,
4697
- 75,0,783,784,5,97,0,0,784,785,3,126,63,0,785,137,1,0,0,0,786,787,
4698
- 5,113,0,0,787,789,5,98,0,0,788,790,3,140,70,0,789,788,1,0,0,0,789,
4699
- 790,1,0,0,0,790,791,1,0,0,0,791,797,5,99,0,0,792,793,5,98,0,0,793,
4700
- 794,3,140,70,0,794,795,5,99,0,0,795,797,1,0,0,0,796,786,1,0,0,0,
4701
- 796,792,1,0,0,0,797,139,1,0,0,0,798,803,3,142,71,0,799,800,5,103,
4702
- 0,0,800,802,3,142,71,0,801,799,1,0,0,0,802,805,1,0,0,0,803,801,1,
4703
- 0,0,0,803,804,1,0,0,0,804,807,1,0,0,0,805,803,1,0,0,0,806,808,5,
4704
- 103,0,0,807,806,1,0,0,0,807,808,1,0,0,0,808,141,1,0,0,0,809,810,
4705
- 5,113,0,0,810,811,5,106,0,0,811,812,3,102,51,0,812,143,1,0,0,0,813,
4706
- 814,5,100,0,0,814,819,3,146,73,0,815,816,5,103,0,0,816,818,3,146,
4707
- 73,0,817,815,1,0,0,0,818,821,1,0,0,0,819,817,1,0,0,0,819,820,1,0,
4708
- 0,0,820,823,1,0,0,0,821,819,1,0,0,0,822,824,5,103,0,0,823,822,1,
4709
- 0,0,0,823,824,1,0,0,0,824,825,1,0,0,0,825,826,5,101,0,0,826,833,
4710
- 1,0,0,0,827,828,5,100,0,0,828,829,3,102,51,0,829,830,5,84,0,0,830,
4711
- 831,5,101,0,0,831,833,1,0,0,0,832,813,1,0,0,0,832,827,1,0,0,0,833,
4712
- 145,1,0,0,0,834,838,3,102,51,0,835,838,3,138,69,0,836,838,3,144,
4713
- 72,0,837,834,1,0,0,0,837,835,1,0,0,0,837,836,1,0,0,0,838,147,1,0,
4714
- 0,0,839,844,3,102,51,0,840,841,5,103,0,0,841,843,3,102,51,0,842,
4715
- 840,1,0,0,0,843,846,1,0,0,0,844,842,1,0,0,0,844,845,1,0,0,0,845,
4716
- 149,1,0,0,0,846,844,1,0,0,0,847,857,3,158,79,0,848,857,3,168,84,
4717
- 0,849,857,3,152,76,0,850,857,3,154,77,0,851,857,3,156,78,0,852,857,
4718
- 3,162,81,0,853,857,3,160,80,0,854,857,3,170,85,0,855,857,5,21,0,
4719
- 0,856,847,1,0,0,0,856,848,1,0,0,0,856,849,1,0,0,0,856,850,1,0,0,
4720
- 0,856,851,1,0,0,0,856,852,1,0,0,0,856,853,1,0,0,0,856,854,1,0,0,
4721
- 0,856,855,1,0,0,0,857,151,1,0,0,0,858,859,5,14,0,0,859,860,5,104,
4722
- 0,0,860,861,5,113,0,0,861,153,1,0,0,0,862,863,5,15,0,0,863,864,5,
4723
- 104,0,0,864,865,5,113,0,0,865,155,1,0,0,0,866,869,5,113,0,0,867,
4724
- 868,5,104,0,0,868,870,5,113,0,0,869,867,1,0,0,0,870,871,1,0,0,0,
4725
- 871,869,1,0,0,0,871,872,1,0,0,0,872,157,1,0,0,0,873,874,7,12,0,0,
4726
- 874,159,1,0,0,0,875,876,5,113,0,0,876,161,1,0,0,0,877,878,5,113,
4727
- 0,0,878,879,5,78,0,0,879,880,3,164,82,0,880,881,5,79,0,0,881,163,
4728
- 1,0,0,0,882,887,3,166,83,0,883,884,5,103,0,0,884,886,3,166,83,0,
4729
- 885,883,1,0,0,0,886,889,1,0,0,0,887,885,1,0,0,0,887,888,1,0,0,0,
4730
- 888,165,1,0,0,0,889,887,1,0,0,0,890,895,3,162,81,0,891,895,3,158,
4731
- 79,0,892,895,5,113,0,0,893,895,5,110,0,0,894,890,1,0,0,0,894,891,
4732
- 1,0,0,0,894,892,1,0,0,0,894,893,1,0,0,0,895,167,1,0,0,0,896,897,
4733
- 5,34,0,0,897,898,5,78,0,0,898,899,5,110,0,0,899,902,5,79,0,0,900,
4734
- 902,5,34,0,0,901,896,1,0,0,0,901,900,1,0,0,0,902,169,1,0,0,0,903,
4735
- 905,3,158,79,0,904,906,3,172,86,0,905,904,1,0,0,0,906,907,1,0,0,
4736
- 0,907,905,1,0,0,0,907,908,1,0,0,0,908,922,1,0,0,0,909,911,3,160,
4737
- 80,0,910,912,3,172,86,0,911,910,1,0,0,0,912,913,1,0,0,0,913,911,
4738
- 1,0,0,0,913,914,1,0,0,0,914,922,1,0,0,0,915,917,3,168,84,0,916,918,
4739
- 3,172,86,0,917,916,1,0,0,0,918,919,1,0,0,0,919,917,1,0,0,0,919,920,
4740
- 1,0,0,0,920,922,1,0,0,0,921,903,1,0,0,0,921,909,1,0,0,0,921,915,
4741
- 1,0,0,0,922,171,1,0,0,0,923,925,5,100,0,0,924,926,3,102,51,0,925,
4742
- 924,1,0,0,0,925,926,1,0,0,0,926,927,1,0,0,0,927,928,5,101,0,0,928,
4743
- 173,1,0,0,0,929,930,7,13,0,0,930,175,1,0,0,0,97,178,180,186,196,
4744
- 211,219,225,229,233,237,241,245,248,260,272,282,292,305,309,316,
4745
- 326,330,340,346,356,360,367,380,385,388,391,394,401,406,417,424,
4746
- 431,447,465,474,481,484,498,510,529,533,537,544,547,550,553,560,
4747
- 565,577,589,592,602,610,614,619,625,640,647,655,663,671,679,687,
4748
- 695,703,711,719,731,737,754,757,771,777,789,796,803,807,819,823,
4749
- 832,837,844,856,871,887,894,901,907,913,919,921,925
4500
+ 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,1,0,1,0,5,0,181,8,0,10,0,12,
4501
+ 0,184,9,0,1,0,5,0,187,8,0,10,0,12,0,190,9,0,1,0,1,0,1,1,1,1,1,2,
4502
+ 1,2,1,2,3,2,199,8,2,1,3,1,3,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1,6,
4503
+ 1,6,1,6,3,6,214,8,6,1,7,1,7,1,7,1,7,5,7,220,8,7,10,7,12,7,223,9,
4504
+ 7,1,7,1,7,1,8,3,8,228,8,8,1,8,1,8,3,8,232,8,8,1,8,1,8,3,8,236,8,
4505
+ 8,1,8,1,8,3,8,240,8,8,1,8,1,8,3,8,244,8,8,1,8,1,8,3,8,248,8,8,1,
4506
+ 8,3,8,251,8,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,5,10,261,8,10,
4507
+ 10,10,12,10,264,9,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,
4508
+ 3,11,275,8,11,1,12,1,12,1,13,1,13,1,13,1,13,5,13,283,8,13,10,13,
4509
+ 12,13,286,9,13,1,13,1,13,1,14,1,14,1,14,5,14,293,8,14,10,14,12,14,
4510
+ 296,9,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,5,15,306,8,15,10,
4511
+ 15,12,15,309,9,15,1,15,3,15,312,8,15,1,15,1,15,1,16,1,16,1,16,3,
4512
+ 16,319,8,16,1,17,1,17,1,17,1,17,1,17,1,17,5,17,327,8,17,10,17,12,
4513
+ 17,330,9,17,1,17,3,17,333,8,17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,
4514
+ 1,19,3,19,343,8,19,1,20,1,20,1,20,1,20,3,20,349,8,20,1,20,1,20,1,
4515
+ 20,1,21,1,21,1,21,5,21,357,8,21,10,21,12,21,360,9,21,1,22,3,22,363,
4516
+ 8,22,1,22,1,22,1,22,5,22,368,8,22,10,22,12,22,371,9,22,1,23,1,23,
4517
+ 1,24,1,24,1,25,1,25,1,26,1,26,1,27,1,27,3,27,383,8,27,1,27,1,27,
4518
+ 1,28,3,28,388,8,28,1,28,3,28,391,8,28,1,28,3,28,394,8,28,1,28,3,
4519
+ 28,397,8,28,1,28,1,28,1,28,5,28,402,8,28,10,28,12,28,405,9,28,1,
4520
+ 28,1,28,3,28,409,8,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,
4521
+ 28,3,28,420,8,28,1,29,1,29,1,29,5,29,425,8,29,10,29,12,29,428,9,
4522
+ 29,1,30,1,30,5,30,432,8,30,10,30,12,30,435,9,30,1,30,1,30,1,31,1,
4523
+ 31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,451,8,
4524
+ 31,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,
4525
+ 35,1,35,5,35,467,8,35,10,35,12,35,470,9,35,1,35,1,35,1,35,1,35,5,
4526
+ 35,476,8,35,10,35,12,35,479,9,35,1,35,1,35,5,35,483,8,35,10,35,12,
4527
+ 35,486,9,35,3,35,488,8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,
4528
+ 1,36,1,36,1,36,1,36,3,36,502,8,36,1,37,1,37,1,37,1,38,1,38,1,38,
4529
+ 1,38,1,38,1,38,1,38,3,38,514,8,38,1,39,1,39,1,39,1,39,1,39,1,39,
4530
+ 1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,3,41,533,
4531
+ 8,41,1,41,1,41,3,41,537,8,41,1,41,1,41,3,41,541,8,41,1,41,1,41,1,
4532
+ 41,1,42,1,42,1,42,1,43,1,43,3,43,551,8,43,1,44,3,44,554,8,44,1,44,
4533
+ 3,44,557,8,44,1,44,3,44,560,8,44,1,44,1,44,1,44,5,44,565,8,44,10,
4534
+ 44,12,44,568,9,44,1,44,1,44,3,44,572,8,44,1,45,1,45,1,45,1,45,1,
4535
+ 46,1,46,1,46,1,46,1,47,1,47,3,47,584,8,47,1,47,1,47,1,48,1,48,1,
4536
+ 48,1,48,1,48,1,48,4,48,594,8,48,11,48,12,48,595,1,48,3,48,599,8,
4537
+ 48,1,48,1,48,1,49,1,49,1,49,1,49,5,49,607,8,49,10,49,12,49,610,9,
4538
+ 49,1,49,1,49,1,50,1,50,1,50,3,50,617,8,50,1,50,1,50,3,50,621,8,50,
4539
+ 1,50,1,50,1,50,3,50,626,8,50,1,51,1,51,1,51,1,51,3,51,632,8,51,1,
4540
+ 51,1,51,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,
4541
+ 53,647,8,53,1,54,1,54,1,54,5,54,652,8,54,10,54,12,54,655,9,54,1,
4542
+ 55,1,55,1,55,5,55,660,8,55,10,55,12,55,663,9,55,1,56,1,56,1,56,5,
4543
+ 56,668,8,56,10,56,12,56,671,9,56,1,57,1,57,1,57,5,57,676,8,57,10,
4544
+ 57,12,57,679,9,57,1,58,1,58,1,58,5,58,684,8,58,10,58,12,58,687,9,
4545
+ 58,1,59,1,59,1,59,5,59,692,8,59,10,59,12,59,695,9,59,1,60,1,60,1,
4546
+ 60,5,60,700,8,60,10,60,12,60,703,9,60,1,61,1,61,1,61,5,61,708,8,
4547
+ 61,10,61,12,61,711,9,61,1,62,1,62,1,62,5,62,716,8,62,10,62,12,62,
4548
+ 719,9,62,1,63,1,63,1,63,5,63,724,8,63,10,63,12,63,727,9,63,1,64,
4549
+ 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,3,64,738,8,64,1,65,1,65,
4550
+ 5,65,742,8,65,10,65,12,65,745,9,65,1,66,1,66,1,66,1,66,1,66,1,66,
4551
+ 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,761,8,66,1,66,3,66,
4552
+ 764,8,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,
4553
+ 1,67,3,67,778,8,67,1,68,1,68,1,68,1,68,3,68,784,8,68,1,68,1,68,1,
4554
+ 69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,3,70,796,8,70,1,70,1,70,1,
4555
+ 70,1,70,1,70,3,70,803,8,70,1,71,1,71,1,71,5,71,808,8,71,10,71,12,
4556
+ 71,811,9,71,1,71,3,71,814,8,71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,
4557
+ 1,73,5,73,824,8,73,10,73,12,73,827,9,73,1,73,3,73,830,8,73,1,73,
4558
+ 1,73,1,73,1,73,1,73,1,73,1,73,3,73,839,8,73,1,74,1,74,1,74,3,74,
4559
+ 844,8,74,1,75,1,75,1,75,5,75,849,8,75,10,75,12,75,852,9,75,1,76,
4560
+ 1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,3,76,863,8,76,1,77,1,77,
4561
+ 1,77,1,77,1,78,1,78,1,78,1,78,1,79,1,79,1,79,4,79,876,8,79,11,79,
4562
+ 12,79,877,1,80,1,80,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,
4563
+ 1,83,5,83,892,8,83,10,83,12,83,895,9,83,1,84,1,84,1,84,1,84,3,84,
4564
+ 901,8,84,1,85,1,85,1,85,1,85,1,85,3,85,908,8,85,1,86,1,86,4,86,912,
4565
+ 8,86,11,86,12,86,913,1,86,1,86,4,86,918,8,86,11,86,12,86,919,1,86,
4566
+ 1,86,4,86,924,8,86,11,86,12,86,925,1,86,1,86,4,86,930,8,86,11,86,
4567
+ 12,86,931,1,86,1,86,4,86,936,8,86,11,86,12,86,937,1,86,1,86,4,86,
4568
+ 942,8,86,11,86,12,86,943,3,86,946,8,86,1,87,1,87,3,87,950,8,87,1,
4569
+ 87,1,87,1,88,1,88,1,88,0,0,89,0,2,4,6,8,10,12,14,16,18,20,22,24,
4570
+ 26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,
4571
+ 70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,
4572
+ 110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,
4573
+ 142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,
4574
+ 174,176,0,14,1,0,3,5,1,0,6,9,1,0,17,18,1,0,41,45,1,0,37,40,1,0,46,
4575
+ 47,1,0,66,76,1,0,77,78,1,0,79,82,1,0,95,96,1,0,83,84,1,0,85,87,1,
4576
+ 0,54,65,3,0,32,34,50,53,108,113,1018,0,182,1,0,0,0,2,193,1,0,0,0,
4577
+ 4,198,1,0,0,0,6,200,1,0,0,0,8,202,1,0,0,0,10,204,1,0,0,0,12,213,
4578
+ 1,0,0,0,14,215,1,0,0,0,16,250,1,0,0,0,18,252,1,0,0,0,20,254,1,0,
4579
+ 0,0,22,267,1,0,0,0,24,276,1,0,0,0,26,278,1,0,0,0,28,289,1,0,0,0,
4580
+ 30,299,1,0,0,0,32,315,1,0,0,0,34,320,1,0,0,0,36,336,1,0,0,0,38,338,
4581
+ 1,0,0,0,40,344,1,0,0,0,42,353,1,0,0,0,44,362,1,0,0,0,46,372,1,0,
4582
+ 0,0,48,374,1,0,0,0,50,376,1,0,0,0,52,378,1,0,0,0,54,380,1,0,0,0,
4583
+ 56,419,1,0,0,0,58,421,1,0,0,0,60,429,1,0,0,0,62,450,1,0,0,0,64,452,
4584
+ 1,0,0,0,66,455,1,0,0,0,68,460,1,0,0,0,70,487,1,0,0,0,72,501,1,0,
4585
+ 0,0,74,503,1,0,0,0,76,506,1,0,0,0,78,515,1,0,0,0,80,521,1,0,0,0,
4586
+ 82,529,1,0,0,0,84,545,1,0,0,0,86,550,1,0,0,0,88,553,1,0,0,0,90,573,
4587
+ 1,0,0,0,92,577,1,0,0,0,94,581,1,0,0,0,96,587,1,0,0,0,98,602,1,0,
4588
+ 0,0,100,625,1,0,0,0,102,627,1,0,0,0,104,635,1,0,0,0,106,646,1,0,
4589
+ 0,0,108,648,1,0,0,0,110,656,1,0,0,0,112,664,1,0,0,0,114,672,1,0,
4590
+ 0,0,116,680,1,0,0,0,118,688,1,0,0,0,120,696,1,0,0,0,122,704,1,0,
4591
+ 0,0,124,712,1,0,0,0,126,720,1,0,0,0,128,737,1,0,0,0,130,739,1,0,
4592
+ 0,0,132,763,1,0,0,0,134,777,1,0,0,0,136,779,1,0,0,0,138,787,1,0,
4593
+ 0,0,140,802,1,0,0,0,142,804,1,0,0,0,144,815,1,0,0,0,146,838,1,0,
4594
+ 0,0,148,843,1,0,0,0,150,845,1,0,0,0,152,862,1,0,0,0,154,864,1,0,
4595
+ 0,0,156,868,1,0,0,0,158,872,1,0,0,0,160,879,1,0,0,0,162,881,1,0,
4596
+ 0,0,164,883,1,0,0,0,166,888,1,0,0,0,168,900,1,0,0,0,170,907,1,0,
4597
+ 0,0,172,945,1,0,0,0,174,947,1,0,0,0,176,953,1,0,0,0,178,181,3,2,
4598
+ 1,0,179,181,3,4,2,0,180,178,1,0,0,0,180,179,1,0,0,0,181,184,1,0,
4599
+ 0,0,182,180,1,0,0,0,182,183,1,0,0,0,183,188,1,0,0,0,184,182,1,0,
4600
+ 0,0,185,187,3,12,6,0,186,185,1,0,0,0,187,190,1,0,0,0,188,186,1,0,
4601
+ 0,0,188,189,1,0,0,0,189,191,1,0,0,0,190,188,1,0,0,0,191,192,5,0,
4602
+ 0,1,192,1,1,0,0,0,193,194,5,2,0,0,194,3,1,0,0,0,195,199,3,6,3,0,
4603
+ 196,199,3,8,4,0,197,199,3,10,5,0,198,195,1,0,0,0,198,196,1,0,0,0,
4604
+ 198,197,1,0,0,0,199,5,1,0,0,0,200,201,7,0,0,0,201,7,1,0,0,0,202,
4605
+ 203,7,1,0,0,203,9,1,0,0,0,204,205,5,10,0,0,205,11,1,0,0,0,206,214,
4606
+ 3,14,7,0,207,214,3,20,10,0,208,214,3,26,13,0,209,214,3,30,15,0,210,
4607
+ 214,3,34,17,0,211,214,3,40,20,0,212,214,3,56,28,0,213,206,1,0,0,
4608
+ 0,213,207,1,0,0,0,213,208,1,0,0,0,213,209,1,0,0,0,213,210,1,0,0,
4609
+ 0,213,211,1,0,0,0,213,212,1,0,0,0,214,13,1,0,0,0,215,216,5,11,0,
4610
+ 0,216,217,5,114,0,0,217,221,5,99,0,0,218,220,3,16,8,0,219,218,1,
4611
+ 0,0,0,220,223,1,0,0,0,221,219,1,0,0,0,221,222,1,0,0,0,222,224,1,
4612
+ 0,0,0,223,221,1,0,0,0,224,225,5,100,0,0,225,15,1,0,0,0,226,228,3,
4613
+ 18,9,0,227,226,1,0,0,0,227,228,1,0,0,0,228,229,1,0,0,0,229,251,3,
4614
+ 56,28,0,230,232,3,18,9,0,231,230,1,0,0,0,231,232,1,0,0,0,232,233,
4615
+ 1,0,0,0,233,251,3,40,20,0,234,236,3,18,9,0,235,234,1,0,0,0,235,236,
4616
+ 1,0,0,0,236,237,1,0,0,0,237,251,3,30,15,0,238,240,3,18,9,0,239,238,
4617
+ 1,0,0,0,239,240,1,0,0,0,240,241,1,0,0,0,241,251,3,34,17,0,242,244,
4618
+ 3,18,9,0,243,242,1,0,0,0,243,244,1,0,0,0,244,245,1,0,0,0,245,251,
4619
+ 3,20,10,0,246,248,3,18,9,0,247,246,1,0,0,0,247,248,1,0,0,0,248,249,
4620
+ 1,0,0,0,249,251,3,26,13,0,250,227,1,0,0,0,250,231,1,0,0,0,250,235,
4621
+ 1,0,0,0,250,239,1,0,0,0,250,243,1,0,0,0,250,247,1,0,0,0,251,17,1,
4622
+ 0,0,0,252,253,7,2,0,0,253,19,1,0,0,0,254,255,5,16,0,0,255,256,5,
4623
+ 114,0,0,256,257,5,106,0,0,257,258,3,104,52,0,258,262,5,99,0,0,259,
4624
+ 261,3,22,11,0,260,259,1,0,0,0,261,264,1,0,0,0,262,260,1,0,0,0,262,
4625
+ 263,1,0,0,0,263,265,1,0,0,0,264,262,1,0,0,0,265,266,5,100,0,0,266,
4626
+ 21,1,0,0,0,267,268,5,114,0,0,268,269,5,107,0,0,269,270,3,152,76,
4627
+ 0,270,271,3,24,12,0,271,272,5,106,0,0,272,274,3,104,52,0,273,275,
4628
+ 5,104,0,0,274,273,1,0,0,0,274,275,1,0,0,0,275,23,1,0,0,0,276,277,
4629
+ 7,3,0,0,277,25,1,0,0,0,278,279,5,12,0,0,279,280,5,114,0,0,280,284,
4630
+ 5,99,0,0,281,283,3,28,14,0,282,281,1,0,0,0,283,286,1,0,0,0,284,282,
4631
+ 1,0,0,0,284,285,1,0,0,0,285,287,1,0,0,0,286,284,1,0,0,0,287,288,
4632
+ 5,100,0,0,288,27,1,0,0,0,289,290,3,152,76,0,290,294,5,114,0,0,291,
4633
+ 293,3,54,27,0,292,291,1,0,0,0,293,296,1,0,0,0,294,292,1,0,0,0,294,
4634
+ 295,1,0,0,0,295,297,1,0,0,0,296,294,1,0,0,0,297,298,5,103,0,0,298,
4635
+ 29,1,0,0,0,299,300,5,13,0,0,300,301,5,114,0,0,301,302,5,99,0,0,302,
4636
+ 307,3,32,16,0,303,304,5,104,0,0,304,306,3,32,16,0,305,303,1,0,0,
4637
+ 0,306,309,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308,311,1,0,0,
4638
+ 0,309,307,1,0,0,0,310,312,5,104,0,0,311,310,1,0,0,0,311,312,1,0,
4639
+ 0,0,312,313,1,0,0,0,313,314,5,100,0,0,314,31,1,0,0,0,315,318,5,114,
4640
+ 0,0,316,317,5,76,0,0,317,319,3,104,52,0,318,316,1,0,0,0,318,319,
4641
+ 1,0,0,0,319,33,1,0,0,0,320,321,3,36,18,0,321,322,5,114,0,0,322,323,
4642
+ 5,99,0,0,323,328,3,38,19,0,324,325,5,104,0,0,325,327,3,38,19,0,326,
4643
+ 324,1,0,0,0,327,330,1,0,0,0,328,326,1,0,0,0,328,329,1,0,0,0,329,
4644
+ 332,1,0,0,0,330,328,1,0,0,0,331,333,5,104,0,0,332,331,1,0,0,0,332,
4645
+ 333,1,0,0,0,333,334,1,0,0,0,334,335,5,100,0,0,335,35,1,0,0,0,336,
4646
+ 337,7,4,0,0,337,37,1,0,0,0,338,342,5,114,0,0,339,340,5,101,0,0,340,
4647
+ 341,5,111,0,0,341,343,5,102,0,0,342,339,1,0,0,0,342,343,1,0,0,0,
4648
+ 343,39,1,0,0,0,344,345,3,152,76,0,345,346,5,114,0,0,346,348,5,97,
4649
+ 0,0,347,349,3,42,21,0,348,347,1,0,0,0,348,349,1,0,0,0,349,350,1,
4650
+ 0,0,0,350,351,5,98,0,0,351,352,3,60,30,0,352,41,1,0,0,0,353,358,
4651
+ 3,44,22,0,354,355,5,104,0,0,355,357,3,44,22,0,356,354,1,0,0,0,357,
4652
+ 360,1,0,0,0,358,356,1,0,0,0,358,359,1,0,0,0,359,43,1,0,0,0,360,358,
4653
+ 1,0,0,0,361,363,3,46,23,0,362,361,1,0,0,0,362,363,1,0,0,0,363,364,
4654
+ 1,0,0,0,364,365,3,152,76,0,365,369,5,114,0,0,366,368,3,54,27,0,367,
4655
+ 366,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,
4656
+ 45,1,0,0,0,371,369,1,0,0,0,372,373,5,19,0,0,373,47,1,0,0,0,374,375,
4657
+ 5,20,0,0,375,49,1,0,0,0,376,377,7,5,0,0,377,51,1,0,0,0,378,379,5,
4658
+ 48,0,0,379,53,1,0,0,0,380,382,5,101,0,0,381,383,3,104,52,0,382,381,
4659
+ 1,0,0,0,382,383,1,0,0,0,383,384,1,0,0,0,384,385,5,102,0,0,385,55,
4660
+ 1,0,0,0,386,388,3,52,26,0,387,386,1,0,0,0,387,388,1,0,0,0,388,390,
4661
+ 1,0,0,0,389,391,3,48,24,0,390,389,1,0,0,0,390,391,1,0,0,0,391,393,
4662
+ 1,0,0,0,392,394,3,46,23,0,393,392,1,0,0,0,393,394,1,0,0,0,394,396,
4663
+ 1,0,0,0,395,397,3,50,25,0,396,395,1,0,0,0,396,397,1,0,0,0,397,398,
4664
+ 1,0,0,0,398,399,3,152,76,0,399,403,5,114,0,0,400,402,3,54,27,0,401,
4665
+ 400,1,0,0,0,402,405,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,
4666
+ 408,1,0,0,0,405,403,1,0,0,0,406,407,5,76,0,0,407,409,3,104,52,0,
4667
+ 408,406,1,0,0,0,408,409,1,0,0,0,409,410,1,0,0,0,410,411,5,103,0,
4668
+ 0,411,420,1,0,0,0,412,413,3,152,76,0,413,414,5,114,0,0,414,415,5,
4669
+ 97,0,0,415,416,3,58,29,0,416,417,5,98,0,0,417,418,5,103,0,0,418,
4670
+ 420,1,0,0,0,419,387,1,0,0,0,419,412,1,0,0,0,420,57,1,0,0,0,421,426,
4671
+ 5,114,0,0,422,423,5,104,0,0,423,425,5,114,0,0,424,422,1,0,0,0,425,
4672
+ 428,1,0,0,0,426,424,1,0,0,0,426,427,1,0,0,0,427,59,1,0,0,0,428,426,
4673
+ 1,0,0,0,429,433,5,99,0,0,430,432,3,62,31,0,431,430,1,0,0,0,432,435,
4674
+ 1,0,0,0,433,431,1,0,0,0,433,434,1,0,0,0,434,436,1,0,0,0,435,433,
4675
+ 1,0,0,0,436,437,5,100,0,0,437,61,1,0,0,0,438,451,3,56,28,0,439,451,
4676
+ 3,66,33,0,440,451,3,74,37,0,441,451,3,76,38,0,442,451,3,78,39,0,
4677
+ 443,451,3,80,40,0,444,451,3,82,41,0,445,451,3,84,42,0,446,451,3,
4678
+ 96,48,0,447,451,3,94,47,0,448,451,3,64,32,0,449,451,3,60,30,0,450,
4679
+ 438,1,0,0,0,450,439,1,0,0,0,450,440,1,0,0,0,450,441,1,0,0,0,450,
4680
+ 442,1,0,0,0,450,443,1,0,0,0,450,444,1,0,0,0,450,445,1,0,0,0,450,
4681
+ 446,1,0,0,0,450,447,1,0,0,0,450,448,1,0,0,0,450,449,1,0,0,0,451,
4682
+ 63,1,0,0,0,452,453,5,49,0,0,453,454,3,60,30,0,454,65,1,0,0,0,455,
4683
+ 456,3,70,35,0,456,457,3,68,34,0,457,458,3,104,52,0,458,459,5,103,
4684
+ 0,0,459,67,1,0,0,0,460,461,7,6,0,0,461,69,1,0,0,0,462,463,5,15,0,
4685
+ 0,463,464,5,105,0,0,464,468,5,114,0,0,465,467,3,72,36,0,466,465,
4686
+ 1,0,0,0,467,470,1,0,0,0,468,466,1,0,0,0,468,469,1,0,0,0,469,488,
4687
+ 1,0,0,0,470,468,1,0,0,0,471,472,5,14,0,0,472,473,5,105,0,0,473,477,
4688
+ 5,114,0,0,474,476,3,72,36,0,475,474,1,0,0,0,476,479,1,0,0,0,477,
4689
+ 475,1,0,0,0,477,478,1,0,0,0,478,488,1,0,0,0,479,477,1,0,0,0,480,
4690
+ 484,5,114,0,0,481,483,3,72,36,0,482,481,1,0,0,0,483,486,1,0,0,0,
4691
+ 484,482,1,0,0,0,484,485,1,0,0,0,485,488,1,0,0,0,486,484,1,0,0,0,
4692
+ 487,462,1,0,0,0,487,471,1,0,0,0,487,480,1,0,0,0,488,71,1,0,0,0,489,
4693
+ 490,5,105,0,0,490,502,5,114,0,0,491,492,5,101,0,0,492,493,3,104,
4694
+ 52,0,493,494,5,102,0,0,494,502,1,0,0,0,495,496,5,101,0,0,496,497,
4695
+ 3,104,52,0,497,498,5,104,0,0,498,499,3,104,52,0,499,500,5,102,0,
4696
+ 0,500,502,1,0,0,0,501,489,1,0,0,0,501,491,1,0,0,0,501,495,1,0,0,
4697
+ 0,502,73,1,0,0,0,503,504,3,104,52,0,504,505,5,103,0,0,505,75,1,0,
4698
+ 0,0,506,507,5,22,0,0,507,508,5,97,0,0,508,509,3,104,52,0,509,510,
4699
+ 5,98,0,0,510,513,3,62,31,0,511,512,5,23,0,0,512,514,3,62,31,0,513,
4700
+ 511,1,0,0,0,513,514,1,0,0,0,514,77,1,0,0,0,515,516,5,24,0,0,516,
4701
+ 517,5,97,0,0,517,518,3,104,52,0,518,519,5,98,0,0,519,520,3,62,31,
4702
+ 0,520,79,1,0,0,0,521,522,5,25,0,0,522,523,3,60,30,0,523,524,5,24,
4703
+ 0,0,524,525,5,97,0,0,525,526,3,104,52,0,526,527,5,98,0,0,527,528,
4704
+ 5,103,0,0,528,81,1,0,0,0,529,530,5,26,0,0,530,532,5,97,0,0,531,533,
4705
+ 3,86,43,0,532,531,1,0,0,0,532,533,1,0,0,0,533,534,1,0,0,0,534,536,
4706
+ 5,103,0,0,535,537,3,104,52,0,536,535,1,0,0,0,536,537,1,0,0,0,537,
4707
+ 538,1,0,0,0,538,540,5,103,0,0,539,541,3,92,46,0,540,539,1,0,0,0,
4708
+ 540,541,1,0,0,0,541,542,1,0,0,0,542,543,5,98,0,0,543,544,3,62,31,
4709
+ 0,544,83,1,0,0,0,545,546,5,27,0,0,546,547,3,60,30,0,547,85,1,0,0,
4710
+ 0,548,551,3,88,44,0,549,551,3,90,45,0,550,548,1,0,0,0,550,549,1,
4711
+ 0,0,0,551,87,1,0,0,0,552,554,3,52,26,0,553,552,1,0,0,0,553,554,1,
4712
+ 0,0,0,554,556,1,0,0,0,555,557,3,48,24,0,556,555,1,0,0,0,556,557,
4713
+ 1,0,0,0,557,559,1,0,0,0,558,560,3,50,25,0,559,558,1,0,0,0,559,560,
4714
+ 1,0,0,0,560,561,1,0,0,0,561,562,3,152,76,0,562,566,5,114,0,0,563,
4715
+ 565,3,54,27,0,564,563,1,0,0,0,565,568,1,0,0,0,566,564,1,0,0,0,566,
4716
+ 567,1,0,0,0,567,571,1,0,0,0,568,566,1,0,0,0,569,570,5,76,0,0,570,
4717
+ 572,3,104,52,0,571,569,1,0,0,0,571,572,1,0,0,0,572,89,1,0,0,0,573,
4718
+ 574,3,70,35,0,574,575,3,68,34,0,575,576,3,104,52,0,576,91,1,0,0,
4719
+ 0,577,578,3,70,35,0,578,579,3,68,34,0,579,580,3,104,52,0,580,93,
4720
+ 1,0,0,0,581,583,5,31,0,0,582,584,3,104,52,0,583,582,1,0,0,0,583,
4721
+ 584,1,0,0,0,584,585,1,0,0,0,585,586,5,103,0,0,586,95,1,0,0,0,587,
4722
+ 588,5,28,0,0,588,589,5,97,0,0,589,590,3,104,52,0,590,591,5,98,0,
4723
+ 0,591,593,5,99,0,0,592,594,3,98,49,0,593,592,1,0,0,0,594,595,1,0,
4724
+ 0,0,595,593,1,0,0,0,595,596,1,0,0,0,596,598,1,0,0,0,597,599,3,102,
4725
+ 51,0,598,597,1,0,0,0,598,599,1,0,0,0,599,600,1,0,0,0,600,601,5,100,
4726
+ 0,0,601,97,1,0,0,0,602,603,5,29,0,0,603,608,3,100,50,0,604,605,5,
4727
+ 89,0,0,605,607,3,100,50,0,606,604,1,0,0,0,607,610,1,0,0,0,608,606,
4728
+ 1,0,0,0,608,609,1,0,0,0,609,611,1,0,0,0,610,608,1,0,0,0,611,612,
4729
+ 3,60,30,0,612,99,1,0,0,0,613,626,3,158,79,0,614,626,5,114,0,0,615,
4730
+ 617,5,84,0,0,616,615,1,0,0,0,616,617,1,0,0,0,617,618,1,0,0,0,618,
4731
+ 626,5,111,0,0,619,621,5,84,0,0,620,619,1,0,0,0,620,621,1,0,0,0,621,
4732
+ 622,1,0,0,0,622,626,5,108,0,0,623,626,5,109,0,0,624,626,5,113,0,
4733
+ 0,625,613,1,0,0,0,625,614,1,0,0,0,625,616,1,0,0,0,625,620,1,0,0,
4734
+ 0,625,623,1,0,0,0,625,624,1,0,0,0,626,101,1,0,0,0,627,631,5,30,0,
4735
+ 0,628,629,5,97,0,0,629,630,5,111,0,0,630,632,5,98,0,0,631,628,1,
4736
+ 0,0,0,631,632,1,0,0,0,632,633,1,0,0,0,633,634,3,60,30,0,634,103,
4737
+ 1,0,0,0,635,636,3,106,53,0,636,105,1,0,0,0,637,638,5,97,0,0,638,
4738
+ 639,3,108,54,0,639,640,5,98,0,0,640,641,5,1,0,0,641,642,3,108,54,
4739
+ 0,642,643,5,107,0,0,643,644,3,108,54,0,644,647,1,0,0,0,645,647,3,
4740
+ 108,54,0,646,637,1,0,0,0,646,645,1,0,0,0,647,107,1,0,0,0,648,653,
4741
+ 3,110,55,0,649,650,5,89,0,0,650,652,3,110,55,0,651,649,1,0,0,0,652,
4742
+ 655,1,0,0,0,653,651,1,0,0,0,653,654,1,0,0,0,654,109,1,0,0,0,655,
4743
+ 653,1,0,0,0,656,661,3,112,56,0,657,658,5,88,0,0,658,660,3,112,56,
4744
+ 0,659,657,1,0,0,0,660,663,1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,
4745
+ 0,662,111,1,0,0,0,663,661,1,0,0,0,664,669,3,114,57,0,665,666,7,7,
4746
+ 0,0,666,668,3,114,57,0,667,665,1,0,0,0,668,671,1,0,0,0,669,667,1,
4747
+ 0,0,0,669,670,1,0,0,0,670,113,1,0,0,0,671,669,1,0,0,0,672,677,3,
4748
+ 116,58,0,673,674,7,8,0,0,674,676,3,116,58,0,675,673,1,0,0,0,676,
4749
+ 679,1,0,0,0,677,675,1,0,0,0,677,678,1,0,0,0,678,115,1,0,0,0,679,
4750
+ 677,1,0,0,0,680,685,3,118,59,0,681,682,5,92,0,0,682,684,3,118,59,
4751
+ 0,683,681,1,0,0,0,684,687,1,0,0,0,685,683,1,0,0,0,685,686,1,0,0,
4752
+ 0,686,117,1,0,0,0,687,685,1,0,0,0,688,693,3,120,60,0,689,690,5,93,
4753
+ 0,0,690,692,3,120,60,0,691,689,1,0,0,0,692,695,1,0,0,0,693,691,1,
4754
+ 0,0,0,693,694,1,0,0,0,694,119,1,0,0,0,695,693,1,0,0,0,696,701,3,
4755
+ 122,61,0,697,698,5,91,0,0,698,700,3,122,61,0,699,697,1,0,0,0,700,
4756
+ 703,1,0,0,0,701,699,1,0,0,0,701,702,1,0,0,0,702,121,1,0,0,0,703,
4757
+ 701,1,0,0,0,704,709,3,124,62,0,705,706,7,9,0,0,706,708,3,124,62,
4758
+ 0,707,705,1,0,0,0,708,711,1,0,0,0,709,707,1,0,0,0,709,710,1,0,0,
4759
+ 0,710,123,1,0,0,0,711,709,1,0,0,0,712,717,3,126,63,0,713,714,7,10,
4760
+ 0,0,714,716,3,126,63,0,715,713,1,0,0,0,716,719,1,0,0,0,717,715,1,
4761
+ 0,0,0,717,718,1,0,0,0,718,125,1,0,0,0,719,717,1,0,0,0,720,725,3,
4762
+ 128,64,0,721,722,7,11,0,0,722,724,3,128,64,0,723,721,1,0,0,0,724,
4763
+ 727,1,0,0,0,725,723,1,0,0,0,725,726,1,0,0,0,726,127,1,0,0,0,727,
4764
+ 725,1,0,0,0,728,729,5,90,0,0,729,738,3,128,64,0,730,731,5,84,0,0,
4765
+ 731,738,3,128,64,0,732,733,5,94,0,0,733,738,3,128,64,0,734,735,5,
4766
+ 91,0,0,735,738,3,128,64,0,736,738,3,130,65,0,737,728,1,0,0,0,737,
4767
+ 730,1,0,0,0,737,732,1,0,0,0,737,734,1,0,0,0,737,736,1,0,0,0,738,
4768
+ 129,1,0,0,0,739,743,3,134,67,0,740,742,3,132,66,0,741,740,1,0,0,
4769
+ 0,742,745,1,0,0,0,743,741,1,0,0,0,743,744,1,0,0,0,744,131,1,0,0,
4770
+ 0,745,743,1,0,0,0,746,747,5,105,0,0,747,764,5,114,0,0,748,749,5,
4771
+ 101,0,0,749,750,3,104,52,0,750,751,5,102,0,0,751,764,1,0,0,0,752,
4772
+ 753,5,101,0,0,753,754,3,104,52,0,754,755,5,104,0,0,755,756,3,104,
4773
+ 52,0,756,757,5,102,0,0,757,764,1,0,0,0,758,760,5,97,0,0,759,761,
4774
+ 3,150,75,0,760,759,1,0,0,0,760,761,1,0,0,0,761,762,1,0,0,0,762,764,
4775
+ 5,98,0,0,763,746,1,0,0,0,763,748,1,0,0,0,763,752,1,0,0,0,763,758,
4776
+ 1,0,0,0,764,133,1,0,0,0,765,778,3,136,68,0,766,778,3,138,69,0,767,
4777
+ 778,3,140,70,0,768,778,3,146,73,0,769,778,5,14,0,0,770,778,5,15,
4778
+ 0,0,771,778,5,114,0,0,772,778,3,176,88,0,773,774,5,97,0,0,774,775,
4779
+ 3,104,52,0,775,776,5,98,0,0,776,778,1,0,0,0,777,765,1,0,0,0,777,
4780
+ 766,1,0,0,0,777,767,1,0,0,0,777,768,1,0,0,0,777,769,1,0,0,0,777,
4781
+ 770,1,0,0,0,777,771,1,0,0,0,777,772,1,0,0,0,777,773,1,0,0,0,778,
4782
+ 135,1,0,0,0,779,780,5,36,0,0,780,783,5,97,0,0,781,784,3,152,76,0,
4783
+ 782,784,3,104,52,0,783,781,1,0,0,0,783,782,1,0,0,0,784,785,1,0,0,
4784
+ 0,785,786,5,98,0,0,786,137,1,0,0,0,787,788,5,97,0,0,788,789,3,152,
4785
+ 76,0,789,790,5,98,0,0,790,791,3,128,64,0,791,139,1,0,0,0,792,793,
4786
+ 5,114,0,0,793,795,5,99,0,0,794,796,3,142,71,0,795,794,1,0,0,0,795,
4787
+ 796,1,0,0,0,796,797,1,0,0,0,797,803,5,100,0,0,798,799,5,99,0,0,799,
4788
+ 800,3,142,71,0,800,801,5,100,0,0,801,803,1,0,0,0,802,792,1,0,0,0,
4789
+ 802,798,1,0,0,0,803,141,1,0,0,0,804,809,3,144,72,0,805,806,5,104,
4790
+ 0,0,806,808,3,144,72,0,807,805,1,0,0,0,808,811,1,0,0,0,809,807,1,
4791
+ 0,0,0,809,810,1,0,0,0,810,813,1,0,0,0,811,809,1,0,0,0,812,814,5,
4792
+ 104,0,0,813,812,1,0,0,0,813,814,1,0,0,0,814,143,1,0,0,0,815,816,
4793
+ 5,114,0,0,816,817,5,107,0,0,817,818,3,104,52,0,818,145,1,0,0,0,819,
4794
+ 820,5,101,0,0,820,825,3,148,74,0,821,822,5,104,0,0,822,824,3,148,
4795
+ 74,0,823,821,1,0,0,0,824,827,1,0,0,0,825,823,1,0,0,0,825,826,1,0,
4796
+ 0,0,826,829,1,0,0,0,827,825,1,0,0,0,828,830,5,104,0,0,829,828,1,
4797
+ 0,0,0,829,830,1,0,0,0,830,831,1,0,0,0,831,832,5,102,0,0,832,839,
4798
+ 1,0,0,0,833,834,5,101,0,0,834,835,3,104,52,0,835,836,5,85,0,0,836,
4799
+ 837,5,102,0,0,837,839,1,0,0,0,838,819,1,0,0,0,838,833,1,0,0,0,839,
4800
+ 147,1,0,0,0,840,844,3,104,52,0,841,844,3,140,70,0,842,844,3,146,
4801
+ 73,0,843,840,1,0,0,0,843,841,1,0,0,0,843,842,1,0,0,0,844,149,1,0,
4802
+ 0,0,845,850,3,104,52,0,846,847,5,104,0,0,847,849,3,104,52,0,848,
4803
+ 846,1,0,0,0,849,852,1,0,0,0,850,848,1,0,0,0,850,851,1,0,0,0,851,
4804
+ 151,1,0,0,0,852,850,1,0,0,0,853,863,3,160,80,0,854,863,3,170,85,
4805
+ 0,855,863,3,154,77,0,856,863,3,156,78,0,857,863,3,158,79,0,858,863,
4806
+ 3,164,82,0,859,863,3,162,81,0,860,863,3,172,86,0,861,863,5,21,0,
4807
+ 0,862,853,1,0,0,0,862,854,1,0,0,0,862,855,1,0,0,0,862,856,1,0,0,
4808
+ 0,862,857,1,0,0,0,862,858,1,0,0,0,862,859,1,0,0,0,862,860,1,0,0,
4809
+ 0,862,861,1,0,0,0,863,153,1,0,0,0,864,865,5,14,0,0,865,866,5,105,
4810
+ 0,0,866,867,5,114,0,0,867,155,1,0,0,0,868,869,5,15,0,0,869,870,5,
4811
+ 105,0,0,870,871,5,114,0,0,871,157,1,0,0,0,872,875,5,114,0,0,873,
4812
+ 874,5,105,0,0,874,876,5,114,0,0,875,873,1,0,0,0,876,877,1,0,0,0,
4813
+ 877,875,1,0,0,0,877,878,1,0,0,0,878,159,1,0,0,0,879,880,7,12,0,0,
4814
+ 880,161,1,0,0,0,881,882,5,114,0,0,882,163,1,0,0,0,883,884,5,114,
4815
+ 0,0,884,885,5,79,0,0,885,886,3,166,83,0,886,887,5,80,0,0,887,165,
4816
+ 1,0,0,0,888,893,3,168,84,0,889,890,5,104,0,0,890,892,3,168,84,0,
4817
+ 891,889,1,0,0,0,892,895,1,0,0,0,893,891,1,0,0,0,893,894,1,0,0,0,
4818
+ 894,167,1,0,0,0,895,893,1,0,0,0,896,901,3,164,82,0,897,901,3,160,
4819
+ 80,0,898,901,5,114,0,0,899,901,5,111,0,0,900,896,1,0,0,0,900,897,
4820
+ 1,0,0,0,900,898,1,0,0,0,900,899,1,0,0,0,901,169,1,0,0,0,902,903,
4821
+ 5,35,0,0,903,904,5,79,0,0,904,905,5,111,0,0,905,908,5,80,0,0,906,
4822
+ 908,5,35,0,0,907,902,1,0,0,0,907,906,1,0,0,0,908,171,1,0,0,0,909,
4823
+ 911,3,160,80,0,910,912,3,174,87,0,911,910,1,0,0,0,912,913,1,0,0,
4824
+ 0,913,911,1,0,0,0,913,914,1,0,0,0,914,946,1,0,0,0,915,917,3,162,
4825
+ 81,0,916,918,3,174,87,0,917,916,1,0,0,0,918,919,1,0,0,0,919,917,
4826
+ 1,0,0,0,919,920,1,0,0,0,920,946,1,0,0,0,921,923,3,170,85,0,922,924,
4827
+ 3,174,87,0,923,922,1,0,0,0,924,925,1,0,0,0,925,923,1,0,0,0,925,926,
4828
+ 1,0,0,0,926,946,1,0,0,0,927,929,3,154,77,0,928,930,3,174,87,0,929,
4829
+ 928,1,0,0,0,930,931,1,0,0,0,931,929,1,0,0,0,931,932,1,0,0,0,932,
4830
+ 946,1,0,0,0,933,935,3,158,79,0,934,936,3,174,87,0,935,934,1,0,0,
4831
+ 0,936,937,1,0,0,0,937,935,1,0,0,0,937,938,1,0,0,0,938,946,1,0,0,
4832
+ 0,939,941,3,156,78,0,940,942,3,174,87,0,941,940,1,0,0,0,942,943,
4833
+ 1,0,0,0,943,941,1,0,0,0,943,944,1,0,0,0,944,946,1,0,0,0,945,909,
4834
+ 1,0,0,0,945,915,1,0,0,0,945,921,1,0,0,0,945,927,1,0,0,0,945,933,
4835
+ 1,0,0,0,945,939,1,0,0,0,946,173,1,0,0,0,947,949,5,101,0,0,948,950,
4836
+ 3,104,52,0,949,948,1,0,0,0,949,950,1,0,0,0,950,951,1,0,0,0,951,952,
4837
+ 5,102,0,0,952,175,1,0,0,0,953,954,7,13,0,0,954,177,1,0,0,0,100,180,
4838
+ 182,188,198,213,221,227,231,235,239,243,247,250,262,274,284,294,
4839
+ 307,311,318,328,332,342,348,358,362,369,382,387,390,393,396,403,
4840
+ 408,419,426,433,450,468,477,484,487,501,513,532,536,540,550,553,
4841
+ 556,559,566,571,583,595,598,608,616,620,625,631,646,653,661,669,
4842
+ 677,685,693,701,709,717,725,737,743,760,763,777,783,795,802,809,
4843
+ 813,825,829,838,843,850,862,877,893,900,907,913,919,925,931,937,
4844
+ 943,945,949
4750
4845
  ];
4751
4846
 
4752
4847
  private static __ATN: antlr.ATN;
@@ -6116,6 +6211,9 @@ export class StatementContext extends antlr.ParserRuleContext {
6116
6211
  public forStatement(): ForStatementContext | null {
6117
6212
  return this.getRuleContext(0, ForStatementContext);
6118
6213
  }
6214
+ public foreverStatement(): ForeverStatementContext | null {
6215
+ return this.getRuleContext(0, ForeverStatementContext);
6216
+ }
6119
6217
  public switchStatement(): SwitchStatementContext | null {
6120
6218
  return this.getRuleContext(0, SwitchStatementContext);
6121
6219
  }
@@ -6613,6 +6711,39 @@ export class ForStatementContext extends antlr.ParserRuleContext {
6613
6711
  }
6614
6712
 
6615
6713
 
6714
+ export class ForeverStatementContext extends antlr.ParserRuleContext {
6715
+ public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
6716
+ super(parent, invokingState);
6717
+ }
6718
+ public FOREVER(): antlr.TerminalNode {
6719
+ return this.getToken(CNextParser.FOREVER, 0)!;
6720
+ }
6721
+ public block(): BlockContext {
6722
+ return this.getRuleContext(0, BlockContext)!;
6723
+ }
6724
+ public override get ruleIndex(): number {
6725
+ return CNextParser.RULE_foreverStatement;
6726
+ }
6727
+ public override enterRule(listener: CNextListener): void {
6728
+ if(listener.enterForeverStatement) {
6729
+ listener.enterForeverStatement(this);
6730
+ }
6731
+ }
6732
+ public override exitRule(listener: CNextListener): void {
6733
+ if(listener.exitForeverStatement) {
6734
+ listener.exitForeverStatement(this);
6735
+ }
6736
+ }
6737
+ public override accept<Result>(visitor: CNextVisitor<Result>): Result | null {
6738
+ if (visitor.visitForeverStatement) {
6739
+ return visitor.visitForeverStatement(this);
6740
+ } else {
6741
+ return visitor.visitChildren(this);
6742
+ }
6743
+ }
6744
+ }
6745
+
6746
+
6616
6747
  export class ForInitContext extends antlr.ParserRuleContext {
6617
6748
  public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
6618
6749
  super(parent, invokingState);
@@ -8597,6 +8728,15 @@ export class ArrayTypeContext extends antlr.ParserRuleContext {
8597
8728
  public stringType(): StringTypeContext | null {
8598
8729
  return this.getRuleContext(0, StringTypeContext);
8599
8730
  }
8731
+ public scopedType(): ScopedTypeContext | null {
8732
+ return this.getRuleContext(0, ScopedTypeContext);
8733
+ }
8734
+ public qualifiedType(): QualifiedTypeContext | null {
8735
+ return this.getRuleContext(0, QualifiedTypeContext);
8736
+ }
8737
+ public globalType(): GlobalTypeContext | null {
8738
+ return this.getRuleContext(0, GlobalTypeContext);
8739
+ }
8600
8740
  public override get ruleIndex(): number {
8601
8741
  return CNextParser.RULE_arrayType;
8602
8742
  }