c-next 0.1.64 → 0.1.66

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 (33) hide show
  1. package/grammar/CNext.g4 +9 -2
  2. package/package.json +5 -1
  3. package/src/transpiler/logic/parser/grammar/CNext.interp +2 -1
  4. package/src/transpiler/logic/parser/grammar/CNextListener.ts +11 -0
  5. package/src/transpiler/logic/parser/grammar/CNextParser.ts +992 -870
  6. package/src/transpiler/logic/parser/grammar/CNextVisitor.ts +7 -0
  7. package/src/transpiler/logic/symbols/cnext/__tests__/FunctionCollector.test.ts +6 -6
  8. package/src/transpiler/logic/symbols/cnext/__tests__/TSymbolAdapter.test.ts +179 -0
  9. package/src/transpiler/logic/symbols/cnext/__tests__/VariableCollector.test.ts +55 -0
  10. package/src/transpiler/logic/symbols/cnext/adapters/TSymbolAdapter.ts +76 -8
  11. package/src/transpiler/logic/symbols/cnext/collectors/FunctionCollector.ts +9 -10
  12. package/src/transpiler/logic/symbols/cnext/collectors/StructCollector.ts +7 -1
  13. package/src/transpiler/logic/symbols/cnext/collectors/VariableCollector.ts +33 -14
  14. package/src/transpiler/output/codegen/CodeGenerator.ts +243 -166
  15. package/src/transpiler/output/codegen/__tests__/CodeGenerator.coverage.test.ts +1086 -0
  16. package/src/transpiler/output/codegen/__tests__/CodeGenerator.test.ts +254 -22
  17. package/src/transpiler/output/codegen/generators/declarationGenerators/ArrayDimensionUtils.ts +17 -9
  18. package/src/transpiler/output/codegen/generators/declarationGenerators/__tests__/ArrayDimensionUtils.test.ts +5 -3
  19. package/src/transpiler/output/codegen/generators/declarationGenerators/__tests__/ScopeGenerator.test.ts +12 -7
  20. package/src/transpiler/output/codegen/generators/expressions/PostfixExpressionGenerator.ts +624 -12
  21. package/src/transpiler/output/codegen/generators/expressions/__tests__/PostfixExpressionGenerator.test.ts +819 -0
  22. package/src/transpiler/output/codegen/helpers/ParameterInputAdapter.ts +337 -0
  23. package/src/transpiler/output/codegen/helpers/ParameterSignatureBuilder.ts +135 -0
  24. package/src/transpiler/output/codegen/helpers/TypeGenerationHelper.ts +4 -0
  25. package/src/transpiler/output/codegen/helpers/VariableDeclarationFormatter.ts +118 -0
  26. package/src/transpiler/output/codegen/helpers/__tests__/ParameterInputAdapter.test.ts +426 -0
  27. package/src/transpiler/output/codegen/helpers/__tests__/ParameterSignatureBuilder.test.ts +315 -0
  28. package/src/transpiler/output/codegen/helpers/__tests__/VariableDeclarationFormatter.test.ts +333 -0
  29. package/src/transpiler/output/codegen/types/IParameterInput.ts +58 -0
  30. package/src/transpiler/output/codegen/types/IVariableFormatInput.ts +51 -0
  31. package/src/transpiler/output/headers/BaseHeaderGenerator.ts +20 -35
  32. package/src/transpiler/output/headers/HeaderGeneratorUtils.ts +21 -48
  33. package/src/transpiler/output/headers/__tests__/HeaderGeneratorUtils.test.ts +0 -64
@@ -215,7 +215,8 @@ export class CNextParser extends antlr.Parser {
215
215
  public static readonly RULE_templateArgument = 83;
216
216
  public static readonly RULE_stringType = 84;
217
217
  public static readonly RULE_arrayType = 85;
218
- public static readonly RULE_literal = 86;
218
+ public static readonly RULE_arrayTypeDimension = 86;
219
+ public static readonly RULE_literal = 87;
219
220
 
220
221
  public static readonly literalNames = [
221
222
  null, "'?'", null, null, null, null, null, null, null, null, null,
@@ -277,7 +278,8 @@ export class CNextParser extends antlr.Parser {
277
278
  "fieldInitializer", "arrayInitializer", "arrayInitializerElement",
278
279
  "argumentList", "type", "scopedType", "globalType", "qualifiedType",
279
280
  "primitiveType", "userType", "templateType", "templateArgumentList",
280
- "templateArgument", "stringType", "arrayType", "literal",
281
+ "templateArgument", "stringType", "arrayType", "arrayTypeDimension",
282
+ "literal",
281
283
  ];
282
284
 
283
285
  public get grammarFileName(): string { return "CNext.g4"; }
@@ -301,17 +303,17 @@ export class CNextParser extends antlr.Parser {
301
303
  try {
302
304
  this.enterOuterAlt(localContext, 1);
303
305
  {
304
- this.state = 178;
306
+ this.state = 180;
305
307
  this.errorHandler.sync(this);
306
308
  _la = this.tokenStream.LA(1);
307
309
  while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2044) !== 0)) {
308
310
  {
309
- this.state = 176;
311
+ this.state = 178;
310
312
  this.errorHandler.sync(this);
311
313
  switch (this.tokenStream.LA(1)) {
312
314
  case CNextParser.INCLUDE_DIRECTIVE:
313
315
  {
314
- this.state = 174;
316
+ this.state = 176;
315
317
  this.includeDirective();
316
318
  }
317
319
  break;
@@ -324,7 +326,7 @@ export class CNextParser extends antlr.Parser {
324
326
  case CNextParser.ENDIF_DIRECTIVE:
325
327
  case CNextParser.PRAGMA_TARGET:
326
328
  {
327
- this.state = 175;
329
+ this.state = 177;
328
330
  this.preprocessorDirective();
329
331
  }
330
332
  break;
@@ -332,25 +334,25 @@ export class CNextParser extends antlr.Parser {
332
334
  throw new antlr.NoViableAltException(this);
333
335
  }
334
336
  }
335
- this.state = 180;
337
+ this.state = 182;
336
338
  this.errorHandler.sync(this);
337
339
  _la = this.tokenStream.LA(1);
338
340
  }
339
- this.state = 184;
341
+ this.state = 186;
340
342
  this.errorHandler.sync(this);
341
343
  _la = this.tokenStream.LA(1);
342
344
  while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3799040) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973757) !== 0) || _la === 113) {
343
345
  {
344
346
  {
345
- this.state = 181;
347
+ this.state = 183;
346
348
  this.declaration();
347
349
  }
348
350
  }
349
- this.state = 186;
351
+ this.state = 188;
350
352
  this.errorHandler.sync(this);
351
353
  _la = this.tokenStream.LA(1);
352
354
  }
353
- this.state = 187;
355
+ this.state = 189;
354
356
  this.match(CNextParser.EOF);
355
357
  }
356
358
  }
@@ -373,7 +375,7 @@ export class CNextParser extends antlr.Parser {
373
375
  try {
374
376
  this.enterOuterAlt(localContext, 1);
375
377
  {
376
- this.state = 189;
378
+ this.state = 191;
377
379
  this.match(CNextParser.INCLUDE_DIRECTIVE);
378
380
  }
379
381
  }
@@ -394,7 +396,7 @@ export class CNextParser extends antlr.Parser {
394
396
  let localContext = new PreprocessorDirectiveContext(this.context, this.state);
395
397
  this.enterRule(localContext, 4, CNextParser.RULE_preprocessorDirective);
396
398
  try {
397
- this.state = 194;
399
+ this.state = 196;
398
400
  this.errorHandler.sync(this);
399
401
  switch (this.tokenStream.LA(1)) {
400
402
  case CNextParser.DEFINE_FUNCTION:
@@ -402,7 +404,7 @@ export class CNextParser extends antlr.Parser {
402
404
  case CNextParser.DEFINE_FLAG:
403
405
  this.enterOuterAlt(localContext, 1);
404
406
  {
405
- this.state = 191;
407
+ this.state = 193;
406
408
  this.defineDirective();
407
409
  }
408
410
  break;
@@ -412,14 +414,14 @@ export class CNextParser extends antlr.Parser {
412
414
  case CNextParser.ENDIF_DIRECTIVE:
413
415
  this.enterOuterAlt(localContext, 2);
414
416
  {
415
- this.state = 192;
417
+ this.state = 194;
416
418
  this.conditionalDirective();
417
419
  }
418
420
  break;
419
421
  case CNextParser.PRAGMA_TARGET:
420
422
  this.enterOuterAlt(localContext, 3);
421
423
  {
422
- this.state = 193;
424
+ this.state = 195;
423
425
  this.pragmaDirective();
424
426
  }
425
427
  break;
@@ -447,7 +449,7 @@ export class CNextParser extends antlr.Parser {
447
449
  try {
448
450
  this.enterOuterAlt(localContext, 1);
449
451
  {
450
- this.state = 196;
452
+ this.state = 198;
451
453
  _la = this.tokenStream.LA(1);
452
454
  if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 56) !== 0))) {
453
455
  this.errorHandler.recoverInline(this);
@@ -478,7 +480,7 @@ export class CNextParser extends antlr.Parser {
478
480
  try {
479
481
  this.enterOuterAlt(localContext, 1);
480
482
  {
481
- this.state = 198;
483
+ this.state = 200;
482
484
  _la = this.tokenStream.LA(1);
483
485
  if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 960) !== 0))) {
484
486
  this.errorHandler.recoverInline(this);
@@ -508,7 +510,7 @@ export class CNextParser extends antlr.Parser {
508
510
  try {
509
511
  this.enterOuterAlt(localContext, 1);
510
512
  {
511
- this.state = 200;
513
+ this.state = 202;
512
514
  this.match(CNextParser.PRAGMA_TARGET);
513
515
  }
514
516
  }
@@ -529,55 +531,55 @@ export class CNextParser extends antlr.Parser {
529
531
  let localContext = new DeclarationContext(this.context, this.state);
530
532
  this.enterRule(localContext, 12, CNextParser.RULE_declaration);
531
533
  try {
532
- this.state = 209;
534
+ this.state = 211;
533
535
  this.errorHandler.sync(this);
534
536
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) {
535
537
  case 1:
536
538
  this.enterOuterAlt(localContext, 1);
537
539
  {
538
- this.state = 202;
540
+ this.state = 204;
539
541
  this.scopeDeclaration();
540
542
  }
541
543
  break;
542
544
  case 2:
543
545
  this.enterOuterAlt(localContext, 2);
544
546
  {
545
- this.state = 203;
547
+ this.state = 205;
546
548
  this.registerDeclaration();
547
549
  }
548
550
  break;
549
551
  case 3:
550
552
  this.enterOuterAlt(localContext, 3);
551
553
  {
552
- this.state = 204;
554
+ this.state = 206;
553
555
  this.structDeclaration();
554
556
  }
555
557
  break;
556
558
  case 4:
557
559
  this.enterOuterAlt(localContext, 4);
558
560
  {
559
- this.state = 205;
561
+ this.state = 207;
560
562
  this.enumDeclaration();
561
563
  }
562
564
  break;
563
565
  case 5:
564
566
  this.enterOuterAlt(localContext, 5);
565
567
  {
566
- this.state = 206;
568
+ this.state = 208;
567
569
  this.bitmapDeclaration();
568
570
  }
569
571
  break;
570
572
  case 6:
571
573
  this.enterOuterAlt(localContext, 6);
572
574
  {
573
- this.state = 207;
575
+ this.state = 209;
574
576
  this.functionDeclaration();
575
577
  }
576
578
  break;
577
579
  case 7:
578
580
  this.enterOuterAlt(localContext, 7);
579
581
  {
580
- this.state = 208;
582
+ this.state = 210;
581
583
  this.variableDeclaration();
582
584
  }
583
585
  break;
@@ -603,27 +605,27 @@ export class CNextParser extends antlr.Parser {
603
605
  try {
604
606
  this.enterOuterAlt(localContext, 1);
605
607
  {
606
- this.state = 211;
608
+ this.state = 213;
607
609
  this.match(CNextParser.SCOPE);
608
- this.state = 212;
610
+ this.state = 214;
609
611
  this.match(CNextParser.IDENTIFIER);
610
- this.state = 213;
612
+ this.state = 215;
611
613
  this.match(CNextParser.LBRACE);
612
- this.state = 217;
614
+ this.state = 219;
613
615
  this.errorHandler.sync(this);
614
616
  _la = this.tokenStream.LA(1);
615
617
  while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4190208) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973757) !== 0) || _la === 113) {
616
618
  {
617
619
  {
618
- this.state = 214;
620
+ this.state = 216;
619
621
  this.scopeMember();
620
622
  }
621
623
  }
622
- this.state = 219;
624
+ this.state = 221;
623
625
  this.errorHandler.sync(this);
624
626
  _la = this.tokenStream.LA(1);
625
627
  }
626
- this.state = 220;
628
+ this.state = 222;
627
629
  this.match(CNextParser.RBRACE);
628
630
  }
629
631
  }
@@ -645,108 +647,108 @@ export class CNextParser extends antlr.Parser {
645
647
  this.enterRule(localContext, 16, CNextParser.RULE_scopeMember);
646
648
  let _la: number;
647
649
  try {
648
- this.state = 246;
650
+ this.state = 248;
649
651
  this.errorHandler.sync(this);
650
652
  switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) {
651
653
  case 1:
652
654
  this.enterOuterAlt(localContext, 1);
653
655
  {
654
- this.state = 223;
656
+ this.state = 225;
655
657
  this.errorHandler.sync(this);
656
658
  _la = this.tokenStream.LA(1);
657
659
  if (_la === 17 || _la === 18) {
658
660
  {
659
- this.state = 222;
661
+ this.state = 224;
660
662
  this.visibilityModifier();
661
663
  }
662
664
  }
663
665
 
664
- this.state = 225;
666
+ this.state = 227;
665
667
  this.variableDeclaration();
666
668
  }
667
669
  break;
668
670
  case 2:
669
671
  this.enterOuterAlt(localContext, 2);
670
672
  {
671
- this.state = 227;
673
+ this.state = 229;
672
674
  this.errorHandler.sync(this);
673
675
  _la = this.tokenStream.LA(1);
674
676
  if (_la === 17 || _la === 18) {
675
677
  {
676
- this.state = 226;
678
+ this.state = 228;
677
679
  this.visibilityModifier();
678
680
  }
679
681
  }
680
682
 
681
- this.state = 229;
683
+ this.state = 231;
682
684
  this.functionDeclaration();
683
685
  }
684
686
  break;
685
687
  case 3:
686
688
  this.enterOuterAlt(localContext, 3);
687
689
  {
688
- this.state = 231;
690
+ this.state = 233;
689
691
  this.errorHandler.sync(this);
690
692
  _la = this.tokenStream.LA(1);
691
693
  if (_la === 17 || _la === 18) {
692
694
  {
693
- this.state = 230;
695
+ this.state = 232;
694
696
  this.visibilityModifier();
695
697
  }
696
698
  }
697
699
 
698
- this.state = 233;
700
+ this.state = 235;
699
701
  this.enumDeclaration();
700
702
  }
701
703
  break;
702
704
  case 4:
703
705
  this.enterOuterAlt(localContext, 4);
704
706
  {
705
- this.state = 235;
707
+ this.state = 237;
706
708
  this.errorHandler.sync(this);
707
709
  _la = this.tokenStream.LA(1);
708
710
  if (_la === 17 || _la === 18) {
709
711
  {
710
- this.state = 234;
712
+ this.state = 236;
711
713
  this.visibilityModifier();
712
714
  }
713
715
  }
714
716
 
715
- this.state = 237;
717
+ this.state = 239;
716
718
  this.bitmapDeclaration();
717
719
  }
718
720
  break;
719
721
  case 5:
720
722
  this.enterOuterAlt(localContext, 5);
721
723
  {
722
- this.state = 239;
724
+ this.state = 241;
723
725
  this.errorHandler.sync(this);
724
726
  _la = this.tokenStream.LA(1);
725
727
  if (_la === 17 || _la === 18) {
726
728
  {
727
- this.state = 238;
729
+ this.state = 240;
728
730
  this.visibilityModifier();
729
731
  }
730
732
  }
731
733
 
732
- this.state = 241;
734
+ this.state = 243;
733
735
  this.registerDeclaration();
734
736
  }
735
737
  break;
736
738
  case 6:
737
739
  this.enterOuterAlt(localContext, 6);
738
740
  {
739
- this.state = 243;
741
+ this.state = 245;
740
742
  this.errorHandler.sync(this);
741
743
  _la = this.tokenStream.LA(1);
742
744
  if (_la === 17 || _la === 18) {
743
745
  {
744
- this.state = 242;
746
+ this.state = 244;
745
747
  this.visibilityModifier();
746
748
  }
747
749
  }
748
750
 
749
- this.state = 245;
751
+ this.state = 247;
750
752
  this.structDeclaration();
751
753
  }
752
754
  break;
@@ -772,7 +774,7 @@ export class CNextParser extends antlr.Parser {
772
774
  try {
773
775
  this.enterOuterAlt(localContext, 1);
774
776
  {
775
- this.state = 248;
777
+ this.state = 250;
776
778
  _la = this.tokenStream.LA(1);
777
779
  if(!(_la === 17 || _la === 18)) {
778
780
  this.errorHandler.recoverInline(this);
@@ -803,31 +805,31 @@ export class CNextParser extends antlr.Parser {
803
805
  try {
804
806
  this.enterOuterAlt(localContext, 1);
805
807
  {
806
- this.state = 250;
808
+ this.state = 252;
807
809
  this.match(CNextParser.REGISTER);
808
- this.state = 251;
810
+ this.state = 253;
809
811
  this.match(CNextParser.IDENTIFIER);
810
- this.state = 252;
812
+ this.state = 254;
811
813
  this.match(CNextParser.AT);
812
- this.state = 253;
814
+ this.state = 255;
813
815
  this.expression();
814
- this.state = 254;
816
+ this.state = 256;
815
817
  this.match(CNextParser.LBRACE);
816
- this.state = 258;
818
+ this.state = 260;
817
819
  this.errorHandler.sync(this);
818
820
  _la = this.tokenStream.LA(1);
819
821
  while (_la === 113) {
820
822
  {
821
823
  {
822
- this.state = 255;
824
+ this.state = 257;
823
825
  this.registerMember();
824
826
  }
825
827
  }
826
- this.state = 260;
828
+ this.state = 262;
827
829
  this.errorHandler.sync(this);
828
830
  _la = this.tokenStream.LA(1);
829
831
  }
830
- this.state = 261;
832
+ this.state = 263;
831
833
  this.match(CNextParser.RBRACE);
832
834
  }
833
835
  }
@@ -851,24 +853,24 @@ export class CNextParser extends antlr.Parser {
851
853
  try {
852
854
  this.enterOuterAlt(localContext, 1);
853
855
  {
854
- this.state = 263;
856
+ this.state = 265;
855
857
  this.match(CNextParser.IDENTIFIER);
856
- this.state = 264;
858
+ this.state = 266;
857
859
  this.match(CNextParser.COLON);
858
- this.state = 265;
860
+ this.state = 267;
859
861
  this.type_();
860
- this.state = 266;
862
+ this.state = 268;
861
863
  this.accessModifier();
862
- this.state = 267;
864
+ this.state = 269;
863
865
  this.match(CNextParser.AT);
864
- this.state = 268;
865
- this.expression();
866
866
  this.state = 270;
867
+ this.expression();
868
+ this.state = 272;
867
869
  this.errorHandler.sync(this);
868
870
  _la = this.tokenStream.LA(1);
869
871
  if (_la === 103) {
870
872
  {
871
- this.state = 269;
873
+ this.state = 271;
872
874
  this.match(CNextParser.COMMA);
873
875
  }
874
876
  }
@@ -895,7 +897,7 @@ export class CNextParser extends antlr.Parser {
895
897
  try {
896
898
  this.enterOuterAlt(localContext, 1);
897
899
  {
898
- this.state = 272;
900
+ this.state = 274;
899
901
  _la = this.tokenStream.LA(1);
900
902
  if(!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 31) !== 0))) {
901
903
  this.errorHandler.recoverInline(this);
@@ -926,27 +928,27 @@ export class CNextParser extends antlr.Parser {
926
928
  try {
927
929
  this.enterOuterAlt(localContext, 1);
928
930
  {
929
- this.state = 274;
931
+ this.state = 276;
930
932
  this.match(CNextParser.STRUCT);
931
- this.state = 275;
933
+ this.state = 277;
932
934
  this.match(CNextParser.IDENTIFIER);
933
- this.state = 276;
935
+ this.state = 278;
934
936
  this.match(CNextParser.LBRACE);
935
- this.state = 280;
937
+ this.state = 282;
936
938
  this.errorHandler.sync(this);
937
939
  _la = this.tokenStream.LA(1);
938
940
  while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2146304) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146959361) !== 0) || _la === 113) {
939
941
  {
940
942
  {
941
- this.state = 277;
943
+ this.state = 279;
942
944
  this.structMember();
943
945
  }
944
946
  }
945
- this.state = 282;
947
+ this.state = 284;
946
948
  this.errorHandler.sync(this);
947
949
  _la = this.tokenStream.LA(1);
948
950
  }
949
- this.state = 283;
951
+ this.state = 285;
950
952
  this.match(CNextParser.RBRACE);
951
953
  }
952
954
  }
@@ -970,25 +972,25 @@ export class CNextParser extends antlr.Parser {
970
972
  try {
971
973
  this.enterOuterAlt(localContext, 1);
972
974
  {
973
- this.state = 285;
975
+ this.state = 287;
974
976
  this.type_();
975
- this.state = 286;
977
+ this.state = 288;
976
978
  this.match(CNextParser.IDENTIFIER);
977
- this.state = 290;
979
+ this.state = 292;
978
980
  this.errorHandler.sync(this);
979
981
  _la = this.tokenStream.LA(1);
980
982
  while (_la === 100) {
981
983
  {
982
984
  {
983
- this.state = 287;
985
+ this.state = 289;
984
986
  this.arrayDimension();
985
987
  }
986
988
  }
987
- this.state = 292;
989
+ this.state = 294;
988
990
  this.errorHandler.sync(this);
989
991
  _la = this.tokenStream.LA(1);
990
992
  }
991
- this.state = 293;
993
+ this.state = 295;
992
994
  this.match(CNextParser.SEMI);
993
995
  }
994
996
  }
@@ -1013,43 +1015,43 @@ export class CNextParser extends antlr.Parser {
1013
1015
  let alternative: number;
1014
1016
  this.enterOuterAlt(localContext, 1);
1015
1017
  {
1016
- this.state = 295;
1018
+ this.state = 297;
1017
1019
  this.match(CNextParser.ENUM);
1018
- this.state = 296;
1020
+ this.state = 298;
1019
1021
  this.match(CNextParser.IDENTIFIER);
1020
- this.state = 297;
1022
+ this.state = 299;
1021
1023
  this.match(CNextParser.LBRACE);
1022
- this.state = 298;
1024
+ this.state = 300;
1023
1025
  this.enumMember();
1024
- this.state = 303;
1026
+ this.state = 305;
1025
1027
  this.errorHandler.sync(this);
1026
1028
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 17, this.context);
1027
1029
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1028
1030
  if (alternative === 1) {
1029
1031
  {
1030
1032
  {
1031
- this.state = 299;
1033
+ this.state = 301;
1032
1034
  this.match(CNextParser.COMMA);
1033
- this.state = 300;
1035
+ this.state = 302;
1034
1036
  this.enumMember();
1035
1037
  }
1036
1038
  }
1037
1039
  }
1038
- this.state = 305;
1040
+ this.state = 307;
1039
1041
  this.errorHandler.sync(this);
1040
1042
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 17, this.context);
1041
1043
  }
1042
- this.state = 307;
1044
+ this.state = 309;
1043
1045
  this.errorHandler.sync(this);
1044
1046
  _la = this.tokenStream.LA(1);
1045
1047
  if (_la === 103) {
1046
1048
  {
1047
- this.state = 306;
1049
+ this.state = 308;
1048
1050
  this.match(CNextParser.COMMA);
1049
1051
  }
1050
1052
  }
1051
1053
 
1052
- this.state = 309;
1054
+ this.state = 311;
1053
1055
  this.match(CNextParser.RBRACE);
1054
1056
  }
1055
1057
  }
@@ -1073,16 +1075,16 @@ export class CNextParser extends antlr.Parser {
1073
1075
  try {
1074
1076
  this.enterOuterAlt(localContext, 1);
1075
1077
  {
1076
- this.state = 311;
1078
+ this.state = 313;
1077
1079
  this.match(CNextParser.IDENTIFIER);
1078
- this.state = 314;
1080
+ this.state = 316;
1079
1081
  this.errorHandler.sync(this);
1080
1082
  _la = this.tokenStream.LA(1);
1081
1083
  if (_la === 75) {
1082
1084
  {
1083
- this.state = 312;
1085
+ this.state = 314;
1084
1086
  this.match(CNextParser.ASSIGN);
1085
- this.state = 313;
1087
+ this.state = 315;
1086
1088
  this.expression();
1087
1089
  }
1088
1090
  }
@@ -1110,43 +1112,43 @@ export class CNextParser extends antlr.Parser {
1110
1112
  let alternative: number;
1111
1113
  this.enterOuterAlt(localContext, 1);
1112
1114
  {
1113
- this.state = 316;
1115
+ this.state = 318;
1114
1116
  this.bitmapType();
1115
- this.state = 317;
1117
+ this.state = 319;
1116
1118
  this.match(CNextParser.IDENTIFIER);
1117
- this.state = 318;
1119
+ this.state = 320;
1118
1120
  this.match(CNextParser.LBRACE);
1119
- this.state = 319;
1121
+ this.state = 321;
1120
1122
  this.bitmapMember();
1121
- this.state = 324;
1123
+ this.state = 326;
1122
1124
  this.errorHandler.sync(this);
1123
1125
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 20, this.context);
1124
1126
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1125
1127
  if (alternative === 1) {
1126
1128
  {
1127
1129
  {
1128
- this.state = 320;
1130
+ this.state = 322;
1129
1131
  this.match(CNextParser.COMMA);
1130
- this.state = 321;
1132
+ this.state = 323;
1131
1133
  this.bitmapMember();
1132
1134
  }
1133
1135
  }
1134
1136
  }
1135
- this.state = 326;
1137
+ this.state = 328;
1136
1138
  this.errorHandler.sync(this);
1137
1139
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 20, this.context);
1138
1140
  }
1139
- this.state = 328;
1141
+ this.state = 330;
1140
1142
  this.errorHandler.sync(this);
1141
1143
  _la = this.tokenStream.LA(1);
1142
1144
  if (_la === 103) {
1143
1145
  {
1144
- this.state = 327;
1146
+ this.state = 329;
1145
1147
  this.match(CNextParser.COMMA);
1146
1148
  }
1147
1149
  }
1148
1150
 
1149
- this.state = 330;
1151
+ this.state = 332;
1150
1152
  this.match(CNextParser.RBRACE);
1151
1153
  }
1152
1154
  }
@@ -1170,7 +1172,7 @@ export class CNextParser extends antlr.Parser {
1170
1172
  try {
1171
1173
  this.enterOuterAlt(localContext, 1);
1172
1174
  {
1173
- this.state = 332;
1175
+ this.state = 334;
1174
1176
  _la = this.tokenStream.LA(1);
1175
1177
  if(!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 15) !== 0))) {
1176
1178
  this.errorHandler.recoverInline(this);
@@ -1201,18 +1203,18 @@ export class CNextParser extends antlr.Parser {
1201
1203
  try {
1202
1204
  this.enterOuterAlt(localContext, 1);
1203
1205
  {
1204
- this.state = 334;
1206
+ this.state = 336;
1205
1207
  this.match(CNextParser.IDENTIFIER);
1206
- this.state = 338;
1208
+ this.state = 340;
1207
1209
  this.errorHandler.sync(this);
1208
1210
  _la = this.tokenStream.LA(1);
1209
1211
  if (_la === 100) {
1210
1212
  {
1211
- this.state = 335;
1213
+ this.state = 337;
1212
1214
  this.match(CNextParser.LBRACKET);
1213
- this.state = 336;
1215
+ this.state = 338;
1214
1216
  this.match(CNextParser.INTEGER_LITERAL);
1215
- this.state = 337;
1217
+ this.state = 339;
1216
1218
  this.match(CNextParser.RBRACKET);
1217
1219
  }
1218
1220
  }
@@ -1239,25 +1241,25 @@ export class CNextParser extends antlr.Parser {
1239
1241
  try {
1240
1242
  this.enterOuterAlt(localContext, 1);
1241
1243
  {
1242
- this.state = 340;
1244
+ this.state = 342;
1243
1245
  this.type_();
1244
- this.state = 341;
1246
+ this.state = 343;
1245
1247
  this.match(CNextParser.IDENTIFIER);
1246
- this.state = 342;
1247
- this.match(CNextParser.LPAREN);
1248
1248
  this.state = 344;
1249
+ this.match(CNextParser.LPAREN);
1250
+ this.state = 346;
1249
1251
  this.errorHandler.sync(this);
1250
1252
  _la = this.tokenStream.LA(1);
1251
1253
  if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2670592) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146959361) !== 0) || _la === 113) {
1252
1254
  {
1253
- this.state = 343;
1255
+ this.state = 345;
1254
1256
  this.parameterList();
1255
1257
  }
1256
1258
  }
1257
1259
 
1258
- this.state = 346;
1260
+ this.state = 348;
1259
1261
  this.match(CNextParser.RPAREN);
1260
- this.state = 347;
1262
+ this.state = 349;
1261
1263
  this.block();
1262
1264
  }
1263
1265
  }
@@ -1281,21 +1283,21 @@ export class CNextParser extends antlr.Parser {
1281
1283
  try {
1282
1284
  this.enterOuterAlt(localContext, 1);
1283
1285
  {
1284
- this.state = 349;
1286
+ this.state = 351;
1285
1287
  this.parameter();
1286
- this.state = 354;
1288
+ this.state = 356;
1287
1289
  this.errorHandler.sync(this);
1288
1290
  _la = this.tokenStream.LA(1);
1289
1291
  while (_la === 103) {
1290
1292
  {
1291
1293
  {
1292
- this.state = 350;
1294
+ this.state = 352;
1293
1295
  this.match(CNextParser.COMMA);
1294
- this.state = 351;
1296
+ this.state = 353;
1295
1297
  this.parameter();
1296
1298
  }
1297
1299
  }
1298
- this.state = 356;
1300
+ this.state = 358;
1299
1301
  this.errorHandler.sync(this);
1300
1302
  _la = this.tokenStream.LA(1);
1301
1303
  }
@@ -1321,31 +1323,31 @@ export class CNextParser extends antlr.Parser {
1321
1323
  try {
1322
1324
  this.enterOuterAlt(localContext, 1);
1323
1325
  {
1324
- this.state = 358;
1326
+ this.state = 360;
1325
1327
  this.errorHandler.sync(this);
1326
1328
  _la = this.tokenStream.LA(1);
1327
1329
  if (_la === 19) {
1328
1330
  {
1329
- this.state = 357;
1331
+ this.state = 359;
1330
1332
  this.constModifier();
1331
1333
  }
1332
1334
  }
1333
1335
 
1334
- this.state = 360;
1336
+ this.state = 362;
1335
1337
  this.type_();
1336
- this.state = 361;
1338
+ this.state = 363;
1337
1339
  this.match(CNextParser.IDENTIFIER);
1338
- this.state = 365;
1340
+ this.state = 367;
1339
1341
  this.errorHandler.sync(this);
1340
1342
  _la = this.tokenStream.LA(1);
1341
1343
  while (_la === 100) {
1342
1344
  {
1343
1345
  {
1344
- this.state = 362;
1346
+ this.state = 364;
1345
1347
  this.arrayDimension();
1346
1348
  }
1347
1349
  }
1348
- this.state = 367;
1350
+ this.state = 369;
1349
1351
  this.errorHandler.sync(this);
1350
1352
  _la = this.tokenStream.LA(1);
1351
1353
  }
@@ -1370,7 +1372,7 @@ export class CNextParser extends antlr.Parser {
1370
1372
  try {
1371
1373
  this.enterOuterAlt(localContext, 1);
1372
1374
  {
1373
- this.state = 368;
1375
+ this.state = 370;
1374
1376
  this.match(CNextParser.CONST);
1375
1377
  }
1376
1378
  }
@@ -1393,7 +1395,7 @@ export class CNextParser extends antlr.Parser {
1393
1395
  try {
1394
1396
  this.enterOuterAlt(localContext, 1);
1395
1397
  {
1396
- this.state = 370;
1398
+ this.state = 372;
1397
1399
  this.match(CNextParser.VOLATILE);
1398
1400
  }
1399
1401
  }
@@ -1417,7 +1419,7 @@ export class CNextParser extends antlr.Parser {
1417
1419
  try {
1418
1420
  this.enterOuterAlt(localContext, 1);
1419
1421
  {
1420
- this.state = 372;
1422
+ this.state = 374;
1421
1423
  _la = this.tokenStream.LA(1);
1422
1424
  if(!(_la === 45 || _la === 46)) {
1423
1425
  this.errorHandler.recoverInline(this);
@@ -1447,7 +1449,7 @@ export class CNextParser extends antlr.Parser {
1447
1449
  try {
1448
1450
  this.enterOuterAlt(localContext, 1);
1449
1451
  {
1450
- this.state = 374;
1452
+ this.state = 376;
1451
1453
  this.match(CNextParser.ATOMIC);
1452
1454
  }
1453
1455
  }
@@ -1471,19 +1473,19 @@ export class CNextParser extends antlr.Parser {
1471
1473
  try {
1472
1474
  this.enterOuterAlt(localContext, 1);
1473
1475
  {
1474
- this.state = 376;
1475
- this.match(CNextParser.LBRACKET);
1476
1476
  this.state = 378;
1477
+ this.match(CNextParser.LBRACKET);
1478
+ this.state = 380;
1477
1479
  this.errorHandler.sync(this);
1478
1480
  _la = this.tokenStream.LA(1);
1479
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)) {
1480
1482
  {
1481
- this.state = 377;
1483
+ this.state = 379;
1482
1484
  this.expression();
1483
1485
  }
1484
1486
  }
1485
1487
 
1486
- this.state = 380;
1488
+ this.state = 382;
1487
1489
  this.match(CNextParser.RBRACKET);
1488
1490
  }
1489
1491
  }
@@ -1505,100 +1507,100 @@ export class CNextParser extends antlr.Parser {
1505
1507
  this.enterRule(localContext, 56, CNextParser.RULE_variableDeclaration);
1506
1508
  let _la: number;
1507
1509
  try {
1508
- this.state = 415;
1510
+ this.state = 417;
1509
1511
  this.errorHandler.sync(this);
1510
1512
  switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) {
1511
1513
  case 1:
1512
1514
  this.enterOuterAlt(localContext, 1);
1513
1515
  {
1514
- this.state = 383;
1516
+ this.state = 385;
1515
1517
  this.errorHandler.sync(this);
1516
1518
  _la = this.tokenStream.LA(1);
1517
1519
  if (_la === 47) {
1518
1520
  {
1519
- this.state = 382;
1521
+ this.state = 384;
1520
1522
  this.atomicModifier();
1521
1523
  }
1522
1524
  }
1523
1525
 
1524
- this.state = 386;
1526
+ this.state = 388;
1525
1527
  this.errorHandler.sync(this);
1526
1528
  _la = this.tokenStream.LA(1);
1527
1529
  if (_la === 20) {
1528
1530
  {
1529
- this.state = 385;
1531
+ this.state = 387;
1530
1532
  this.volatileModifier();
1531
1533
  }
1532
1534
  }
1533
1535
 
1534
- this.state = 389;
1536
+ this.state = 391;
1535
1537
  this.errorHandler.sync(this);
1536
1538
  _la = this.tokenStream.LA(1);
1537
1539
  if (_la === 19) {
1538
1540
  {
1539
- this.state = 388;
1541
+ this.state = 390;
1540
1542
  this.constModifier();
1541
1543
  }
1542
1544
  }
1543
1545
 
1544
- this.state = 392;
1546
+ this.state = 394;
1545
1547
  this.errorHandler.sync(this);
1546
1548
  _la = this.tokenStream.LA(1);
1547
1549
  if (_la === 45 || _la === 46) {
1548
1550
  {
1549
- this.state = 391;
1551
+ this.state = 393;
1550
1552
  this.overflowModifier();
1551
1553
  }
1552
1554
  }
1553
1555
 
1554
- this.state = 394;
1556
+ this.state = 396;
1555
1557
  this.type_();
1556
- this.state = 395;
1558
+ this.state = 397;
1557
1559
  this.match(CNextParser.IDENTIFIER);
1558
- this.state = 399;
1560
+ this.state = 401;
1559
1561
  this.errorHandler.sync(this);
1560
1562
  _la = this.tokenStream.LA(1);
1561
1563
  while (_la === 100) {
1562
1564
  {
1563
1565
  {
1564
- this.state = 396;
1566
+ this.state = 398;
1565
1567
  this.arrayDimension();
1566
1568
  }
1567
1569
  }
1568
- this.state = 401;
1570
+ this.state = 403;
1569
1571
  this.errorHandler.sync(this);
1570
1572
  _la = this.tokenStream.LA(1);
1571
1573
  }
1572
- this.state = 404;
1574
+ this.state = 406;
1573
1575
  this.errorHandler.sync(this);
1574
1576
  _la = this.tokenStream.LA(1);
1575
1577
  if (_la === 75) {
1576
1578
  {
1577
- this.state = 402;
1579
+ this.state = 404;
1578
1580
  this.match(CNextParser.ASSIGN);
1579
- this.state = 403;
1581
+ this.state = 405;
1580
1582
  this.expression();
1581
1583
  }
1582
1584
  }
1583
1585
 
1584
- this.state = 406;
1586
+ this.state = 408;
1585
1587
  this.match(CNextParser.SEMI);
1586
1588
  }
1587
1589
  break;
1588
1590
  case 2:
1589
1591
  this.enterOuterAlt(localContext, 2);
1590
1592
  {
1591
- this.state = 408;
1593
+ this.state = 410;
1592
1594
  this.type_();
1593
- this.state = 409;
1595
+ this.state = 411;
1594
1596
  this.match(CNextParser.IDENTIFIER);
1595
- this.state = 410;
1597
+ this.state = 412;
1596
1598
  this.match(CNextParser.LPAREN);
1597
- this.state = 411;
1599
+ this.state = 413;
1598
1600
  this.constructorArgumentList();
1599
- this.state = 412;
1601
+ this.state = 414;
1600
1602
  this.match(CNextParser.RPAREN);
1601
- this.state = 413;
1603
+ this.state = 415;
1602
1604
  this.match(CNextParser.SEMI);
1603
1605
  }
1604
1606
  break;
@@ -1624,21 +1626,21 @@ export class CNextParser extends antlr.Parser {
1624
1626
  try {
1625
1627
  this.enterOuterAlt(localContext, 1);
1626
1628
  {
1627
- this.state = 417;
1629
+ this.state = 419;
1628
1630
  this.match(CNextParser.IDENTIFIER);
1629
- this.state = 422;
1631
+ this.state = 424;
1630
1632
  this.errorHandler.sync(this);
1631
1633
  _la = this.tokenStream.LA(1);
1632
1634
  while (_la === 103) {
1633
1635
  {
1634
1636
  {
1635
- this.state = 418;
1637
+ this.state = 420;
1636
1638
  this.match(CNextParser.COMMA);
1637
- this.state = 419;
1639
+ this.state = 421;
1638
1640
  this.match(CNextParser.IDENTIFIER);
1639
1641
  }
1640
1642
  }
1641
- this.state = 424;
1643
+ this.state = 426;
1642
1644
  this.errorHandler.sync(this);
1643
1645
  _la = this.tokenStream.LA(1);
1644
1646
  }
@@ -1664,23 +1666,23 @@ export class CNextParser extends antlr.Parser {
1664
1666
  try {
1665
1667
  this.enterOuterAlt(localContext, 1);
1666
1668
  {
1667
- this.state = 425;
1669
+ this.state = 427;
1668
1670
  this.match(CNextParser.LBRACE);
1669
- this.state = 429;
1671
+ this.state = 431;
1670
1672
  this.errorHandler.sync(this);
1671
1673
  _la = this.tokenStream.LA(1);
1672
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)) {
1673
1675
  {
1674
1676
  {
1675
- this.state = 426;
1677
+ this.state = 428;
1676
1678
  this.statement();
1677
1679
  }
1678
1680
  }
1679
- this.state = 431;
1681
+ this.state = 433;
1680
1682
  this.errorHandler.sync(this);
1681
1683
  _la = this.tokenStream.LA(1);
1682
1684
  }
1683
- this.state = 432;
1685
+ this.state = 434;
1684
1686
  this.match(CNextParser.RBRACE);
1685
1687
  }
1686
1688
  }
@@ -1701,83 +1703,83 @@ export class CNextParser extends antlr.Parser {
1701
1703
  let localContext = new StatementContext(this.context, this.state);
1702
1704
  this.enterRule(localContext, 62, CNextParser.RULE_statement);
1703
1705
  try {
1704
- this.state = 445;
1706
+ this.state = 447;
1705
1707
  this.errorHandler.sync(this);
1706
1708
  switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) {
1707
1709
  case 1:
1708
1710
  this.enterOuterAlt(localContext, 1);
1709
1711
  {
1710
- this.state = 434;
1712
+ this.state = 436;
1711
1713
  this.variableDeclaration();
1712
1714
  }
1713
1715
  break;
1714
1716
  case 2:
1715
1717
  this.enterOuterAlt(localContext, 2);
1716
1718
  {
1717
- this.state = 435;
1719
+ this.state = 437;
1718
1720
  this.assignmentStatement();
1719
1721
  }
1720
1722
  break;
1721
1723
  case 3:
1722
1724
  this.enterOuterAlt(localContext, 3);
1723
1725
  {
1724
- this.state = 436;
1726
+ this.state = 438;
1725
1727
  this.expressionStatement();
1726
1728
  }
1727
1729
  break;
1728
1730
  case 4:
1729
1731
  this.enterOuterAlt(localContext, 4);
1730
1732
  {
1731
- this.state = 437;
1733
+ this.state = 439;
1732
1734
  this.ifStatement();
1733
1735
  }
1734
1736
  break;
1735
1737
  case 5:
1736
1738
  this.enterOuterAlt(localContext, 5);
1737
1739
  {
1738
- this.state = 438;
1740
+ this.state = 440;
1739
1741
  this.whileStatement();
1740
1742
  }
1741
1743
  break;
1742
1744
  case 6:
1743
1745
  this.enterOuterAlt(localContext, 6);
1744
1746
  {
1745
- this.state = 439;
1747
+ this.state = 441;
1746
1748
  this.doWhileStatement();
1747
1749
  }
1748
1750
  break;
1749
1751
  case 7:
1750
1752
  this.enterOuterAlt(localContext, 7);
1751
1753
  {
1752
- this.state = 440;
1754
+ this.state = 442;
1753
1755
  this.forStatement();
1754
1756
  }
1755
1757
  break;
1756
1758
  case 8:
1757
1759
  this.enterOuterAlt(localContext, 8);
1758
1760
  {
1759
- this.state = 441;
1761
+ this.state = 443;
1760
1762
  this.switchStatement();
1761
1763
  }
1762
1764
  break;
1763
1765
  case 9:
1764
1766
  this.enterOuterAlt(localContext, 9);
1765
1767
  {
1766
- this.state = 442;
1768
+ this.state = 444;
1767
1769
  this.returnStatement();
1768
1770
  }
1769
1771
  break;
1770
1772
  case 10:
1771
1773
  this.enterOuterAlt(localContext, 10);
1772
1774
  {
1773
- this.state = 443;
1775
+ this.state = 445;
1774
1776
  this.criticalStatement();
1775
1777
  }
1776
1778
  break;
1777
1779
  case 11:
1778
1780
  this.enterOuterAlt(localContext, 11);
1779
1781
  {
1780
- this.state = 444;
1782
+ this.state = 446;
1781
1783
  this.block();
1782
1784
  }
1783
1785
  break;
@@ -1802,9 +1804,9 @@ export class CNextParser extends antlr.Parser {
1802
1804
  try {
1803
1805
  this.enterOuterAlt(localContext, 1);
1804
1806
  {
1805
- this.state = 447;
1807
+ this.state = 449;
1806
1808
  this.match(CNextParser.CRITICAL);
1807
- this.state = 448;
1809
+ this.state = 450;
1808
1810
  this.block();
1809
1811
  }
1810
1812
  }
@@ -1827,13 +1829,13 @@ export class CNextParser extends antlr.Parser {
1827
1829
  try {
1828
1830
  this.enterOuterAlt(localContext, 1);
1829
1831
  {
1830
- this.state = 450;
1832
+ this.state = 452;
1831
1833
  this.assignmentTarget();
1832
- this.state = 451;
1834
+ this.state = 453;
1833
1835
  this.assignmentOperator();
1834
- this.state = 452;
1836
+ this.state = 454;
1835
1837
  this.expression();
1836
- this.state = 453;
1838
+ this.state = 455;
1837
1839
  this.match(CNextParser.SEMI);
1838
1840
  }
1839
1841
  }
@@ -1857,7 +1859,7 @@ export class CNextParser extends antlr.Parser {
1857
1859
  try {
1858
1860
  this.enterOuterAlt(localContext, 1);
1859
1861
  {
1860
- this.state = 455;
1862
+ this.state = 457;
1861
1863
  _la = this.tokenStream.LA(1);
1862
1864
  if(!(((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2047) !== 0))) {
1863
1865
  this.errorHandler.recoverInline(this);
@@ -1886,29 +1888,29 @@ export class CNextParser extends antlr.Parser {
1886
1888
  this.enterRule(localContext, 70, CNextParser.RULE_assignmentTarget);
1887
1889
  let _la: number;
1888
1890
  try {
1889
- this.state = 482;
1891
+ this.state = 484;
1890
1892
  this.errorHandler.sync(this);
1891
1893
  switch (this.tokenStream.LA(1)) {
1892
1894
  case CNextParser.GLOBAL:
1893
1895
  this.enterOuterAlt(localContext, 1);
1894
1896
  {
1895
- this.state = 457;
1897
+ this.state = 459;
1896
1898
  this.match(CNextParser.GLOBAL);
1897
- this.state = 458;
1899
+ this.state = 460;
1898
1900
  this.match(CNextParser.DOT);
1899
- this.state = 459;
1901
+ this.state = 461;
1900
1902
  this.match(CNextParser.IDENTIFIER);
1901
- this.state = 463;
1903
+ this.state = 465;
1902
1904
  this.errorHandler.sync(this);
1903
1905
  _la = this.tokenStream.LA(1);
1904
1906
  while (_la === 100 || _la === 104) {
1905
1907
  {
1906
1908
  {
1907
- this.state = 460;
1909
+ this.state = 462;
1908
1910
  this.postfixTargetOp();
1909
1911
  }
1910
1912
  }
1911
- this.state = 465;
1913
+ this.state = 467;
1912
1914
  this.errorHandler.sync(this);
1913
1915
  _la = this.tokenStream.LA(1);
1914
1916
  }
@@ -1917,23 +1919,23 @@ export class CNextParser extends antlr.Parser {
1917
1919
  case CNextParser.THIS:
1918
1920
  this.enterOuterAlt(localContext, 2);
1919
1921
  {
1920
- this.state = 466;
1922
+ this.state = 468;
1921
1923
  this.match(CNextParser.THIS);
1922
- this.state = 467;
1924
+ this.state = 469;
1923
1925
  this.match(CNextParser.DOT);
1924
- this.state = 468;
1926
+ this.state = 470;
1925
1927
  this.match(CNextParser.IDENTIFIER);
1926
- this.state = 472;
1928
+ this.state = 474;
1927
1929
  this.errorHandler.sync(this);
1928
1930
  _la = this.tokenStream.LA(1);
1929
1931
  while (_la === 100 || _la === 104) {
1930
1932
  {
1931
1933
  {
1932
- this.state = 469;
1934
+ this.state = 471;
1933
1935
  this.postfixTargetOp();
1934
1936
  }
1935
1937
  }
1936
- this.state = 474;
1938
+ this.state = 476;
1937
1939
  this.errorHandler.sync(this);
1938
1940
  _la = this.tokenStream.LA(1);
1939
1941
  }
@@ -1942,19 +1944,19 @@ export class CNextParser extends antlr.Parser {
1942
1944
  case CNextParser.IDENTIFIER:
1943
1945
  this.enterOuterAlt(localContext, 3);
1944
1946
  {
1945
- this.state = 475;
1947
+ this.state = 477;
1946
1948
  this.match(CNextParser.IDENTIFIER);
1947
- this.state = 479;
1949
+ this.state = 481;
1948
1950
  this.errorHandler.sync(this);
1949
1951
  _la = this.tokenStream.LA(1);
1950
1952
  while (_la === 100 || _la === 104) {
1951
1953
  {
1952
1954
  {
1953
- this.state = 476;
1955
+ this.state = 478;
1954
1956
  this.postfixTargetOp();
1955
1957
  }
1956
1958
  }
1957
- this.state = 481;
1959
+ this.state = 483;
1958
1960
  this.errorHandler.sync(this);
1959
1961
  _la = this.tokenStream.LA(1);
1960
1962
  }
@@ -1981,41 +1983,41 @@ export class CNextParser extends antlr.Parser {
1981
1983
  let localContext = new PostfixTargetOpContext(this.context, this.state);
1982
1984
  this.enterRule(localContext, 72, CNextParser.RULE_postfixTargetOp);
1983
1985
  try {
1984
- this.state = 496;
1986
+ this.state = 498;
1985
1987
  this.errorHandler.sync(this);
1986
1988
  switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context) ) {
1987
1989
  case 1:
1988
1990
  this.enterOuterAlt(localContext, 1);
1989
1991
  {
1990
- this.state = 484;
1992
+ this.state = 486;
1991
1993
  this.match(CNextParser.DOT);
1992
- this.state = 485;
1994
+ this.state = 487;
1993
1995
  this.match(CNextParser.IDENTIFIER);
1994
1996
  }
1995
1997
  break;
1996
1998
  case 2:
1997
1999
  this.enterOuterAlt(localContext, 2);
1998
2000
  {
1999
- this.state = 486;
2001
+ this.state = 488;
2000
2002
  this.match(CNextParser.LBRACKET);
2001
- this.state = 487;
2003
+ this.state = 489;
2002
2004
  this.expression();
2003
- this.state = 488;
2005
+ this.state = 490;
2004
2006
  this.match(CNextParser.RBRACKET);
2005
2007
  }
2006
2008
  break;
2007
2009
  case 3:
2008
2010
  this.enterOuterAlt(localContext, 3);
2009
2011
  {
2010
- this.state = 490;
2011
- this.match(CNextParser.LBRACKET);
2012
- this.state = 491;
2013
- this.expression();
2014
2012
  this.state = 492;
2015
- this.match(CNextParser.COMMA);
2013
+ this.match(CNextParser.LBRACKET);
2016
2014
  this.state = 493;
2017
2015
  this.expression();
2018
2016
  this.state = 494;
2017
+ this.match(CNextParser.COMMA);
2018
+ this.state = 495;
2019
+ this.expression();
2020
+ this.state = 496;
2019
2021
  this.match(CNextParser.RBRACKET);
2020
2022
  }
2021
2023
  break;
@@ -2040,9 +2042,9 @@ export class CNextParser extends antlr.Parser {
2040
2042
  try {
2041
2043
  this.enterOuterAlt(localContext, 1);
2042
2044
  {
2043
- this.state = 498;
2045
+ this.state = 500;
2044
2046
  this.expression();
2045
- this.state = 499;
2047
+ this.state = 501;
2046
2048
  this.match(CNextParser.SEMI);
2047
2049
  }
2048
2050
  }
@@ -2065,24 +2067,24 @@ export class CNextParser extends antlr.Parser {
2065
2067
  try {
2066
2068
  this.enterOuterAlt(localContext, 1);
2067
2069
  {
2068
- this.state = 501;
2070
+ this.state = 503;
2069
2071
  this.match(CNextParser.IF);
2070
- this.state = 502;
2072
+ this.state = 504;
2071
2073
  this.match(CNextParser.LPAREN);
2072
- this.state = 503;
2074
+ this.state = 505;
2073
2075
  this.expression();
2074
- this.state = 504;
2076
+ this.state = 506;
2075
2077
  this.match(CNextParser.RPAREN);
2076
- this.state = 505;
2078
+ this.state = 507;
2077
2079
  this.statement();
2078
- this.state = 508;
2080
+ this.state = 510;
2079
2081
  this.errorHandler.sync(this);
2080
2082
  switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) {
2081
2083
  case 1:
2082
2084
  {
2083
- this.state = 506;
2085
+ this.state = 508;
2084
2086
  this.match(CNextParser.ELSE);
2085
- this.state = 507;
2087
+ this.state = 509;
2086
2088
  this.statement();
2087
2089
  }
2088
2090
  break;
@@ -2108,15 +2110,15 @@ export class CNextParser extends antlr.Parser {
2108
2110
  try {
2109
2111
  this.enterOuterAlt(localContext, 1);
2110
2112
  {
2111
- this.state = 510;
2113
+ this.state = 512;
2112
2114
  this.match(CNextParser.WHILE);
2113
- this.state = 511;
2115
+ this.state = 513;
2114
2116
  this.match(CNextParser.LPAREN);
2115
- this.state = 512;
2117
+ this.state = 514;
2116
2118
  this.expression();
2117
- this.state = 513;
2119
+ this.state = 515;
2118
2120
  this.match(CNextParser.RPAREN);
2119
- this.state = 514;
2121
+ this.state = 516;
2120
2122
  this.statement();
2121
2123
  }
2122
2124
  }
@@ -2139,19 +2141,19 @@ export class CNextParser extends antlr.Parser {
2139
2141
  try {
2140
2142
  this.enterOuterAlt(localContext, 1);
2141
2143
  {
2142
- this.state = 516;
2144
+ this.state = 518;
2143
2145
  this.match(CNextParser.DO);
2144
- this.state = 517;
2146
+ this.state = 519;
2145
2147
  this.block();
2146
- this.state = 518;
2148
+ this.state = 520;
2147
2149
  this.match(CNextParser.WHILE);
2148
- this.state = 519;
2150
+ this.state = 521;
2149
2151
  this.match(CNextParser.LPAREN);
2150
- this.state = 520;
2152
+ this.state = 522;
2151
2153
  this.expression();
2152
- this.state = 521;
2154
+ this.state = 523;
2153
2155
  this.match(CNextParser.RPAREN);
2154
- this.state = 522;
2156
+ this.state = 524;
2155
2157
  this.match(CNextParser.SEMI);
2156
2158
  }
2157
2159
  }
@@ -2175,47 +2177,47 @@ export class CNextParser extends antlr.Parser {
2175
2177
  try {
2176
2178
  this.enterOuterAlt(localContext, 1);
2177
2179
  {
2178
- this.state = 524;
2180
+ this.state = 526;
2179
2181
  this.match(CNextParser.FOR);
2180
- this.state = 525;
2181
- this.match(CNextParser.LPAREN);
2182
2182
  this.state = 527;
2183
+ this.match(CNextParser.LPAREN);
2184
+ this.state = 529;
2183
2185
  this.errorHandler.sync(this);
2184
2186
  _la = this.tokenStream.LA(1);
2185
2187
  if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3194880) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 2146973697) !== 0) || _la === 113) {
2186
2188
  {
2187
- this.state = 526;
2189
+ this.state = 528;
2188
2190
  this.forInit();
2189
2191
  }
2190
2192
  }
2191
2193
 
2192
- this.state = 529;
2193
- this.match(CNextParser.SEMI);
2194
2194
  this.state = 531;
2195
+ this.match(CNextParser.SEMI);
2196
+ this.state = 533;
2195
2197
  this.errorHandler.sync(this);
2196
2198
  _la = this.tokenStream.LA(1);
2197
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)) {
2198
2200
  {
2199
- this.state = 530;
2201
+ this.state = 532;
2200
2202
  this.expression();
2201
2203
  }
2202
2204
  }
2203
2205
 
2204
- this.state = 533;
2205
- this.match(CNextParser.SEMI);
2206
2206
  this.state = 535;
2207
+ this.match(CNextParser.SEMI);
2208
+ this.state = 537;
2207
2209
  this.errorHandler.sync(this);
2208
2210
  _la = this.tokenStream.LA(1);
2209
2211
  if (_la === 14 || _la === 15 || _la === 113) {
2210
2212
  {
2211
- this.state = 534;
2213
+ this.state = 536;
2212
2214
  this.forUpdate();
2213
2215
  }
2214
2216
  }
2215
2217
 
2216
- this.state = 537;
2218
+ this.state = 539;
2217
2219
  this.match(CNextParser.RPAREN);
2218
- this.state = 538;
2220
+ this.state = 540;
2219
2221
  this.statement();
2220
2222
  }
2221
2223
  }
@@ -2236,20 +2238,20 @@ export class CNextParser extends antlr.Parser {
2236
2238
  let localContext = new ForInitContext(this.context, this.state);
2237
2239
  this.enterRule(localContext, 84, CNextParser.RULE_forInit);
2238
2240
  try {
2239
- this.state = 542;
2241
+ this.state = 544;
2240
2242
  this.errorHandler.sync(this);
2241
2243
  switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) {
2242
2244
  case 1:
2243
2245
  this.enterOuterAlt(localContext, 1);
2244
2246
  {
2245
- this.state = 540;
2247
+ this.state = 542;
2246
2248
  this.forVarDecl();
2247
2249
  }
2248
2250
  break;
2249
2251
  case 2:
2250
2252
  this.enterOuterAlt(localContext, 2);
2251
2253
  {
2252
- this.state = 541;
2254
+ this.state = 543;
2253
2255
  this.forAssignment();
2254
2256
  }
2255
2257
  break;
@@ -2275,62 +2277,62 @@ export class CNextParser extends antlr.Parser {
2275
2277
  try {
2276
2278
  this.enterOuterAlt(localContext, 1);
2277
2279
  {
2278
- this.state = 545;
2280
+ this.state = 547;
2279
2281
  this.errorHandler.sync(this);
2280
2282
  _la = this.tokenStream.LA(1);
2281
2283
  if (_la === 47) {
2282
2284
  {
2283
- this.state = 544;
2285
+ this.state = 546;
2284
2286
  this.atomicModifier();
2285
2287
  }
2286
2288
  }
2287
2289
 
2288
- this.state = 548;
2290
+ this.state = 550;
2289
2291
  this.errorHandler.sync(this);
2290
2292
  _la = this.tokenStream.LA(1);
2291
2293
  if (_la === 20) {
2292
2294
  {
2293
- this.state = 547;
2295
+ this.state = 549;
2294
2296
  this.volatileModifier();
2295
2297
  }
2296
2298
  }
2297
2299
 
2298
- this.state = 551;
2300
+ this.state = 553;
2299
2301
  this.errorHandler.sync(this);
2300
2302
  _la = this.tokenStream.LA(1);
2301
2303
  if (_la === 45 || _la === 46) {
2302
2304
  {
2303
- this.state = 550;
2305
+ this.state = 552;
2304
2306
  this.overflowModifier();
2305
2307
  }
2306
2308
  }
2307
2309
 
2308
- this.state = 553;
2310
+ this.state = 555;
2309
2311
  this.type_();
2310
- this.state = 554;
2312
+ this.state = 556;
2311
2313
  this.match(CNextParser.IDENTIFIER);
2312
- this.state = 558;
2314
+ this.state = 560;
2313
2315
  this.errorHandler.sync(this);
2314
2316
  _la = this.tokenStream.LA(1);
2315
2317
  while (_la === 100) {
2316
2318
  {
2317
2319
  {
2318
- this.state = 555;
2320
+ this.state = 557;
2319
2321
  this.arrayDimension();
2320
2322
  }
2321
2323
  }
2322
- this.state = 560;
2324
+ this.state = 562;
2323
2325
  this.errorHandler.sync(this);
2324
2326
  _la = this.tokenStream.LA(1);
2325
2327
  }
2326
- this.state = 563;
2328
+ this.state = 565;
2327
2329
  this.errorHandler.sync(this);
2328
2330
  _la = this.tokenStream.LA(1);
2329
2331
  if (_la === 75) {
2330
2332
  {
2331
- this.state = 561;
2333
+ this.state = 563;
2332
2334
  this.match(CNextParser.ASSIGN);
2333
- this.state = 562;
2335
+ this.state = 564;
2334
2336
  this.expression();
2335
2337
  }
2336
2338
  }
@@ -2356,11 +2358,11 @@ export class CNextParser extends antlr.Parser {
2356
2358
  try {
2357
2359
  this.enterOuterAlt(localContext, 1);
2358
2360
  {
2359
- this.state = 565;
2361
+ this.state = 567;
2360
2362
  this.assignmentTarget();
2361
- this.state = 566;
2363
+ this.state = 568;
2362
2364
  this.assignmentOperator();
2363
- this.state = 567;
2365
+ this.state = 569;
2364
2366
  this.expression();
2365
2367
  }
2366
2368
  }
@@ -2383,11 +2385,11 @@ export class CNextParser extends antlr.Parser {
2383
2385
  try {
2384
2386
  this.enterOuterAlt(localContext, 1);
2385
2387
  {
2386
- this.state = 569;
2388
+ this.state = 571;
2387
2389
  this.assignmentTarget();
2388
- this.state = 570;
2390
+ this.state = 572;
2389
2391
  this.assignmentOperator();
2390
- this.state = 571;
2392
+ this.state = 573;
2391
2393
  this.expression();
2392
2394
  }
2393
2395
  }
@@ -2411,19 +2413,19 @@ export class CNextParser extends antlr.Parser {
2411
2413
  try {
2412
2414
  this.enterOuterAlt(localContext, 1);
2413
2415
  {
2414
- this.state = 573;
2415
- this.match(CNextParser.RETURN);
2416
2416
  this.state = 575;
2417
+ this.match(CNextParser.RETURN);
2418
+ this.state = 577;
2417
2419
  this.errorHandler.sync(this);
2418
2420
  _la = this.tokenStream.LA(1);
2419
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)) {
2420
2422
  {
2421
- this.state = 574;
2423
+ this.state = 576;
2422
2424
  this.expression();
2423
2425
  }
2424
2426
  }
2425
2427
 
2426
- this.state = 577;
2428
+ this.state = 579;
2427
2429
  this.match(CNextParser.SEMI);
2428
2430
  }
2429
2431
  }
@@ -2447,41 +2449,41 @@ export class CNextParser extends antlr.Parser {
2447
2449
  try {
2448
2450
  this.enterOuterAlt(localContext, 1);
2449
2451
  {
2450
- this.state = 579;
2452
+ this.state = 581;
2451
2453
  this.match(CNextParser.SWITCH);
2452
- this.state = 580;
2454
+ this.state = 582;
2453
2455
  this.match(CNextParser.LPAREN);
2454
- this.state = 581;
2456
+ this.state = 583;
2455
2457
  this.expression();
2456
- this.state = 582;
2458
+ this.state = 584;
2457
2459
  this.match(CNextParser.RPAREN);
2458
- this.state = 583;
2459
- this.match(CNextParser.LBRACE);
2460
2460
  this.state = 585;
2461
+ this.match(CNextParser.LBRACE);
2462
+ this.state = 587;
2461
2463
  this.errorHandler.sync(this);
2462
2464
  _la = this.tokenStream.LA(1);
2463
2465
  do {
2464
2466
  {
2465
2467
  {
2466
- this.state = 584;
2468
+ this.state = 586;
2467
2469
  this.switchCase();
2468
2470
  }
2469
2471
  }
2470
- this.state = 587;
2472
+ this.state = 589;
2471
2473
  this.errorHandler.sync(this);
2472
2474
  _la = this.tokenStream.LA(1);
2473
2475
  } while (_la === 28);
2474
- this.state = 590;
2476
+ this.state = 592;
2475
2477
  this.errorHandler.sync(this);
2476
2478
  _la = this.tokenStream.LA(1);
2477
2479
  if (_la === 29) {
2478
2480
  {
2479
- this.state = 589;
2481
+ this.state = 591;
2480
2482
  this.defaultCase();
2481
2483
  }
2482
2484
  }
2483
2485
 
2484
- this.state = 592;
2486
+ this.state = 594;
2485
2487
  this.match(CNextParser.RBRACE);
2486
2488
  }
2487
2489
  }
@@ -2505,27 +2507,27 @@ export class CNextParser extends antlr.Parser {
2505
2507
  try {
2506
2508
  this.enterOuterAlt(localContext, 1);
2507
2509
  {
2508
- this.state = 594;
2510
+ this.state = 596;
2509
2511
  this.match(CNextParser.CASE);
2510
- this.state = 595;
2512
+ this.state = 597;
2511
2513
  this.caseLabel();
2512
- this.state = 600;
2514
+ this.state = 602;
2513
2515
  this.errorHandler.sync(this);
2514
2516
  _la = this.tokenStream.LA(1);
2515
2517
  while (_la === 88) {
2516
2518
  {
2517
2519
  {
2518
- this.state = 596;
2520
+ this.state = 598;
2519
2521
  this.match(CNextParser.OR);
2520
- this.state = 597;
2522
+ this.state = 599;
2521
2523
  this.caseLabel();
2522
2524
  }
2523
2525
  }
2524
- this.state = 602;
2526
+ this.state = 604;
2525
2527
  this.errorHandler.sync(this);
2526
2528
  _la = this.tokenStream.LA(1);
2527
2529
  }
2528
- this.state = 603;
2530
+ this.state = 605;
2529
2531
  this.block();
2530
2532
  }
2531
2533
  }
@@ -2547,68 +2549,68 @@ export class CNextParser extends antlr.Parser {
2547
2549
  this.enterRule(localContext, 98, CNextParser.RULE_caseLabel);
2548
2550
  let _la: number;
2549
2551
  try {
2550
- this.state = 617;
2552
+ this.state = 619;
2551
2553
  this.errorHandler.sync(this);
2552
2554
  switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) {
2553
2555
  case 1:
2554
2556
  this.enterOuterAlt(localContext, 1);
2555
2557
  {
2556
- this.state = 605;
2558
+ this.state = 607;
2557
2559
  this.qualifiedType();
2558
2560
  }
2559
2561
  break;
2560
2562
  case 2:
2561
2563
  this.enterOuterAlt(localContext, 2);
2562
2564
  {
2563
- this.state = 606;
2565
+ this.state = 608;
2564
2566
  this.match(CNextParser.IDENTIFIER);
2565
2567
  }
2566
2568
  break;
2567
2569
  case 3:
2568
2570
  this.enterOuterAlt(localContext, 3);
2569
2571
  {
2570
- this.state = 608;
2572
+ this.state = 610;
2571
2573
  this.errorHandler.sync(this);
2572
2574
  _la = this.tokenStream.LA(1);
2573
2575
  if (_la === 83) {
2574
2576
  {
2575
- this.state = 607;
2577
+ this.state = 609;
2576
2578
  this.match(CNextParser.MINUS);
2577
2579
  }
2578
2580
  }
2579
2581
 
2580
- this.state = 610;
2582
+ this.state = 612;
2581
2583
  this.match(CNextParser.INTEGER_LITERAL);
2582
2584
  }
2583
2585
  break;
2584
2586
  case 4:
2585
2587
  this.enterOuterAlt(localContext, 4);
2586
2588
  {
2587
- this.state = 612;
2589
+ this.state = 614;
2588
2590
  this.errorHandler.sync(this);
2589
2591
  _la = this.tokenStream.LA(1);
2590
2592
  if (_la === 83) {
2591
2593
  {
2592
- this.state = 611;
2594
+ this.state = 613;
2593
2595
  this.match(CNextParser.MINUS);
2594
2596
  }
2595
2597
  }
2596
2598
 
2597
- this.state = 614;
2599
+ this.state = 616;
2598
2600
  this.match(CNextParser.HEX_LITERAL);
2599
2601
  }
2600
2602
  break;
2601
2603
  case 5:
2602
2604
  this.enterOuterAlt(localContext, 5);
2603
2605
  {
2604
- this.state = 615;
2606
+ this.state = 617;
2605
2607
  this.match(CNextParser.BINARY_LITERAL);
2606
2608
  }
2607
2609
  break;
2608
2610
  case 6:
2609
2611
  this.enterOuterAlt(localContext, 6);
2610
2612
  {
2611
- this.state = 616;
2613
+ this.state = 618;
2612
2614
  this.match(CNextParser.CHAR_LITERAL);
2613
2615
  }
2614
2616
  break;
@@ -2634,23 +2636,23 @@ export class CNextParser extends antlr.Parser {
2634
2636
  try {
2635
2637
  this.enterOuterAlt(localContext, 1);
2636
2638
  {
2637
- this.state = 619;
2639
+ this.state = 621;
2638
2640
  this.match(CNextParser.DEFAULT);
2639
- this.state = 623;
2641
+ this.state = 625;
2640
2642
  this.errorHandler.sync(this);
2641
2643
  _la = this.tokenStream.LA(1);
2642
2644
  if (_la === 96) {
2643
2645
  {
2644
- this.state = 620;
2646
+ this.state = 622;
2645
2647
  this.match(CNextParser.LPAREN);
2646
- this.state = 621;
2648
+ this.state = 623;
2647
2649
  this.match(CNextParser.INTEGER_LITERAL);
2648
- this.state = 622;
2650
+ this.state = 624;
2649
2651
  this.match(CNextParser.RPAREN);
2650
2652
  }
2651
2653
  }
2652
2654
 
2653
- this.state = 625;
2655
+ this.state = 627;
2654
2656
  this.block();
2655
2657
  }
2656
2658
  }
@@ -2673,7 +2675,7 @@ export class CNextParser extends antlr.Parser {
2673
2675
  try {
2674
2676
  this.enterOuterAlt(localContext, 1);
2675
2677
  {
2676
- this.state = 627;
2678
+ this.state = 629;
2677
2679
  this.ternaryExpression();
2678
2680
  }
2679
2681
  }
@@ -2694,32 +2696,32 @@ export class CNextParser extends antlr.Parser {
2694
2696
  let localContext = new TernaryExpressionContext(this.context, this.state);
2695
2697
  this.enterRule(localContext, 104, CNextParser.RULE_ternaryExpression);
2696
2698
  try {
2697
- this.state = 638;
2699
+ this.state = 640;
2698
2700
  this.errorHandler.sync(this);
2699
2701
  switch (this.interpreter.adaptivePredict(this.tokenStream, 61, this.context) ) {
2700
2702
  case 1:
2701
2703
  this.enterOuterAlt(localContext, 1);
2702
2704
  {
2703
- this.state = 629;
2705
+ this.state = 631;
2704
2706
  this.match(CNextParser.LPAREN);
2705
- this.state = 630;
2707
+ this.state = 632;
2706
2708
  this.orExpression();
2707
- this.state = 631;
2709
+ this.state = 633;
2708
2710
  this.match(CNextParser.RPAREN);
2709
- this.state = 632;
2711
+ this.state = 634;
2710
2712
  this.match(CNextParser.T__0);
2711
- this.state = 633;
2713
+ this.state = 635;
2712
2714
  this.orExpression();
2713
- this.state = 634;
2715
+ this.state = 636;
2714
2716
  this.match(CNextParser.COLON);
2715
- this.state = 635;
2717
+ this.state = 637;
2716
2718
  this.orExpression();
2717
2719
  }
2718
2720
  break;
2719
2721
  case 2:
2720
2722
  this.enterOuterAlt(localContext, 2);
2721
2723
  {
2722
- this.state = 637;
2724
+ this.state = 639;
2723
2725
  this.orExpression();
2724
2726
  }
2725
2727
  break;
@@ -2745,21 +2747,21 @@ export class CNextParser extends antlr.Parser {
2745
2747
  try {
2746
2748
  this.enterOuterAlt(localContext, 1);
2747
2749
  {
2748
- this.state = 640;
2750
+ this.state = 642;
2749
2751
  this.andExpression();
2750
- this.state = 645;
2752
+ this.state = 647;
2751
2753
  this.errorHandler.sync(this);
2752
2754
  _la = this.tokenStream.LA(1);
2753
2755
  while (_la === 88) {
2754
2756
  {
2755
2757
  {
2756
- this.state = 641;
2758
+ this.state = 643;
2757
2759
  this.match(CNextParser.OR);
2758
- this.state = 642;
2760
+ this.state = 644;
2759
2761
  this.andExpression();
2760
2762
  }
2761
2763
  }
2762
- this.state = 647;
2764
+ this.state = 649;
2763
2765
  this.errorHandler.sync(this);
2764
2766
  _la = this.tokenStream.LA(1);
2765
2767
  }
@@ -2785,21 +2787,21 @@ export class CNextParser extends antlr.Parser {
2785
2787
  try {
2786
2788
  this.enterOuterAlt(localContext, 1);
2787
2789
  {
2788
- this.state = 648;
2790
+ this.state = 650;
2789
2791
  this.equalityExpression();
2790
- this.state = 653;
2792
+ this.state = 655;
2791
2793
  this.errorHandler.sync(this);
2792
2794
  _la = this.tokenStream.LA(1);
2793
2795
  while (_la === 87) {
2794
2796
  {
2795
2797
  {
2796
- this.state = 649;
2798
+ this.state = 651;
2797
2799
  this.match(CNextParser.AND);
2798
- this.state = 650;
2800
+ this.state = 652;
2799
2801
  this.equalityExpression();
2800
2802
  }
2801
2803
  }
2802
- this.state = 655;
2804
+ this.state = 657;
2803
2805
  this.errorHandler.sync(this);
2804
2806
  _la = this.tokenStream.LA(1);
2805
2807
  }
@@ -2825,15 +2827,15 @@ export class CNextParser extends antlr.Parser {
2825
2827
  try {
2826
2828
  this.enterOuterAlt(localContext, 1);
2827
2829
  {
2828
- this.state = 656;
2830
+ this.state = 658;
2829
2831
  this.relationalExpression();
2830
- this.state = 661;
2832
+ this.state = 663;
2831
2833
  this.errorHandler.sync(this);
2832
2834
  _la = this.tokenStream.LA(1);
2833
2835
  while (_la === 76 || _la === 77) {
2834
2836
  {
2835
2837
  {
2836
- this.state = 657;
2838
+ this.state = 659;
2837
2839
  _la = this.tokenStream.LA(1);
2838
2840
  if(!(_la === 76 || _la === 77)) {
2839
2841
  this.errorHandler.recoverInline(this);
@@ -2842,11 +2844,11 @@ export class CNextParser extends antlr.Parser {
2842
2844
  this.errorHandler.reportMatch(this);
2843
2845
  this.consume();
2844
2846
  }
2845
- this.state = 658;
2847
+ this.state = 660;
2846
2848
  this.relationalExpression();
2847
2849
  }
2848
2850
  }
2849
- this.state = 663;
2851
+ this.state = 665;
2850
2852
  this.errorHandler.sync(this);
2851
2853
  _la = this.tokenStream.LA(1);
2852
2854
  }
@@ -2872,15 +2874,15 @@ export class CNextParser extends antlr.Parser {
2872
2874
  try {
2873
2875
  this.enterOuterAlt(localContext, 1);
2874
2876
  {
2875
- this.state = 664;
2877
+ this.state = 666;
2876
2878
  this.bitwiseOrExpression();
2877
- this.state = 669;
2879
+ this.state = 671;
2878
2880
  this.errorHandler.sync(this);
2879
2881
  _la = this.tokenStream.LA(1);
2880
2882
  while (((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 15) !== 0)) {
2881
2883
  {
2882
2884
  {
2883
- this.state = 665;
2885
+ this.state = 667;
2884
2886
  _la = this.tokenStream.LA(1);
2885
2887
  if(!(((((_la - 78)) & ~0x1F) === 0 && ((1 << (_la - 78)) & 15) !== 0))) {
2886
2888
  this.errorHandler.recoverInline(this);
@@ -2889,11 +2891,11 @@ export class CNextParser extends antlr.Parser {
2889
2891
  this.errorHandler.reportMatch(this);
2890
2892
  this.consume();
2891
2893
  }
2892
- this.state = 666;
2894
+ this.state = 668;
2893
2895
  this.bitwiseOrExpression();
2894
2896
  }
2895
2897
  }
2896
- this.state = 671;
2898
+ this.state = 673;
2897
2899
  this.errorHandler.sync(this);
2898
2900
  _la = this.tokenStream.LA(1);
2899
2901
  }
@@ -2919,21 +2921,21 @@ export class CNextParser extends antlr.Parser {
2919
2921
  try {
2920
2922
  this.enterOuterAlt(localContext, 1);
2921
2923
  {
2922
- this.state = 672;
2924
+ this.state = 674;
2923
2925
  this.bitwiseXorExpression();
2924
- this.state = 677;
2926
+ this.state = 679;
2925
2927
  this.errorHandler.sync(this);
2926
2928
  _la = this.tokenStream.LA(1);
2927
2929
  while (_la === 91) {
2928
2930
  {
2929
2931
  {
2930
- this.state = 673;
2932
+ this.state = 675;
2931
2933
  this.match(CNextParser.BITOR);
2932
- this.state = 674;
2934
+ this.state = 676;
2933
2935
  this.bitwiseXorExpression();
2934
2936
  }
2935
2937
  }
2936
- this.state = 679;
2938
+ this.state = 681;
2937
2939
  this.errorHandler.sync(this);
2938
2940
  _la = this.tokenStream.LA(1);
2939
2941
  }
@@ -2959,21 +2961,21 @@ export class CNextParser extends antlr.Parser {
2959
2961
  try {
2960
2962
  this.enterOuterAlt(localContext, 1);
2961
2963
  {
2962
- this.state = 680;
2964
+ this.state = 682;
2963
2965
  this.bitwiseAndExpression();
2964
- this.state = 685;
2966
+ this.state = 687;
2965
2967
  this.errorHandler.sync(this);
2966
2968
  _la = this.tokenStream.LA(1);
2967
2969
  while (_la === 92) {
2968
2970
  {
2969
2971
  {
2970
- this.state = 681;
2972
+ this.state = 683;
2971
2973
  this.match(CNextParser.BITXOR);
2972
- this.state = 682;
2974
+ this.state = 684;
2973
2975
  this.bitwiseAndExpression();
2974
2976
  }
2975
2977
  }
2976
- this.state = 687;
2978
+ this.state = 689;
2977
2979
  this.errorHandler.sync(this);
2978
2980
  _la = this.tokenStream.LA(1);
2979
2981
  }
@@ -2999,21 +3001,21 @@ export class CNextParser extends antlr.Parser {
2999
3001
  try {
3000
3002
  this.enterOuterAlt(localContext, 1);
3001
3003
  {
3002
- this.state = 688;
3004
+ this.state = 690;
3003
3005
  this.shiftExpression();
3004
- this.state = 693;
3006
+ this.state = 695;
3005
3007
  this.errorHandler.sync(this);
3006
3008
  _la = this.tokenStream.LA(1);
3007
3009
  while (_la === 90) {
3008
3010
  {
3009
3011
  {
3010
- this.state = 689;
3012
+ this.state = 691;
3011
3013
  this.match(CNextParser.BITAND);
3012
- this.state = 690;
3014
+ this.state = 692;
3013
3015
  this.shiftExpression();
3014
3016
  }
3015
3017
  }
3016
- this.state = 695;
3018
+ this.state = 697;
3017
3019
  this.errorHandler.sync(this);
3018
3020
  _la = this.tokenStream.LA(1);
3019
3021
  }
@@ -3039,15 +3041,15 @@ export class CNextParser extends antlr.Parser {
3039
3041
  try {
3040
3042
  this.enterOuterAlt(localContext, 1);
3041
3043
  {
3042
- this.state = 696;
3044
+ this.state = 698;
3043
3045
  this.additiveExpression();
3044
- this.state = 701;
3046
+ this.state = 703;
3045
3047
  this.errorHandler.sync(this);
3046
3048
  _la = this.tokenStream.LA(1);
3047
3049
  while (_la === 94 || _la === 95) {
3048
3050
  {
3049
3051
  {
3050
- this.state = 697;
3052
+ this.state = 699;
3051
3053
  _la = this.tokenStream.LA(1);
3052
3054
  if(!(_la === 94 || _la === 95)) {
3053
3055
  this.errorHandler.recoverInline(this);
@@ -3056,11 +3058,11 @@ export class CNextParser extends antlr.Parser {
3056
3058
  this.errorHandler.reportMatch(this);
3057
3059
  this.consume();
3058
3060
  }
3059
- this.state = 698;
3061
+ this.state = 700;
3060
3062
  this.additiveExpression();
3061
3063
  }
3062
3064
  }
3063
- this.state = 703;
3065
+ this.state = 705;
3064
3066
  this.errorHandler.sync(this);
3065
3067
  _la = this.tokenStream.LA(1);
3066
3068
  }
@@ -3086,15 +3088,15 @@ export class CNextParser extends antlr.Parser {
3086
3088
  try {
3087
3089
  this.enterOuterAlt(localContext, 1);
3088
3090
  {
3089
- this.state = 704;
3091
+ this.state = 706;
3090
3092
  this.multiplicativeExpression();
3091
- this.state = 709;
3093
+ this.state = 711;
3092
3094
  this.errorHandler.sync(this);
3093
3095
  _la = this.tokenStream.LA(1);
3094
3096
  while (_la === 82 || _la === 83) {
3095
3097
  {
3096
3098
  {
3097
- this.state = 705;
3099
+ this.state = 707;
3098
3100
  _la = this.tokenStream.LA(1);
3099
3101
  if(!(_la === 82 || _la === 83)) {
3100
3102
  this.errorHandler.recoverInline(this);
@@ -3103,11 +3105,11 @@ export class CNextParser extends antlr.Parser {
3103
3105
  this.errorHandler.reportMatch(this);
3104
3106
  this.consume();
3105
3107
  }
3106
- this.state = 706;
3108
+ this.state = 708;
3107
3109
  this.multiplicativeExpression();
3108
3110
  }
3109
3111
  }
3110
- this.state = 711;
3112
+ this.state = 713;
3111
3113
  this.errorHandler.sync(this);
3112
3114
  _la = this.tokenStream.LA(1);
3113
3115
  }
@@ -3134,16 +3136,16 @@ export class CNextParser extends antlr.Parser {
3134
3136
  let alternative: number;
3135
3137
  this.enterOuterAlt(localContext, 1);
3136
3138
  {
3137
- this.state = 712;
3139
+ this.state = 714;
3138
3140
  this.unaryExpression();
3139
- this.state = 717;
3141
+ this.state = 719;
3140
3142
  this.errorHandler.sync(this);
3141
3143
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3142
3144
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3143
3145
  if (alternative === 1) {
3144
3146
  {
3145
3147
  {
3146
- this.state = 713;
3148
+ this.state = 715;
3147
3149
  _la = this.tokenStream.LA(1);
3148
3150
  if(!(((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 7) !== 0))) {
3149
3151
  this.errorHandler.recoverInline(this);
@@ -3152,12 +3154,12 @@ export class CNextParser extends antlr.Parser {
3152
3154
  this.errorHandler.reportMatch(this);
3153
3155
  this.consume();
3154
3156
  }
3155
- this.state = 714;
3157
+ this.state = 716;
3156
3158
  this.unaryExpression();
3157
3159
  }
3158
3160
  }
3159
3161
  }
3160
- this.state = 719;
3162
+ this.state = 721;
3161
3163
  this.errorHandler.sync(this);
3162
3164
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3163
3165
  }
@@ -3180,42 +3182,42 @@ export class CNextParser extends antlr.Parser {
3180
3182
  let localContext = new UnaryExpressionContext(this.context, this.state);
3181
3183
  this.enterRule(localContext, 126, CNextParser.RULE_unaryExpression);
3182
3184
  try {
3183
- this.state = 729;
3185
+ this.state = 731;
3184
3186
  this.errorHandler.sync(this);
3185
3187
  switch (this.tokenStream.LA(1)) {
3186
3188
  case CNextParser.NOT:
3187
3189
  this.enterOuterAlt(localContext, 1);
3188
3190
  {
3189
- this.state = 720;
3191
+ this.state = 722;
3190
3192
  this.match(CNextParser.NOT);
3191
- this.state = 721;
3193
+ this.state = 723;
3192
3194
  this.unaryExpression();
3193
3195
  }
3194
3196
  break;
3195
3197
  case CNextParser.MINUS:
3196
3198
  this.enterOuterAlt(localContext, 2);
3197
3199
  {
3198
- this.state = 722;
3200
+ this.state = 724;
3199
3201
  this.match(CNextParser.MINUS);
3200
- this.state = 723;
3202
+ this.state = 725;
3201
3203
  this.unaryExpression();
3202
3204
  }
3203
3205
  break;
3204
3206
  case CNextParser.BITNOT:
3205
3207
  this.enterOuterAlt(localContext, 3);
3206
3208
  {
3207
- this.state = 724;
3209
+ this.state = 726;
3208
3210
  this.match(CNextParser.BITNOT);
3209
- this.state = 725;
3211
+ this.state = 727;
3210
3212
  this.unaryExpression();
3211
3213
  }
3212
3214
  break;
3213
3215
  case CNextParser.BITAND:
3214
3216
  this.enterOuterAlt(localContext, 4);
3215
3217
  {
3216
- this.state = 726;
3218
+ this.state = 728;
3217
3219
  this.match(CNextParser.BITAND);
3218
- this.state = 727;
3220
+ this.state = 729;
3219
3221
  this.unaryExpression();
3220
3222
  }
3221
3223
  break;
@@ -3241,7 +3243,7 @@ export class CNextParser extends antlr.Parser {
3241
3243
  case CNextParser.IDENTIFIER:
3242
3244
  this.enterOuterAlt(localContext, 5);
3243
3245
  {
3244
- this.state = 728;
3246
+ this.state = 730;
3245
3247
  this.postfixExpression();
3246
3248
  }
3247
3249
  break;
@@ -3269,21 +3271,21 @@ export class CNextParser extends antlr.Parser {
3269
3271
  let alternative: number;
3270
3272
  this.enterOuterAlt(localContext, 1);
3271
3273
  {
3272
- this.state = 731;
3274
+ this.state = 733;
3273
3275
  this.primaryExpression();
3274
- this.state = 735;
3276
+ this.state = 737;
3275
3277
  this.errorHandler.sync(this);
3276
3278
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 73, this.context);
3277
3279
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3278
3280
  if (alternative === 1) {
3279
3281
  {
3280
3282
  {
3281
- this.state = 732;
3283
+ this.state = 734;
3282
3284
  this.postfixOp();
3283
3285
  }
3284
3286
  }
3285
3287
  }
3286
- this.state = 737;
3288
+ this.state = 739;
3287
3289
  this.errorHandler.sync(this);
3288
3290
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 73, this.context);
3289
3291
  }
@@ -3307,60 +3309,60 @@ export class CNextParser extends antlr.Parser {
3307
3309
  this.enterRule(localContext, 130, CNextParser.RULE_postfixOp);
3308
3310
  let _la: number;
3309
3311
  try {
3310
- this.state = 755;
3312
+ this.state = 757;
3311
3313
  this.errorHandler.sync(this);
3312
3314
  switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context) ) {
3313
3315
  case 1:
3314
3316
  this.enterOuterAlt(localContext, 1);
3315
3317
  {
3316
- this.state = 738;
3318
+ this.state = 740;
3317
3319
  this.match(CNextParser.DOT);
3318
- this.state = 739;
3320
+ this.state = 741;
3319
3321
  this.match(CNextParser.IDENTIFIER);
3320
3322
  }
3321
3323
  break;
3322
3324
  case 2:
3323
3325
  this.enterOuterAlt(localContext, 2);
3324
3326
  {
3325
- this.state = 740;
3327
+ this.state = 742;
3326
3328
  this.match(CNextParser.LBRACKET);
3327
- this.state = 741;
3329
+ this.state = 743;
3328
3330
  this.expression();
3329
- this.state = 742;
3331
+ this.state = 744;
3330
3332
  this.match(CNextParser.RBRACKET);
3331
3333
  }
3332
3334
  break;
3333
3335
  case 3:
3334
3336
  this.enterOuterAlt(localContext, 3);
3335
3337
  {
3336
- this.state = 744;
3337
- this.match(CNextParser.LBRACKET);
3338
- this.state = 745;
3339
- this.expression();
3340
3338
  this.state = 746;
3341
- this.match(CNextParser.COMMA);
3339
+ this.match(CNextParser.LBRACKET);
3342
3340
  this.state = 747;
3343
3341
  this.expression();
3344
3342
  this.state = 748;
3343
+ this.match(CNextParser.COMMA);
3344
+ this.state = 749;
3345
+ this.expression();
3346
+ this.state = 750;
3345
3347
  this.match(CNextParser.RBRACKET);
3346
3348
  }
3347
3349
  break;
3348
3350
  case 4:
3349
3351
  this.enterOuterAlt(localContext, 4);
3350
3352
  {
3351
- this.state = 750;
3352
- this.match(CNextParser.LPAREN);
3353
3353
  this.state = 752;
3354
+ this.match(CNextParser.LPAREN);
3355
+ this.state = 754;
3354
3356
  this.errorHandler.sync(this);
3355
3357
  _la = this.tokenStream.LA(1);
3356
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)) {
3357
3359
  {
3358
- this.state = 751;
3360
+ this.state = 753;
3359
3361
  this.argumentList();
3360
3362
  }
3361
3363
  }
3362
3364
 
3363
- this.state = 754;
3365
+ this.state = 756;
3364
3366
  this.match(CNextParser.RPAREN);
3365
3367
  }
3366
3368
  break;
@@ -3383,73 +3385,73 @@ export class CNextParser extends antlr.Parser {
3383
3385
  let localContext = new PrimaryExpressionContext(this.context, this.state);
3384
3386
  this.enterRule(localContext, 132, CNextParser.RULE_primaryExpression);
3385
3387
  try {
3386
- this.state = 769;
3388
+ this.state = 771;
3387
3389
  this.errorHandler.sync(this);
3388
3390
  switch (this.interpreter.adaptivePredict(this.tokenStream, 76, this.context) ) {
3389
3391
  case 1:
3390
3392
  this.enterOuterAlt(localContext, 1);
3391
3393
  {
3392
- this.state = 757;
3394
+ this.state = 759;
3393
3395
  this.sizeofExpression();
3394
3396
  }
3395
3397
  break;
3396
3398
  case 2:
3397
3399
  this.enterOuterAlt(localContext, 2);
3398
3400
  {
3399
- this.state = 758;
3401
+ this.state = 760;
3400
3402
  this.castExpression();
3401
3403
  }
3402
3404
  break;
3403
3405
  case 3:
3404
3406
  this.enterOuterAlt(localContext, 3);
3405
3407
  {
3406
- this.state = 759;
3408
+ this.state = 761;
3407
3409
  this.structInitializer();
3408
3410
  }
3409
3411
  break;
3410
3412
  case 4:
3411
3413
  this.enterOuterAlt(localContext, 4);
3412
3414
  {
3413
- this.state = 760;
3415
+ this.state = 762;
3414
3416
  this.arrayInitializer();
3415
3417
  }
3416
3418
  break;
3417
3419
  case 5:
3418
3420
  this.enterOuterAlt(localContext, 5);
3419
3421
  {
3420
- this.state = 761;
3422
+ this.state = 763;
3421
3423
  this.match(CNextParser.THIS);
3422
3424
  }
3423
3425
  break;
3424
3426
  case 6:
3425
3427
  this.enterOuterAlt(localContext, 6);
3426
3428
  {
3427
- this.state = 762;
3429
+ this.state = 764;
3428
3430
  this.match(CNextParser.GLOBAL);
3429
3431
  }
3430
3432
  break;
3431
3433
  case 7:
3432
3434
  this.enterOuterAlt(localContext, 7);
3433
3435
  {
3434
- this.state = 763;
3436
+ this.state = 765;
3435
3437
  this.match(CNextParser.IDENTIFIER);
3436
3438
  }
3437
3439
  break;
3438
3440
  case 8:
3439
3441
  this.enterOuterAlt(localContext, 8);
3440
3442
  {
3441
- this.state = 764;
3443
+ this.state = 766;
3442
3444
  this.literal();
3443
3445
  }
3444
3446
  break;
3445
3447
  case 9:
3446
3448
  this.enterOuterAlt(localContext, 9);
3447
3449
  {
3448
- this.state = 765;
3450
+ this.state = 767;
3449
3451
  this.match(CNextParser.LPAREN);
3450
- this.state = 766;
3452
+ this.state = 768;
3451
3453
  this.expression();
3452
- this.state = 767;
3454
+ this.state = 769;
3453
3455
  this.match(CNextParser.RPAREN);
3454
3456
  }
3455
3457
  break;
@@ -3474,27 +3476,27 @@ export class CNextParser extends antlr.Parser {
3474
3476
  try {
3475
3477
  this.enterOuterAlt(localContext, 1);
3476
3478
  {
3477
- this.state = 771;
3479
+ this.state = 773;
3478
3480
  this.match(CNextParser.SIZEOF);
3479
- this.state = 772;
3481
+ this.state = 774;
3480
3482
  this.match(CNextParser.LPAREN);
3481
- this.state = 775;
3483
+ this.state = 777;
3482
3484
  this.errorHandler.sync(this);
3483
3485
  switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context) ) {
3484
3486
  case 1:
3485
3487
  {
3486
- this.state = 773;
3488
+ this.state = 775;
3487
3489
  this.type_();
3488
3490
  }
3489
3491
  break;
3490
3492
  case 2:
3491
3493
  {
3492
- this.state = 774;
3494
+ this.state = 776;
3493
3495
  this.expression();
3494
3496
  }
3495
3497
  break;
3496
3498
  }
3497
- this.state = 777;
3499
+ this.state = 779;
3498
3500
  this.match(CNextParser.RPAREN);
3499
3501
  }
3500
3502
  }
@@ -3517,13 +3519,13 @@ export class CNextParser extends antlr.Parser {
3517
3519
  try {
3518
3520
  this.enterOuterAlt(localContext, 1);
3519
3521
  {
3520
- this.state = 779;
3522
+ this.state = 781;
3521
3523
  this.match(CNextParser.LPAREN);
3522
- this.state = 780;
3524
+ this.state = 782;
3523
3525
  this.type_();
3524
- this.state = 781;
3526
+ this.state = 783;
3525
3527
  this.match(CNextParser.RPAREN);
3526
- this.state = 782;
3528
+ this.state = 784;
3527
3529
  this.unaryExpression();
3528
3530
  }
3529
3531
  }
@@ -3545,38 +3547,38 @@ export class CNextParser extends antlr.Parser {
3545
3547
  this.enterRule(localContext, 138, CNextParser.RULE_structInitializer);
3546
3548
  let _la: number;
3547
3549
  try {
3548
- this.state = 794;
3550
+ this.state = 796;
3549
3551
  this.errorHandler.sync(this);
3550
3552
  switch (this.tokenStream.LA(1)) {
3551
3553
  case CNextParser.IDENTIFIER:
3552
3554
  this.enterOuterAlt(localContext, 1);
3553
3555
  {
3554
- this.state = 784;
3556
+ this.state = 786;
3555
3557
  this.match(CNextParser.IDENTIFIER);
3556
- this.state = 785;
3557
- this.match(CNextParser.LBRACE);
3558
3558
  this.state = 787;
3559
+ this.match(CNextParser.LBRACE);
3560
+ this.state = 789;
3559
3561
  this.errorHandler.sync(this);
3560
3562
  _la = this.tokenStream.LA(1);
3561
3563
  if (_la === 113) {
3562
3564
  {
3563
- this.state = 786;
3565
+ this.state = 788;
3564
3566
  this.fieldInitializerList();
3565
3567
  }
3566
3568
  }
3567
3569
 
3568
- this.state = 789;
3570
+ this.state = 791;
3569
3571
  this.match(CNextParser.RBRACE);
3570
3572
  }
3571
3573
  break;
3572
3574
  case CNextParser.LBRACE:
3573
3575
  this.enterOuterAlt(localContext, 2);
3574
3576
  {
3575
- this.state = 790;
3577
+ this.state = 792;
3576
3578
  this.match(CNextParser.LBRACE);
3577
- this.state = 791;
3579
+ this.state = 793;
3578
3580
  this.fieldInitializerList();
3579
- this.state = 792;
3581
+ this.state = 794;
3580
3582
  this.match(CNextParser.RBRACE);
3581
3583
  }
3582
3584
  break;
@@ -3605,32 +3607,32 @@ export class CNextParser extends antlr.Parser {
3605
3607
  let alternative: number;
3606
3608
  this.enterOuterAlt(localContext, 1);
3607
3609
  {
3608
- this.state = 796;
3610
+ this.state = 798;
3609
3611
  this.fieldInitializer();
3610
- this.state = 801;
3612
+ this.state = 803;
3611
3613
  this.errorHandler.sync(this);
3612
3614
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 80, this.context);
3613
3615
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3614
3616
  if (alternative === 1) {
3615
3617
  {
3616
3618
  {
3617
- this.state = 797;
3619
+ this.state = 799;
3618
3620
  this.match(CNextParser.COMMA);
3619
- this.state = 798;
3621
+ this.state = 800;
3620
3622
  this.fieldInitializer();
3621
3623
  }
3622
3624
  }
3623
3625
  }
3624
- this.state = 803;
3626
+ this.state = 805;
3625
3627
  this.errorHandler.sync(this);
3626
3628
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 80, this.context);
3627
3629
  }
3628
- this.state = 805;
3630
+ this.state = 807;
3629
3631
  this.errorHandler.sync(this);
3630
3632
  _la = this.tokenStream.LA(1);
3631
3633
  if (_la === 103) {
3632
3634
  {
3633
- this.state = 804;
3635
+ this.state = 806;
3634
3636
  this.match(CNextParser.COMMA);
3635
3637
  }
3636
3638
  }
@@ -3656,11 +3658,11 @@ export class CNextParser extends antlr.Parser {
3656
3658
  try {
3657
3659
  this.enterOuterAlt(localContext, 1);
3658
3660
  {
3659
- this.state = 807;
3661
+ this.state = 809;
3660
3662
  this.match(CNextParser.IDENTIFIER);
3661
- this.state = 808;
3663
+ this.state = 810;
3662
3664
  this.match(CNextParser.COLON);
3663
- this.state = 809;
3665
+ this.state = 811;
3664
3666
  this.expression();
3665
3667
  }
3666
3668
  }
@@ -3683,58 +3685,58 @@ export class CNextParser extends antlr.Parser {
3683
3685
  let _la: number;
3684
3686
  try {
3685
3687
  let alternative: number;
3686
- this.state = 830;
3688
+ this.state = 832;
3687
3689
  this.errorHandler.sync(this);
3688
3690
  switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) {
3689
3691
  case 1:
3690
3692
  this.enterOuterAlt(localContext, 1);
3691
3693
  {
3692
- this.state = 811;
3694
+ this.state = 813;
3693
3695
  this.match(CNextParser.LBRACKET);
3694
- this.state = 812;
3696
+ this.state = 814;
3695
3697
  this.arrayInitializerElement();
3696
- this.state = 817;
3698
+ this.state = 819;
3697
3699
  this.errorHandler.sync(this);
3698
3700
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3699
3701
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3700
3702
  if (alternative === 1) {
3701
3703
  {
3702
3704
  {
3703
- this.state = 813;
3705
+ this.state = 815;
3704
3706
  this.match(CNextParser.COMMA);
3705
- this.state = 814;
3707
+ this.state = 816;
3706
3708
  this.arrayInitializerElement();
3707
3709
  }
3708
3710
  }
3709
3711
  }
3710
- this.state = 819;
3712
+ this.state = 821;
3711
3713
  this.errorHandler.sync(this);
3712
3714
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3713
3715
  }
3714
- this.state = 821;
3716
+ this.state = 823;
3715
3717
  this.errorHandler.sync(this);
3716
3718
  _la = this.tokenStream.LA(1);
3717
3719
  if (_la === 103) {
3718
3720
  {
3719
- this.state = 820;
3721
+ this.state = 822;
3720
3722
  this.match(CNextParser.COMMA);
3721
3723
  }
3722
3724
  }
3723
3725
 
3724
- this.state = 823;
3726
+ this.state = 825;
3725
3727
  this.match(CNextParser.RBRACKET);
3726
3728
  }
3727
3729
  break;
3728
3730
  case 2:
3729
3731
  this.enterOuterAlt(localContext, 2);
3730
3732
  {
3731
- this.state = 825;
3733
+ this.state = 827;
3732
3734
  this.match(CNextParser.LBRACKET);
3733
- this.state = 826;
3735
+ this.state = 828;
3734
3736
  this.expression();
3735
- this.state = 827;
3737
+ this.state = 829;
3736
3738
  this.match(CNextParser.STAR);
3737
- this.state = 828;
3739
+ this.state = 830;
3738
3740
  this.match(CNextParser.RBRACKET);
3739
3741
  }
3740
3742
  break;
@@ -3757,27 +3759,27 @@ export class CNextParser extends antlr.Parser {
3757
3759
  let localContext = new ArrayInitializerElementContext(this.context, this.state);
3758
3760
  this.enterRule(localContext, 146, CNextParser.RULE_arrayInitializerElement);
3759
3761
  try {
3760
- this.state = 835;
3762
+ this.state = 837;
3761
3763
  this.errorHandler.sync(this);
3762
3764
  switch (this.interpreter.adaptivePredict(this.tokenStream, 85, this.context) ) {
3763
3765
  case 1:
3764
3766
  this.enterOuterAlt(localContext, 1);
3765
3767
  {
3766
- this.state = 832;
3768
+ this.state = 834;
3767
3769
  this.expression();
3768
3770
  }
3769
3771
  break;
3770
3772
  case 2:
3771
3773
  this.enterOuterAlt(localContext, 2);
3772
3774
  {
3773
- this.state = 833;
3775
+ this.state = 835;
3774
3776
  this.structInitializer();
3775
3777
  }
3776
3778
  break;
3777
3779
  case 3:
3778
3780
  this.enterOuterAlt(localContext, 3);
3779
3781
  {
3780
- this.state = 834;
3782
+ this.state = 836;
3781
3783
  this.arrayInitializer();
3782
3784
  }
3783
3785
  break;
@@ -3803,21 +3805,21 @@ export class CNextParser extends antlr.Parser {
3803
3805
  try {
3804
3806
  this.enterOuterAlt(localContext, 1);
3805
3807
  {
3806
- this.state = 837;
3808
+ this.state = 839;
3807
3809
  this.expression();
3808
- this.state = 842;
3810
+ this.state = 844;
3809
3811
  this.errorHandler.sync(this);
3810
3812
  _la = this.tokenStream.LA(1);
3811
3813
  while (_la === 103) {
3812
3814
  {
3813
3815
  {
3814
- this.state = 838;
3816
+ this.state = 840;
3815
3817
  this.match(CNextParser.COMMA);
3816
- this.state = 839;
3818
+ this.state = 841;
3817
3819
  this.expression();
3818
3820
  }
3819
3821
  }
3820
- this.state = 844;
3822
+ this.state = 846;
3821
3823
  this.errorHandler.sync(this);
3822
3824
  _la = this.tokenStream.LA(1);
3823
3825
  }
@@ -3840,69 +3842,69 @@ export class CNextParser extends antlr.Parser {
3840
3842
  let localContext = new TypeContext(this.context, this.state);
3841
3843
  this.enterRule(localContext, 150, CNextParser.RULE_type);
3842
3844
  try {
3843
- this.state = 854;
3845
+ this.state = 856;
3844
3846
  this.errorHandler.sync(this);
3845
3847
  switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) {
3846
3848
  case 1:
3847
3849
  this.enterOuterAlt(localContext, 1);
3848
3850
  {
3849
- this.state = 845;
3851
+ this.state = 847;
3850
3852
  this.primitiveType();
3851
3853
  }
3852
3854
  break;
3853
3855
  case 2:
3854
3856
  this.enterOuterAlt(localContext, 2);
3855
3857
  {
3856
- this.state = 846;
3858
+ this.state = 848;
3857
3859
  this.stringType();
3858
3860
  }
3859
3861
  break;
3860
3862
  case 3:
3861
3863
  this.enterOuterAlt(localContext, 3);
3862
3864
  {
3863
- this.state = 847;
3865
+ this.state = 849;
3864
3866
  this.scopedType();
3865
3867
  }
3866
3868
  break;
3867
3869
  case 4:
3868
3870
  this.enterOuterAlt(localContext, 4);
3869
3871
  {
3870
- this.state = 848;
3872
+ this.state = 850;
3871
3873
  this.globalType();
3872
3874
  }
3873
3875
  break;
3874
3876
  case 5:
3875
3877
  this.enterOuterAlt(localContext, 5);
3876
3878
  {
3877
- this.state = 849;
3879
+ this.state = 851;
3878
3880
  this.qualifiedType();
3879
3881
  }
3880
3882
  break;
3881
3883
  case 6:
3882
3884
  this.enterOuterAlt(localContext, 6);
3883
3885
  {
3884
- this.state = 850;
3886
+ this.state = 852;
3885
3887
  this.templateType();
3886
3888
  }
3887
3889
  break;
3888
3890
  case 7:
3889
3891
  this.enterOuterAlt(localContext, 7);
3890
3892
  {
3891
- this.state = 851;
3893
+ this.state = 853;
3892
3894
  this.userType();
3893
3895
  }
3894
3896
  break;
3895
3897
  case 8:
3896
3898
  this.enterOuterAlt(localContext, 8);
3897
3899
  {
3898
- this.state = 852;
3900
+ this.state = 854;
3899
3901
  this.arrayType();
3900
3902
  }
3901
3903
  break;
3902
3904
  case 9:
3903
3905
  this.enterOuterAlt(localContext, 9);
3904
3906
  {
3905
- this.state = 853;
3907
+ this.state = 855;
3906
3908
  this.match(CNextParser.VOID);
3907
3909
  }
3908
3910
  break;
@@ -3927,11 +3929,11 @@ export class CNextParser extends antlr.Parser {
3927
3929
  try {
3928
3930
  this.enterOuterAlt(localContext, 1);
3929
3931
  {
3930
- this.state = 856;
3932
+ this.state = 858;
3931
3933
  this.match(CNextParser.THIS);
3932
- this.state = 857;
3934
+ this.state = 859;
3933
3935
  this.match(CNextParser.DOT);
3934
- this.state = 858;
3936
+ this.state = 860;
3935
3937
  this.match(CNextParser.IDENTIFIER);
3936
3938
  }
3937
3939
  }
@@ -3954,11 +3956,11 @@ export class CNextParser extends antlr.Parser {
3954
3956
  try {
3955
3957
  this.enterOuterAlt(localContext, 1);
3956
3958
  {
3957
- this.state = 860;
3959
+ this.state = 862;
3958
3960
  this.match(CNextParser.GLOBAL);
3959
- this.state = 861;
3961
+ this.state = 863;
3960
3962
  this.match(CNextParser.DOT);
3961
- this.state = 862;
3963
+ this.state = 864;
3962
3964
  this.match(CNextParser.IDENTIFIER);
3963
3965
  }
3964
3966
  }
@@ -3982,21 +3984,21 @@ export class CNextParser extends antlr.Parser {
3982
3984
  try {
3983
3985
  this.enterOuterAlt(localContext, 1);
3984
3986
  {
3985
- this.state = 864;
3987
+ this.state = 866;
3986
3988
  this.match(CNextParser.IDENTIFIER);
3987
- this.state = 867;
3989
+ this.state = 869;
3988
3990
  this.errorHandler.sync(this);
3989
3991
  _la = this.tokenStream.LA(1);
3990
3992
  do {
3991
3993
  {
3992
3994
  {
3993
- this.state = 865;
3995
+ this.state = 867;
3994
3996
  this.match(CNextParser.DOT);
3995
- this.state = 866;
3997
+ this.state = 868;
3996
3998
  this.match(CNextParser.IDENTIFIER);
3997
3999
  }
3998
4000
  }
3999
- this.state = 869;
4001
+ this.state = 871;
4000
4002
  this.errorHandler.sync(this);
4001
4003
  _la = this.tokenStream.LA(1);
4002
4004
  } while (_la === 104);
@@ -4022,7 +4024,7 @@ export class CNextParser extends antlr.Parser {
4022
4024
  try {
4023
4025
  this.enterOuterAlt(localContext, 1);
4024
4026
  {
4025
- this.state = 871;
4027
+ this.state = 873;
4026
4028
  _la = this.tokenStream.LA(1);
4027
4029
  if(!(((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 4095) !== 0))) {
4028
4030
  this.errorHandler.recoverInline(this);
@@ -4052,7 +4054,7 @@ export class CNextParser extends antlr.Parser {
4052
4054
  try {
4053
4055
  this.enterOuterAlt(localContext, 1);
4054
4056
  {
4055
- this.state = 873;
4057
+ this.state = 875;
4056
4058
  this.match(CNextParser.IDENTIFIER);
4057
4059
  }
4058
4060
  }
@@ -4075,13 +4077,13 @@ export class CNextParser extends antlr.Parser {
4075
4077
  try {
4076
4078
  this.enterOuterAlt(localContext, 1);
4077
4079
  {
4078
- this.state = 875;
4080
+ this.state = 877;
4079
4081
  this.match(CNextParser.IDENTIFIER);
4080
- this.state = 876;
4082
+ this.state = 878;
4081
4083
  this.match(CNextParser.LT);
4082
- this.state = 877;
4084
+ this.state = 879;
4083
4085
  this.templateArgumentList();
4084
- this.state = 878;
4086
+ this.state = 880;
4085
4087
  this.match(CNextParser.GT);
4086
4088
  }
4087
4089
  }
@@ -4105,21 +4107,21 @@ export class CNextParser extends antlr.Parser {
4105
4107
  try {
4106
4108
  this.enterOuterAlt(localContext, 1);
4107
4109
  {
4108
- this.state = 880;
4110
+ this.state = 882;
4109
4111
  this.templateArgument();
4110
- this.state = 885;
4112
+ this.state = 887;
4111
4113
  this.errorHandler.sync(this);
4112
4114
  _la = this.tokenStream.LA(1);
4113
4115
  while (_la === 103) {
4114
4116
  {
4115
4117
  {
4116
- this.state = 881;
4118
+ this.state = 883;
4117
4119
  this.match(CNextParser.COMMA);
4118
- this.state = 882;
4120
+ this.state = 884;
4119
4121
  this.templateArgument();
4120
4122
  }
4121
4123
  }
4122
- this.state = 887;
4124
+ this.state = 889;
4123
4125
  this.errorHandler.sync(this);
4124
4126
  _la = this.tokenStream.LA(1);
4125
4127
  }
@@ -4142,34 +4144,34 @@ export class CNextParser extends antlr.Parser {
4142
4144
  let localContext = new TemplateArgumentContext(this.context, this.state);
4143
4145
  this.enterRule(localContext, 166, CNextParser.RULE_templateArgument);
4144
4146
  try {
4145
- this.state = 892;
4147
+ this.state = 894;
4146
4148
  this.errorHandler.sync(this);
4147
4149
  switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) {
4148
4150
  case 1:
4149
4151
  this.enterOuterAlt(localContext, 1);
4150
4152
  {
4151
- this.state = 888;
4153
+ this.state = 890;
4152
4154
  this.templateType();
4153
4155
  }
4154
4156
  break;
4155
4157
  case 2:
4156
4158
  this.enterOuterAlt(localContext, 2);
4157
4159
  {
4158
- this.state = 889;
4160
+ this.state = 891;
4159
4161
  this.primitiveType();
4160
4162
  }
4161
4163
  break;
4162
4164
  case 3:
4163
4165
  this.enterOuterAlt(localContext, 3);
4164
4166
  {
4165
- this.state = 890;
4167
+ this.state = 892;
4166
4168
  this.match(CNextParser.IDENTIFIER);
4167
4169
  }
4168
4170
  break;
4169
4171
  case 4:
4170
4172
  this.enterOuterAlt(localContext, 4);
4171
4173
  {
4172
- this.state = 891;
4174
+ this.state = 893;
4173
4175
  this.match(CNextParser.INTEGER_LITERAL);
4174
4176
  }
4175
4177
  break;
@@ -4192,26 +4194,26 @@ export class CNextParser extends antlr.Parser {
4192
4194
  let localContext = new StringTypeContext(this.context, this.state);
4193
4195
  this.enterRule(localContext, 168, CNextParser.RULE_stringType);
4194
4196
  try {
4195
- this.state = 899;
4197
+ this.state = 901;
4196
4198
  this.errorHandler.sync(this);
4197
4199
  switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) {
4198
4200
  case 1:
4199
4201
  this.enterOuterAlt(localContext, 1);
4200
4202
  {
4201
- this.state = 894;
4203
+ this.state = 896;
4202
4204
  this.match(CNextParser.STRING);
4203
- this.state = 895;
4205
+ this.state = 897;
4204
4206
  this.match(CNextParser.LT);
4205
- this.state = 896;
4207
+ this.state = 898;
4206
4208
  this.match(CNextParser.INTEGER_LITERAL);
4207
- this.state = 897;
4209
+ this.state = 899;
4208
4210
  this.match(CNextParser.GT);
4209
4211
  }
4210
4212
  break;
4211
4213
  case 2:
4212
4214
  this.enterOuterAlt(localContext, 2);
4213
4215
  {
4214
- this.state = 898;
4216
+ this.state = 900;
4215
4217
  this.match(CNextParser.STRING);
4216
4218
  }
4217
4219
  break;
@@ -4233,8 +4235,9 @@ export class CNextParser extends antlr.Parser {
4233
4235
  public arrayType(): ArrayTypeContext {
4234
4236
  let localContext = new ArrayTypeContext(this.context, this.state);
4235
4237
  this.enterRule(localContext, 170, CNextParser.RULE_arrayType);
4238
+ let _la: number;
4236
4239
  try {
4237
- this.state = 911;
4240
+ this.state = 921;
4238
4241
  this.errorHandler.sync(this);
4239
4242
  switch (this.tokenStream.LA(1)) {
4240
4243
  case CNextParser.U8:
@@ -4251,27 +4254,64 @@ export class CNextParser extends antlr.Parser {
4251
4254
  case CNextParser.ISR_TYPE:
4252
4255
  this.enterOuterAlt(localContext, 1);
4253
4256
  {
4254
- this.state = 901;
4255
- this.primitiveType();
4256
- this.state = 902;
4257
- this.match(CNextParser.LBRACKET);
4258
4257
  this.state = 903;
4259
- this.expression();
4260
- this.state = 904;
4261
- this.match(CNextParser.RBRACKET);
4258
+ this.primitiveType();
4259
+ this.state = 905;
4260
+ this.errorHandler.sync(this);
4261
+ _la = this.tokenStream.LA(1);
4262
+ do {
4263
+ {
4264
+ {
4265
+ this.state = 904;
4266
+ this.arrayTypeDimension();
4267
+ }
4268
+ }
4269
+ this.state = 907;
4270
+ this.errorHandler.sync(this);
4271
+ _la = this.tokenStream.LA(1);
4272
+ } while (_la === 100);
4262
4273
  }
4263
4274
  break;
4264
4275
  case CNextParser.IDENTIFIER:
4265
4276
  this.enterOuterAlt(localContext, 2);
4266
4277
  {
4267
- this.state = 906;
4268
- this.userType();
4269
- this.state = 907;
4270
- this.match(CNextParser.LBRACKET);
4271
- this.state = 908;
4272
- this.expression();
4273
4278
  this.state = 909;
4274
- this.match(CNextParser.RBRACKET);
4279
+ this.userType();
4280
+ this.state = 911;
4281
+ this.errorHandler.sync(this);
4282
+ _la = this.tokenStream.LA(1);
4283
+ do {
4284
+ {
4285
+ {
4286
+ this.state = 910;
4287
+ this.arrayTypeDimension();
4288
+ }
4289
+ }
4290
+ this.state = 913;
4291
+ this.errorHandler.sync(this);
4292
+ _la = this.tokenStream.LA(1);
4293
+ } while (_la === 100);
4294
+ }
4295
+ break;
4296
+ case CNextParser.STRING:
4297
+ this.enterOuterAlt(localContext, 3);
4298
+ {
4299
+ this.state = 915;
4300
+ this.stringType();
4301
+ this.state = 917;
4302
+ this.errorHandler.sync(this);
4303
+ _la = this.tokenStream.LA(1);
4304
+ do {
4305
+ {
4306
+ {
4307
+ this.state = 916;
4308
+ this.arrayTypeDimension();
4309
+ }
4310
+ }
4311
+ this.state = 919;
4312
+ this.errorHandler.sync(this);
4313
+ _la = this.tokenStream.LA(1);
4314
+ } while (_la === 100);
4275
4315
  }
4276
4316
  break;
4277
4317
  default:
@@ -4291,14 +4331,50 @@ export class CNextParser extends antlr.Parser {
4291
4331
  }
4292
4332
  return localContext;
4293
4333
  }
4334
+ public arrayTypeDimension(): ArrayTypeDimensionContext {
4335
+ let localContext = new ArrayTypeDimensionContext(this.context, this.state);
4336
+ this.enterRule(localContext, 172, CNextParser.RULE_arrayTypeDimension);
4337
+ let _la: number;
4338
+ try {
4339
+ this.enterOuterAlt(localContext, 1);
4340
+ {
4341
+ this.state = 923;
4342
+ this.match(CNextParser.LBRACKET);
4343
+ this.state = 925;
4344
+ this.errorHandler.sync(this);
4345
+ _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)) {
4347
+ {
4348
+ this.state = 924;
4349
+ this.expression();
4350
+ }
4351
+ }
4352
+
4353
+ this.state = 927;
4354
+ this.match(CNextParser.RBRACKET);
4355
+ }
4356
+ }
4357
+ catch (re) {
4358
+ if (re instanceof antlr.RecognitionException) {
4359
+ this.errorHandler.reportError(this, re);
4360
+ this.errorHandler.recover(this, re);
4361
+ } else {
4362
+ throw re;
4363
+ }
4364
+ }
4365
+ finally {
4366
+ this.exitRule();
4367
+ }
4368
+ return localContext;
4369
+ }
4294
4370
  public literal(): LiteralContext {
4295
4371
  let localContext = new LiteralContext(this.context, this.state);
4296
- this.enterRule(localContext, 172, CNextParser.RULE_literal);
4372
+ this.enterRule(localContext, 174, CNextParser.RULE_literal);
4297
4373
  let _la: number;
4298
4374
  try {
4299
4375
  this.enterOuterAlt(localContext, 1);
4300
4376
  {
4301
- this.state = 913;
4377
+ this.state = 929;
4302
4378
  _la = this.tokenStream.LA(1);
4303
4379
  if(!(((((_la - 31)) & ~0x1F) === 0 && ((1 << (_la - 31)) & 3932167) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 63) !== 0))) {
4304
4380
  this.errorHandler.recoverInline(this);
@@ -4324,7 +4400,7 @@ export class CNextParser extends antlr.Parser {
4324
4400
  }
4325
4401
 
4326
4402
  public static readonly _serializedATN: number[] = [
4327
- 4,1,117,916,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,
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,
4328
4404
  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,
4329
4405
  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,
4330
4406
  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,
@@ -4337,333 +4413,340 @@ export class CNextParser extends antlr.Parser {
4337
4413
  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,
4338
4414
  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,
4339
4415
  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,
4340
- 85,7,85,2,86,7,86,1,0,1,0,5,0,177,8,0,10,0,12,0,180,9,0,1,0,5,0,
4341
- 183,8,0,10,0,12,0,186,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,3,2,195,8,
4342
- 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,3,6,210,8,
4343
- 6,1,7,1,7,1,7,1,7,5,7,216,8,7,10,7,12,7,219,9,7,1,7,1,7,1,8,3,8,
4344
- 224,8,8,1,8,1,8,3,8,228,8,8,1,8,1,8,3,8,232,8,8,1,8,1,8,3,8,236,
4345
- 8,8,1,8,1,8,3,8,240,8,8,1,8,1,8,3,8,244,8,8,1,8,3,8,247,8,8,1,9,
4346
- 1,9,1,10,1,10,1,10,1,10,1,10,1,10,5,10,257,8,10,10,10,12,10,260,
4347
- 9,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,271,8,11,
4348
- 1,12,1,12,1,13,1,13,1,13,1,13,5,13,279,8,13,10,13,12,13,282,9,13,
4349
- 1,13,1,13,1,14,1,14,1,14,5,14,289,8,14,10,14,12,14,292,9,14,1,14,
4350
- 1,14,1,15,1,15,1,15,1,15,1,15,1,15,5,15,302,8,15,10,15,12,15,305,
4351
- 9,15,1,15,3,15,308,8,15,1,15,1,15,1,16,1,16,1,16,3,16,315,8,16,1,
4352
- 17,1,17,1,17,1,17,1,17,1,17,5,17,323,8,17,10,17,12,17,326,9,17,1,
4353
- 17,3,17,329,8,17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,19,3,19,339,
4354
- 8,19,1,20,1,20,1,20,1,20,3,20,345,8,20,1,20,1,20,1,20,1,21,1,21,
4355
- 1,21,5,21,353,8,21,10,21,12,21,356,9,21,1,22,3,22,359,8,22,1,22,
4356
- 1,22,1,22,5,22,364,8,22,10,22,12,22,367,9,22,1,23,1,23,1,24,1,24,
4357
- 1,25,1,25,1,26,1,26,1,27,1,27,3,27,379,8,27,1,27,1,27,1,28,3,28,
4358
- 384,8,28,1,28,3,28,387,8,28,1,28,3,28,390,8,28,1,28,3,28,393,8,28,
4359
- 1,28,1,28,1,28,5,28,398,8,28,10,28,12,28,401,9,28,1,28,1,28,3,28,
4360
- 405,8,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,3,28,416,8,
4361
- 28,1,29,1,29,1,29,5,29,421,8,29,10,29,12,29,424,9,29,1,30,1,30,5,
4362
- 30,428,8,30,10,30,12,30,431,9,30,1,30,1,30,1,31,1,31,1,31,1,31,1,
4363
- 31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,446,8,31,1,32,1,32,1,32,1,
4364
- 33,1,33,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,35,5,35,462,8,
4365
- 35,10,35,12,35,465,9,35,1,35,1,35,1,35,1,35,5,35,471,8,35,10,35,
4366
- 12,35,474,9,35,1,35,1,35,5,35,478,8,35,10,35,12,35,481,9,35,3,35,
4367
- 483,8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,
4368
- 1,36,3,36,497,8,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,
4369
- 1,38,3,38,509,8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,
4370
- 1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,3,41,528,8,41,1,41,1,41,
4371
- 3,41,532,8,41,1,41,1,41,3,41,536,8,41,1,41,1,41,1,41,1,42,1,42,3,
4372
- 42,543,8,42,1,43,3,43,546,8,43,1,43,3,43,549,8,43,1,43,3,43,552,
4373
- 8,43,1,43,1,43,1,43,5,43,557,8,43,10,43,12,43,560,9,43,1,43,1,43,
4374
- 3,43,564,8,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46,
4375
- 3,46,576,8,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,4,47,586,8,
4376
- 47,11,47,12,47,587,1,47,3,47,591,8,47,1,47,1,47,1,48,1,48,1,48,1,
4377
- 48,5,48,599,8,48,10,48,12,48,602,9,48,1,48,1,48,1,49,1,49,1,49,3,
4378
- 49,609,8,49,1,49,1,49,3,49,613,8,49,1,49,1,49,1,49,3,49,618,8,49,
4379
- 1,50,1,50,1,50,1,50,3,50,624,8,50,1,50,1,50,1,51,1,51,1,52,1,52,
4380
- 1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,639,8,52,1,53,1,53,1,53,
4381
- 5,53,644,8,53,10,53,12,53,647,9,53,1,54,1,54,1,54,5,54,652,8,54,
4382
- 10,54,12,54,655,9,54,1,55,1,55,1,55,5,55,660,8,55,10,55,12,55,663,
4383
- 9,55,1,56,1,56,1,56,5,56,668,8,56,10,56,12,56,671,9,56,1,57,1,57,
4384
- 1,57,5,57,676,8,57,10,57,12,57,679,9,57,1,58,1,58,1,58,5,58,684,
4385
- 8,58,10,58,12,58,687,9,58,1,59,1,59,1,59,5,59,692,8,59,10,59,12,
4386
- 59,695,9,59,1,60,1,60,1,60,5,60,700,8,60,10,60,12,60,703,9,60,1,
4387
- 61,1,61,1,61,5,61,708,8,61,10,61,12,61,711,9,61,1,62,1,62,1,62,5,
4388
- 62,716,8,62,10,62,12,62,719,9,62,1,63,1,63,1,63,1,63,1,63,1,63,1,
4389
- 63,1,63,1,63,3,63,730,8,63,1,64,1,64,5,64,734,8,64,10,64,12,64,737,
4390
- 9,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,
4391
- 1,65,1,65,3,65,753,8,65,1,65,3,65,756,8,65,1,66,1,66,1,66,1,66,1,
4392
- 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,770,8,66,1,67,1,67,1,
4393
- 67,1,67,3,67,776,8,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,
4394
- 69,1,69,3,69,788,8,69,1,69,1,69,1,69,1,69,1,69,3,69,795,8,69,1,70,
4395
- 1,70,1,70,5,70,800,8,70,10,70,12,70,803,9,70,1,70,3,70,806,8,70,
4396
- 1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,5,72,816,8,72,10,72,12,72,
4397
- 819,9,72,1,72,3,72,822,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,
4398
- 72,831,8,72,1,73,1,73,1,73,3,73,836,8,73,1,74,1,74,1,74,5,74,841,
4399
- 8,74,10,74,12,74,844,9,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,
4400
- 1,75,3,75,855,8,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,78,
4401
- 1,78,1,78,4,78,868,8,78,11,78,12,78,869,1,79,1,79,1,80,1,80,1,81,
4402
- 1,81,1,81,1,81,1,81,1,82,1,82,1,82,5,82,884,8,82,10,82,12,82,887,
4403
- 9,82,1,83,1,83,1,83,1,83,3,83,893,8,83,1,84,1,84,1,84,1,84,1,84,
4404
- 3,84,900,8,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,
4405
- 3,85,912,8,85,1,86,1,86,1,86,0,0,87,0,2,4,6,8,10,12,14,16,18,20,
4406
- 22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,
4407
- 66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,
4408
- 108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,
4409
- 140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,
4410
- 172,0,14,1,0,3,5,1,0,6,9,1,0,17,18,1,0,40,44,1,0,36,39,1,0,45,46,
4411
- 1,0,65,75,1,0,76,77,1,0,78,81,1,0,94,95,1,0,82,83,1,0,84,86,1,0,
4412
- 53,64,3,0,31,33,49,52,107,112,968,0,178,1,0,0,0,2,189,1,0,0,0,4,
4413
- 194,1,0,0,0,6,196,1,0,0,0,8,198,1,0,0,0,10,200,1,0,0,0,12,209,1,
4414
- 0,0,0,14,211,1,0,0,0,16,246,1,0,0,0,18,248,1,0,0,0,20,250,1,0,0,
4415
- 0,22,263,1,0,0,0,24,272,1,0,0,0,26,274,1,0,0,0,28,285,1,0,0,0,30,
4416
- 295,1,0,0,0,32,311,1,0,0,0,34,316,1,0,0,0,36,332,1,0,0,0,38,334,
4417
- 1,0,0,0,40,340,1,0,0,0,42,349,1,0,0,0,44,358,1,0,0,0,46,368,1,0,
4418
- 0,0,48,370,1,0,0,0,50,372,1,0,0,0,52,374,1,0,0,0,54,376,1,0,0,0,
4419
- 56,415,1,0,0,0,58,417,1,0,0,0,60,425,1,0,0,0,62,445,1,0,0,0,64,447,
4420
- 1,0,0,0,66,450,1,0,0,0,68,455,1,0,0,0,70,482,1,0,0,0,72,496,1,0,
4421
- 0,0,74,498,1,0,0,0,76,501,1,0,0,0,78,510,1,0,0,0,80,516,1,0,0,0,
4422
- 82,524,1,0,0,0,84,542,1,0,0,0,86,545,1,0,0,0,88,565,1,0,0,0,90,569,
4423
- 1,0,0,0,92,573,1,0,0,0,94,579,1,0,0,0,96,594,1,0,0,0,98,617,1,0,
4424
- 0,0,100,619,1,0,0,0,102,627,1,0,0,0,104,638,1,0,0,0,106,640,1,0,
4425
- 0,0,108,648,1,0,0,0,110,656,1,0,0,0,112,664,1,0,0,0,114,672,1,0,
4426
- 0,0,116,680,1,0,0,0,118,688,1,0,0,0,120,696,1,0,0,0,122,704,1,0,
4427
- 0,0,124,712,1,0,0,0,126,729,1,0,0,0,128,731,1,0,0,0,130,755,1,0,
4428
- 0,0,132,769,1,0,0,0,134,771,1,0,0,0,136,779,1,0,0,0,138,794,1,0,
4429
- 0,0,140,796,1,0,0,0,142,807,1,0,0,0,144,830,1,0,0,0,146,835,1,0,
4430
- 0,0,148,837,1,0,0,0,150,854,1,0,0,0,152,856,1,0,0,0,154,860,1,0,
4431
- 0,0,156,864,1,0,0,0,158,871,1,0,0,0,160,873,1,0,0,0,162,875,1,0,
4432
- 0,0,164,880,1,0,0,0,166,892,1,0,0,0,168,899,1,0,0,0,170,911,1,0,
4433
- 0,0,172,913,1,0,0,0,174,177,3,2,1,0,175,177,3,4,2,0,176,174,1,0,
4434
- 0,0,176,175,1,0,0,0,177,180,1,0,0,0,178,176,1,0,0,0,178,179,1,0,
4435
- 0,0,179,184,1,0,0,0,180,178,1,0,0,0,181,183,3,12,6,0,182,181,1,0,
4436
- 0,0,183,186,1,0,0,0,184,182,1,0,0,0,184,185,1,0,0,0,185,187,1,0,
4437
- 0,0,186,184,1,0,0,0,187,188,5,0,0,1,188,1,1,0,0,0,189,190,5,2,0,
4438
- 0,190,3,1,0,0,0,191,195,3,6,3,0,192,195,3,8,4,0,193,195,3,10,5,0,
4439
- 194,191,1,0,0,0,194,192,1,0,0,0,194,193,1,0,0,0,195,5,1,0,0,0,196,
4440
- 197,7,0,0,0,197,7,1,0,0,0,198,199,7,1,0,0,199,9,1,0,0,0,200,201,
4441
- 5,10,0,0,201,11,1,0,0,0,202,210,3,14,7,0,203,210,3,20,10,0,204,210,
4442
- 3,26,13,0,205,210,3,30,15,0,206,210,3,34,17,0,207,210,3,40,20,0,
4443
- 208,210,3,56,28,0,209,202,1,0,0,0,209,203,1,0,0,0,209,204,1,0,0,
4444
- 0,209,205,1,0,0,0,209,206,1,0,0,0,209,207,1,0,0,0,209,208,1,0,0,
4445
- 0,210,13,1,0,0,0,211,212,5,11,0,0,212,213,5,113,0,0,213,217,5,98,
4446
- 0,0,214,216,3,16,8,0,215,214,1,0,0,0,216,219,1,0,0,0,217,215,1,0,
4447
- 0,0,217,218,1,0,0,0,218,220,1,0,0,0,219,217,1,0,0,0,220,221,5,99,
4448
- 0,0,221,15,1,0,0,0,222,224,3,18,9,0,223,222,1,0,0,0,223,224,1,0,
4449
- 0,0,224,225,1,0,0,0,225,247,3,56,28,0,226,228,3,18,9,0,227,226,1,
4450
- 0,0,0,227,228,1,0,0,0,228,229,1,0,0,0,229,247,3,40,20,0,230,232,
4451
- 3,18,9,0,231,230,1,0,0,0,231,232,1,0,0,0,232,233,1,0,0,0,233,247,
4452
- 3,30,15,0,234,236,3,18,9,0,235,234,1,0,0,0,235,236,1,0,0,0,236,237,
4453
- 1,0,0,0,237,247,3,34,17,0,238,240,3,18,9,0,239,238,1,0,0,0,239,240,
4454
- 1,0,0,0,240,241,1,0,0,0,241,247,3,20,10,0,242,244,3,18,9,0,243,242,
4455
- 1,0,0,0,243,244,1,0,0,0,244,245,1,0,0,0,245,247,3,26,13,0,246,223,
4456
- 1,0,0,0,246,227,1,0,0,0,246,231,1,0,0,0,246,235,1,0,0,0,246,239,
4457
- 1,0,0,0,246,243,1,0,0,0,247,17,1,0,0,0,248,249,7,2,0,0,249,19,1,
4458
- 0,0,0,250,251,5,16,0,0,251,252,5,113,0,0,252,253,5,105,0,0,253,254,
4459
- 3,102,51,0,254,258,5,98,0,0,255,257,3,22,11,0,256,255,1,0,0,0,257,
4460
- 260,1,0,0,0,258,256,1,0,0,0,258,259,1,0,0,0,259,261,1,0,0,0,260,
4461
- 258,1,0,0,0,261,262,5,99,0,0,262,21,1,0,0,0,263,264,5,113,0,0,264,
4462
- 265,5,106,0,0,265,266,3,150,75,0,266,267,3,24,12,0,267,268,5,105,
4463
- 0,0,268,270,3,102,51,0,269,271,5,103,0,0,270,269,1,0,0,0,270,271,
4464
- 1,0,0,0,271,23,1,0,0,0,272,273,7,3,0,0,273,25,1,0,0,0,274,275,5,
4465
- 12,0,0,275,276,5,113,0,0,276,280,5,98,0,0,277,279,3,28,14,0,278,
4466
- 277,1,0,0,0,279,282,1,0,0,0,280,278,1,0,0,0,280,281,1,0,0,0,281,
4467
- 283,1,0,0,0,282,280,1,0,0,0,283,284,5,99,0,0,284,27,1,0,0,0,285,
4468
- 286,3,150,75,0,286,290,5,113,0,0,287,289,3,54,27,0,288,287,1,0,0,
4469
- 0,289,292,1,0,0,0,290,288,1,0,0,0,290,291,1,0,0,0,291,293,1,0,0,
4470
- 0,292,290,1,0,0,0,293,294,5,102,0,0,294,29,1,0,0,0,295,296,5,13,
4471
- 0,0,296,297,5,113,0,0,297,298,5,98,0,0,298,303,3,32,16,0,299,300,
4472
- 5,103,0,0,300,302,3,32,16,0,301,299,1,0,0,0,302,305,1,0,0,0,303,
4473
- 301,1,0,0,0,303,304,1,0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,306,
4474
- 308,5,103,0,0,307,306,1,0,0,0,307,308,1,0,0,0,308,309,1,0,0,0,309,
4475
- 310,5,99,0,0,310,31,1,0,0,0,311,314,5,113,0,0,312,313,5,75,0,0,313,
4476
- 315,3,102,51,0,314,312,1,0,0,0,314,315,1,0,0,0,315,33,1,0,0,0,316,
4477
- 317,3,36,18,0,317,318,5,113,0,0,318,319,5,98,0,0,319,324,3,38,19,
4478
- 0,320,321,5,103,0,0,321,323,3,38,19,0,322,320,1,0,0,0,323,326,1,
4479
- 0,0,0,324,322,1,0,0,0,324,325,1,0,0,0,325,328,1,0,0,0,326,324,1,
4480
- 0,0,0,327,329,5,103,0,0,328,327,1,0,0,0,328,329,1,0,0,0,329,330,
4481
- 1,0,0,0,330,331,5,99,0,0,331,35,1,0,0,0,332,333,7,4,0,0,333,37,1,
4482
- 0,0,0,334,338,5,113,0,0,335,336,5,100,0,0,336,337,5,110,0,0,337,
4483
- 339,5,101,0,0,338,335,1,0,0,0,338,339,1,0,0,0,339,39,1,0,0,0,340,
4484
- 341,3,150,75,0,341,342,5,113,0,0,342,344,5,96,0,0,343,345,3,42,21,
4485
- 0,344,343,1,0,0,0,344,345,1,0,0,0,345,346,1,0,0,0,346,347,5,97,0,
4486
- 0,347,348,3,60,30,0,348,41,1,0,0,0,349,354,3,44,22,0,350,351,5,103,
4487
- 0,0,351,353,3,44,22,0,352,350,1,0,0,0,353,356,1,0,0,0,354,352,1,
4488
- 0,0,0,354,355,1,0,0,0,355,43,1,0,0,0,356,354,1,0,0,0,357,359,3,46,
4489
- 23,0,358,357,1,0,0,0,358,359,1,0,0,0,359,360,1,0,0,0,360,361,3,150,
4490
- 75,0,361,365,5,113,0,0,362,364,3,54,27,0,363,362,1,0,0,0,364,367,
4491
- 1,0,0,0,365,363,1,0,0,0,365,366,1,0,0,0,366,45,1,0,0,0,367,365,1,
4492
- 0,0,0,368,369,5,19,0,0,369,47,1,0,0,0,370,371,5,20,0,0,371,49,1,
4493
- 0,0,0,372,373,7,5,0,0,373,51,1,0,0,0,374,375,5,47,0,0,375,53,1,0,
4494
- 0,0,376,378,5,100,0,0,377,379,3,102,51,0,378,377,1,0,0,0,378,379,
4495
- 1,0,0,0,379,380,1,0,0,0,380,381,5,101,0,0,381,55,1,0,0,0,382,384,
4496
- 3,52,26,0,383,382,1,0,0,0,383,384,1,0,0,0,384,386,1,0,0,0,385,387,
4497
- 3,48,24,0,386,385,1,0,0,0,386,387,1,0,0,0,387,389,1,0,0,0,388,390,
4498
- 3,46,23,0,389,388,1,0,0,0,389,390,1,0,0,0,390,392,1,0,0,0,391,393,
4499
- 3,50,25,0,392,391,1,0,0,0,392,393,1,0,0,0,393,394,1,0,0,0,394,395,
4500
- 3,150,75,0,395,399,5,113,0,0,396,398,3,54,27,0,397,396,1,0,0,0,398,
4501
- 401,1,0,0,0,399,397,1,0,0,0,399,400,1,0,0,0,400,404,1,0,0,0,401,
4502
- 399,1,0,0,0,402,403,5,75,0,0,403,405,3,102,51,0,404,402,1,0,0,0,
4503
- 404,405,1,0,0,0,405,406,1,0,0,0,406,407,5,102,0,0,407,416,1,0,0,
4504
- 0,408,409,3,150,75,0,409,410,5,113,0,0,410,411,5,96,0,0,411,412,
4505
- 3,58,29,0,412,413,5,97,0,0,413,414,5,102,0,0,414,416,1,0,0,0,415,
4506
- 383,1,0,0,0,415,408,1,0,0,0,416,57,1,0,0,0,417,422,5,113,0,0,418,
4507
- 419,5,103,0,0,419,421,5,113,0,0,420,418,1,0,0,0,421,424,1,0,0,0,
4508
- 422,420,1,0,0,0,422,423,1,0,0,0,423,59,1,0,0,0,424,422,1,0,0,0,425,
4509
- 429,5,98,0,0,426,428,3,62,31,0,427,426,1,0,0,0,428,431,1,0,0,0,429,
4510
- 427,1,0,0,0,429,430,1,0,0,0,430,432,1,0,0,0,431,429,1,0,0,0,432,
4511
- 433,5,99,0,0,433,61,1,0,0,0,434,446,3,56,28,0,435,446,3,66,33,0,
4512
- 436,446,3,74,37,0,437,446,3,76,38,0,438,446,3,78,39,0,439,446,3,
4513
- 80,40,0,440,446,3,82,41,0,441,446,3,94,47,0,442,446,3,92,46,0,443,
4514
- 446,3,64,32,0,444,446,3,60,30,0,445,434,1,0,0,0,445,435,1,0,0,0,
4515
- 445,436,1,0,0,0,445,437,1,0,0,0,445,438,1,0,0,0,445,439,1,0,0,0,
4516
- 445,440,1,0,0,0,445,441,1,0,0,0,445,442,1,0,0,0,445,443,1,0,0,0,
4517
- 445,444,1,0,0,0,446,63,1,0,0,0,447,448,5,48,0,0,448,449,3,60,30,
4518
- 0,449,65,1,0,0,0,450,451,3,70,35,0,451,452,3,68,34,0,452,453,3,102,
4519
- 51,0,453,454,5,102,0,0,454,67,1,0,0,0,455,456,7,6,0,0,456,69,1,0,
4520
- 0,0,457,458,5,15,0,0,458,459,5,104,0,0,459,463,5,113,0,0,460,462,
4521
- 3,72,36,0,461,460,1,0,0,0,462,465,1,0,0,0,463,461,1,0,0,0,463,464,
4522
- 1,0,0,0,464,483,1,0,0,0,465,463,1,0,0,0,466,467,5,14,0,0,467,468,
4523
- 5,104,0,0,468,472,5,113,0,0,469,471,3,72,36,0,470,469,1,0,0,0,471,
4524
- 474,1,0,0,0,472,470,1,0,0,0,472,473,1,0,0,0,473,483,1,0,0,0,474,
4525
- 472,1,0,0,0,475,479,5,113,0,0,476,478,3,72,36,0,477,476,1,0,0,0,
4526
- 478,481,1,0,0,0,479,477,1,0,0,0,479,480,1,0,0,0,480,483,1,0,0,0,
4527
- 481,479,1,0,0,0,482,457,1,0,0,0,482,466,1,0,0,0,482,475,1,0,0,0,
4528
- 483,71,1,0,0,0,484,485,5,104,0,0,485,497,5,113,0,0,486,487,5,100,
4529
- 0,0,487,488,3,102,51,0,488,489,5,101,0,0,489,497,1,0,0,0,490,491,
4530
- 5,100,0,0,491,492,3,102,51,0,492,493,5,103,0,0,493,494,3,102,51,
4531
- 0,494,495,5,101,0,0,495,497,1,0,0,0,496,484,1,0,0,0,496,486,1,0,
4532
- 0,0,496,490,1,0,0,0,497,73,1,0,0,0,498,499,3,102,51,0,499,500,5,
4533
- 102,0,0,500,75,1,0,0,0,501,502,5,22,0,0,502,503,5,96,0,0,503,504,
4534
- 3,102,51,0,504,505,5,97,0,0,505,508,3,62,31,0,506,507,5,23,0,0,507,
4535
- 509,3,62,31,0,508,506,1,0,0,0,508,509,1,0,0,0,509,77,1,0,0,0,510,
4536
- 511,5,24,0,0,511,512,5,96,0,0,512,513,3,102,51,0,513,514,5,97,0,
4537
- 0,514,515,3,62,31,0,515,79,1,0,0,0,516,517,5,25,0,0,517,518,3,60,
4538
- 30,0,518,519,5,24,0,0,519,520,5,96,0,0,520,521,3,102,51,0,521,522,
4539
- 5,97,0,0,522,523,5,102,0,0,523,81,1,0,0,0,524,525,5,26,0,0,525,527,
4540
- 5,96,0,0,526,528,3,84,42,0,527,526,1,0,0,0,527,528,1,0,0,0,528,529,
4541
- 1,0,0,0,529,531,5,102,0,0,530,532,3,102,51,0,531,530,1,0,0,0,531,
4542
- 532,1,0,0,0,532,533,1,0,0,0,533,535,5,102,0,0,534,536,3,90,45,0,
4543
- 535,534,1,0,0,0,535,536,1,0,0,0,536,537,1,0,0,0,537,538,5,97,0,0,
4544
- 538,539,3,62,31,0,539,83,1,0,0,0,540,543,3,86,43,0,541,543,3,88,
4545
- 44,0,542,540,1,0,0,0,542,541,1,0,0,0,543,85,1,0,0,0,544,546,3,52,
4546
- 26,0,545,544,1,0,0,0,545,546,1,0,0,0,546,548,1,0,0,0,547,549,3,48,
4547
- 24,0,548,547,1,0,0,0,548,549,1,0,0,0,549,551,1,0,0,0,550,552,3,50,
4548
- 25,0,551,550,1,0,0,0,551,552,1,0,0,0,552,553,1,0,0,0,553,554,3,150,
4549
- 75,0,554,558,5,113,0,0,555,557,3,54,27,0,556,555,1,0,0,0,557,560,
4550
- 1,0,0,0,558,556,1,0,0,0,558,559,1,0,0,0,559,563,1,0,0,0,560,558,
4551
- 1,0,0,0,561,562,5,75,0,0,562,564,3,102,51,0,563,561,1,0,0,0,563,
4552
- 564,1,0,0,0,564,87,1,0,0,0,565,566,3,70,35,0,566,567,3,68,34,0,567,
4553
- 568,3,102,51,0,568,89,1,0,0,0,569,570,3,70,35,0,570,571,3,68,34,
4554
- 0,571,572,3,102,51,0,572,91,1,0,0,0,573,575,5,30,0,0,574,576,3,102,
4555
- 51,0,575,574,1,0,0,0,575,576,1,0,0,0,576,577,1,0,0,0,577,578,5,102,
4556
- 0,0,578,93,1,0,0,0,579,580,5,27,0,0,580,581,5,96,0,0,581,582,3,102,
4557
- 51,0,582,583,5,97,0,0,583,585,5,98,0,0,584,586,3,96,48,0,585,584,
4558
- 1,0,0,0,586,587,1,0,0,0,587,585,1,0,0,0,587,588,1,0,0,0,588,590,
4559
- 1,0,0,0,589,591,3,100,50,0,590,589,1,0,0,0,590,591,1,0,0,0,591,592,
4560
- 1,0,0,0,592,593,5,99,0,0,593,95,1,0,0,0,594,595,5,28,0,0,595,600,
4561
- 3,98,49,0,596,597,5,88,0,0,597,599,3,98,49,0,598,596,1,0,0,0,599,
4562
- 602,1,0,0,0,600,598,1,0,0,0,600,601,1,0,0,0,601,603,1,0,0,0,602,
4563
- 600,1,0,0,0,603,604,3,60,30,0,604,97,1,0,0,0,605,618,3,156,78,0,
4564
- 606,618,5,113,0,0,607,609,5,83,0,0,608,607,1,0,0,0,608,609,1,0,0,
4565
- 0,609,610,1,0,0,0,610,618,5,110,0,0,611,613,5,83,0,0,612,611,1,0,
4566
- 0,0,612,613,1,0,0,0,613,614,1,0,0,0,614,618,5,107,0,0,615,618,5,
4567
- 108,0,0,616,618,5,112,0,0,617,605,1,0,0,0,617,606,1,0,0,0,617,608,
4568
- 1,0,0,0,617,612,1,0,0,0,617,615,1,0,0,0,617,616,1,0,0,0,618,99,1,
4569
- 0,0,0,619,623,5,29,0,0,620,621,5,96,0,0,621,622,5,110,0,0,622,624,
4570
- 5,97,0,0,623,620,1,0,0,0,623,624,1,0,0,0,624,625,1,0,0,0,625,626,
4571
- 3,60,30,0,626,101,1,0,0,0,627,628,3,104,52,0,628,103,1,0,0,0,629,
4572
- 630,5,96,0,0,630,631,3,106,53,0,631,632,5,97,0,0,632,633,5,1,0,0,
4573
- 633,634,3,106,53,0,634,635,5,106,0,0,635,636,3,106,53,0,636,639,
4574
- 1,0,0,0,637,639,3,106,53,0,638,629,1,0,0,0,638,637,1,0,0,0,639,105,
4575
- 1,0,0,0,640,645,3,108,54,0,641,642,5,88,0,0,642,644,3,108,54,0,643,
4576
- 641,1,0,0,0,644,647,1,0,0,0,645,643,1,0,0,0,645,646,1,0,0,0,646,
4577
- 107,1,0,0,0,647,645,1,0,0,0,648,653,3,110,55,0,649,650,5,87,0,0,
4578
- 650,652,3,110,55,0,651,649,1,0,0,0,652,655,1,0,0,0,653,651,1,0,0,
4579
- 0,653,654,1,0,0,0,654,109,1,0,0,0,655,653,1,0,0,0,656,661,3,112,
4580
- 56,0,657,658,7,7,0,0,658,660,3,112,56,0,659,657,1,0,0,0,660,663,
4581
- 1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0,662,111,1,0,0,0,663,661,
4582
- 1,0,0,0,664,669,3,114,57,0,665,666,7,8,0,0,666,668,3,114,57,0,667,
4583
- 665,1,0,0,0,668,671,1,0,0,0,669,667,1,0,0,0,669,670,1,0,0,0,670,
4584
- 113,1,0,0,0,671,669,1,0,0,0,672,677,3,116,58,0,673,674,5,91,0,0,
4585
- 674,676,3,116,58,0,675,673,1,0,0,0,676,679,1,0,0,0,677,675,1,0,0,
4586
- 0,677,678,1,0,0,0,678,115,1,0,0,0,679,677,1,0,0,0,680,685,3,118,
4587
- 59,0,681,682,5,92,0,0,682,684,3,118,59,0,683,681,1,0,0,0,684,687,
4588
- 1,0,0,0,685,683,1,0,0,0,685,686,1,0,0,0,686,117,1,0,0,0,687,685,
4589
- 1,0,0,0,688,693,3,120,60,0,689,690,5,90,0,0,690,692,3,120,60,0,691,
4590
- 689,1,0,0,0,692,695,1,0,0,0,693,691,1,0,0,0,693,694,1,0,0,0,694,
4591
- 119,1,0,0,0,695,693,1,0,0,0,696,701,3,122,61,0,697,698,7,9,0,0,698,
4592
- 700,3,122,61,0,699,697,1,0,0,0,700,703,1,0,0,0,701,699,1,0,0,0,701,
4593
- 702,1,0,0,0,702,121,1,0,0,0,703,701,1,0,0,0,704,709,3,124,62,0,705,
4594
- 706,7,10,0,0,706,708,3,124,62,0,707,705,1,0,0,0,708,711,1,0,0,0,
4595
- 709,707,1,0,0,0,709,710,1,0,0,0,710,123,1,0,0,0,711,709,1,0,0,0,
4596
- 712,717,3,126,63,0,713,714,7,11,0,0,714,716,3,126,63,0,715,713,1,
4597
- 0,0,0,716,719,1,0,0,0,717,715,1,0,0,0,717,718,1,0,0,0,718,125,1,
4598
- 0,0,0,719,717,1,0,0,0,720,721,5,89,0,0,721,730,3,126,63,0,722,723,
4599
- 5,83,0,0,723,730,3,126,63,0,724,725,5,93,0,0,725,730,3,126,63,0,
4600
- 726,727,5,90,0,0,727,730,3,126,63,0,728,730,3,128,64,0,729,720,1,
4601
- 0,0,0,729,722,1,0,0,0,729,724,1,0,0,0,729,726,1,0,0,0,729,728,1,
4602
- 0,0,0,730,127,1,0,0,0,731,735,3,132,66,0,732,734,3,130,65,0,733,
4603
- 732,1,0,0,0,734,737,1,0,0,0,735,733,1,0,0,0,735,736,1,0,0,0,736,
4604
- 129,1,0,0,0,737,735,1,0,0,0,738,739,5,104,0,0,739,756,5,113,0,0,
4605
- 740,741,5,100,0,0,741,742,3,102,51,0,742,743,5,101,0,0,743,756,1,
4606
- 0,0,0,744,745,5,100,0,0,745,746,3,102,51,0,746,747,5,103,0,0,747,
4607
- 748,3,102,51,0,748,749,5,101,0,0,749,756,1,0,0,0,750,752,5,96,0,
4608
- 0,751,753,3,148,74,0,752,751,1,0,0,0,752,753,1,0,0,0,753,754,1,0,
4609
- 0,0,754,756,5,97,0,0,755,738,1,0,0,0,755,740,1,0,0,0,755,744,1,0,
4610
- 0,0,755,750,1,0,0,0,756,131,1,0,0,0,757,770,3,134,67,0,758,770,3,
4611
- 136,68,0,759,770,3,138,69,0,760,770,3,144,72,0,761,770,5,14,0,0,
4612
- 762,770,5,15,0,0,763,770,5,113,0,0,764,770,3,172,86,0,765,766,5,
4613
- 96,0,0,766,767,3,102,51,0,767,768,5,97,0,0,768,770,1,0,0,0,769,757,
4614
- 1,0,0,0,769,758,1,0,0,0,769,759,1,0,0,0,769,760,1,0,0,0,769,761,
4615
- 1,0,0,0,769,762,1,0,0,0,769,763,1,0,0,0,769,764,1,0,0,0,769,765,
4616
- 1,0,0,0,770,133,1,0,0,0,771,772,5,35,0,0,772,775,5,96,0,0,773,776,
4617
- 3,150,75,0,774,776,3,102,51,0,775,773,1,0,0,0,775,774,1,0,0,0,776,
4618
- 777,1,0,0,0,777,778,5,97,0,0,778,135,1,0,0,0,779,780,5,96,0,0,780,
4619
- 781,3,150,75,0,781,782,5,97,0,0,782,783,3,126,63,0,783,137,1,0,0,
4620
- 0,784,785,5,113,0,0,785,787,5,98,0,0,786,788,3,140,70,0,787,786,
4621
- 1,0,0,0,787,788,1,0,0,0,788,789,1,0,0,0,789,795,5,99,0,0,790,791,
4622
- 5,98,0,0,791,792,3,140,70,0,792,793,5,99,0,0,793,795,1,0,0,0,794,
4623
- 784,1,0,0,0,794,790,1,0,0,0,795,139,1,0,0,0,796,801,3,142,71,0,797,
4624
- 798,5,103,0,0,798,800,3,142,71,0,799,797,1,0,0,0,800,803,1,0,0,0,
4625
- 801,799,1,0,0,0,801,802,1,0,0,0,802,805,1,0,0,0,803,801,1,0,0,0,
4626
- 804,806,5,103,0,0,805,804,1,0,0,0,805,806,1,0,0,0,806,141,1,0,0,
4627
- 0,807,808,5,113,0,0,808,809,5,106,0,0,809,810,3,102,51,0,810,143,
4628
- 1,0,0,0,811,812,5,100,0,0,812,817,3,146,73,0,813,814,5,103,0,0,814,
4629
- 816,3,146,73,0,815,813,1,0,0,0,816,819,1,0,0,0,817,815,1,0,0,0,817,
4630
- 818,1,0,0,0,818,821,1,0,0,0,819,817,1,0,0,0,820,822,5,103,0,0,821,
4631
- 820,1,0,0,0,821,822,1,0,0,0,822,823,1,0,0,0,823,824,5,101,0,0,824,
4632
- 831,1,0,0,0,825,826,5,100,0,0,826,827,3,102,51,0,827,828,5,84,0,
4633
- 0,828,829,5,101,0,0,829,831,1,0,0,0,830,811,1,0,0,0,830,825,1,0,
4634
- 0,0,831,145,1,0,0,0,832,836,3,102,51,0,833,836,3,138,69,0,834,836,
4635
- 3,144,72,0,835,832,1,0,0,0,835,833,1,0,0,0,835,834,1,0,0,0,836,147,
4636
- 1,0,0,0,837,842,3,102,51,0,838,839,5,103,0,0,839,841,3,102,51,0,
4637
- 840,838,1,0,0,0,841,844,1,0,0,0,842,840,1,0,0,0,842,843,1,0,0,0,
4638
- 843,149,1,0,0,0,844,842,1,0,0,0,845,855,3,158,79,0,846,855,3,168,
4639
- 84,0,847,855,3,152,76,0,848,855,3,154,77,0,849,855,3,156,78,0,850,
4640
- 855,3,162,81,0,851,855,3,160,80,0,852,855,3,170,85,0,853,855,5,21,
4641
- 0,0,854,845,1,0,0,0,854,846,1,0,0,0,854,847,1,0,0,0,854,848,1,0,
4642
- 0,0,854,849,1,0,0,0,854,850,1,0,0,0,854,851,1,0,0,0,854,852,1,0,
4643
- 0,0,854,853,1,0,0,0,855,151,1,0,0,0,856,857,5,14,0,0,857,858,5,104,
4644
- 0,0,858,859,5,113,0,0,859,153,1,0,0,0,860,861,5,15,0,0,861,862,5,
4645
- 104,0,0,862,863,5,113,0,0,863,155,1,0,0,0,864,867,5,113,0,0,865,
4646
- 866,5,104,0,0,866,868,5,113,0,0,867,865,1,0,0,0,868,869,1,0,0,0,
4647
- 869,867,1,0,0,0,869,870,1,0,0,0,870,157,1,0,0,0,871,872,7,12,0,0,
4648
- 872,159,1,0,0,0,873,874,5,113,0,0,874,161,1,0,0,0,875,876,5,113,
4649
- 0,0,876,877,5,78,0,0,877,878,3,164,82,0,878,879,5,79,0,0,879,163,
4650
- 1,0,0,0,880,885,3,166,83,0,881,882,5,103,0,0,882,884,3,166,83,0,
4651
- 883,881,1,0,0,0,884,887,1,0,0,0,885,883,1,0,0,0,885,886,1,0,0,0,
4652
- 886,165,1,0,0,0,887,885,1,0,0,0,888,893,3,162,81,0,889,893,3,158,
4653
- 79,0,890,893,5,113,0,0,891,893,5,110,0,0,892,888,1,0,0,0,892,889,
4654
- 1,0,0,0,892,890,1,0,0,0,892,891,1,0,0,0,893,167,1,0,0,0,894,895,
4655
- 5,34,0,0,895,896,5,78,0,0,896,897,5,110,0,0,897,900,5,79,0,0,898,
4656
- 900,5,34,0,0,899,894,1,0,0,0,899,898,1,0,0,0,900,169,1,0,0,0,901,
4657
- 902,3,158,79,0,902,903,5,100,0,0,903,904,3,102,51,0,904,905,5,101,
4658
- 0,0,905,912,1,0,0,0,906,907,3,160,80,0,907,908,5,100,0,0,908,909,
4659
- 3,102,51,0,909,910,5,101,0,0,910,912,1,0,0,0,911,901,1,0,0,0,911,
4660
- 906,1,0,0,0,912,171,1,0,0,0,913,914,7,13,0,0,914,173,1,0,0,0,93,
4661
- 176,178,184,194,209,217,223,227,231,235,239,243,246,258,270,280,
4662
- 290,303,307,314,324,328,338,344,354,358,365,378,383,386,389,392,
4663
- 399,404,415,422,429,445,463,472,479,482,496,508,527,531,535,542,
4664
- 545,548,551,558,563,575,587,590,600,608,612,617,623,638,645,653,
4665
- 661,669,677,685,693,701,709,717,729,735,752,755,769,775,787,794,
4666
- 801,805,817,821,830,835,842,854,869,885,892,899,911
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
4667
4750
  ];
4668
4751
 
4669
4752
  private static __ATN: antlr.ATN;
@@ -8499,18 +8582,21 @@ export class ArrayTypeContext extends antlr.ParserRuleContext {
8499
8582
  public primitiveType(): PrimitiveTypeContext | null {
8500
8583
  return this.getRuleContext(0, PrimitiveTypeContext);
8501
8584
  }
8502
- public LBRACKET(): antlr.TerminalNode {
8503
- return this.getToken(CNextParser.LBRACKET, 0)!;
8504
- }
8505
- public expression(): ExpressionContext {
8506
- return this.getRuleContext(0, ExpressionContext)!;
8507
- }
8508
- public RBRACKET(): antlr.TerminalNode {
8509
- return this.getToken(CNextParser.RBRACKET, 0)!;
8585
+ public arrayTypeDimension(): ArrayTypeDimensionContext[];
8586
+ public arrayTypeDimension(i: number): ArrayTypeDimensionContext | null;
8587
+ public arrayTypeDimension(i?: number): ArrayTypeDimensionContext[] | ArrayTypeDimensionContext | null {
8588
+ if (i === undefined) {
8589
+ return this.getRuleContexts(ArrayTypeDimensionContext);
8590
+ }
8591
+
8592
+ return this.getRuleContext(i, ArrayTypeDimensionContext);
8510
8593
  }
8511
8594
  public userType(): UserTypeContext | null {
8512
8595
  return this.getRuleContext(0, UserTypeContext);
8513
8596
  }
8597
+ public stringType(): StringTypeContext | null {
8598
+ return this.getRuleContext(0, StringTypeContext);
8599
+ }
8514
8600
  public override get ruleIndex(): number {
8515
8601
  return CNextParser.RULE_arrayType;
8516
8602
  }
@@ -8534,6 +8620,42 @@ export class ArrayTypeContext extends antlr.ParserRuleContext {
8534
8620
  }
8535
8621
 
8536
8622
 
8623
+ export class ArrayTypeDimensionContext extends antlr.ParserRuleContext {
8624
+ public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
8625
+ super(parent, invokingState);
8626
+ }
8627
+ public LBRACKET(): antlr.TerminalNode {
8628
+ return this.getToken(CNextParser.LBRACKET, 0)!;
8629
+ }
8630
+ public RBRACKET(): antlr.TerminalNode {
8631
+ return this.getToken(CNextParser.RBRACKET, 0)!;
8632
+ }
8633
+ public expression(): ExpressionContext | null {
8634
+ return this.getRuleContext(0, ExpressionContext);
8635
+ }
8636
+ public override get ruleIndex(): number {
8637
+ return CNextParser.RULE_arrayTypeDimension;
8638
+ }
8639
+ public override enterRule(listener: CNextListener): void {
8640
+ if(listener.enterArrayTypeDimension) {
8641
+ listener.enterArrayTypeDimension(this);
8642
+ }
8643
+ }
8644
+ public override exitRule(listener: CNextListener): void {
8645
+ if(listener.exitArrayTypeDimension) {
8646
+ listener.exitArrayTypeDimension(this);
8647
+ }
8648
+ }
8649
+ public override accept<Result>(visitor: CNextVisitor<Result>): Result | null {
8650
+ if (visitor.visitArrayTypeDimension) {
8651
+ return visitor.visitArrayTypeDimension(this);
8652
+ } else {
8653
+ return visitor.visitChildren(this);
8654
+ }
8655
+ }
8656
+ }
8657
+
8658
+
8537
8659
  export class LiteralContext extends antlr.ParserRuleContext {
8538
8660
  public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) {
8539
8661
  super(parent, invokingState);