@danielx/civet 0.4.0 → 0.4.1

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.
package/dist/browser.js CHANGED
@@ -409,9 +409,13 @@ var Civet = (() => {
409
409
  TopLevelStatement,
410
410
  Expression,
411
411
  Arguments,
412
+ ArgumentsWithTrailingCallExpressions,
412
413
  ArgumentList,
413
414
  NestedArgumentList,
414
415
  NestedArgument,
416
+ ImplicitApplication,
417
+ ApplicationStart,
418
+ IndentedApplicationAllowed,
415
419
  CommaExpression,
416
420
  BinaryOpExpression,
417
421
  UnaryExpression,
@@ -445,8 +449,6 @@ var Civet = (() => {
445
449
  CallExpressionRest,
446
450
  OptionalShorthand,
447
451
  NonNullAssertion,
448
- SpacedApplication,
449
- ApplicationStart,
450
452
  AdditionalReservedWords,
451
453
  MemberExpression,
452
454
  MemberExpressionRest,
@@ -460,8 +462,12 @@ var Civet = (() => {
460
462
  BindingPattern,
461
463
  ObjectBindingPattern,
462
464
  ArrayBindingPattern,
465
+ NestedBindingProperties,
466
+ NestedBindingProperty,
463
467
  BindingProperty,
464
468
  BindingRestProperty,
469
+ NestedBindingElements,
470
+ NestedBindingElement,
465
471
  BindingElement,
466
472
  BindingRestElement,
467
473
  FunctionDeclaration,
@@ -490,6 +496,7 @@ var Civet = (() => {
490
496
  ArrayElementExpression,
491
497
  Elision,
492
498
  ObjectLiteral,
499
+ NestedObjectLiteral,
493
500
  NestedPropertyDefinitions,
494
501
  NestedPropertyDefinition,
495
502
  ObjectPropertyDelimiter,
@@ -501,12 +508,6 @@ var Civet = (() => {
501
508
  MethodSignature,
502
509
  ClassElementName,
503
510
  PrivateIdentifier,
504
- GeneratorMethod,
505
- GeneratorBody,
506
- AsyncMethod,
507
- AsyncFunctionBody,
508
- AsyncGeneratorMethod,
509
- AsyncGeneratorBody,
510
511
  AssignmentOp,
511
512
  AssignmentOpSymbol,
512
513
  BinaryOp,
@@ -527,7 +528,6 @@ var Civet = (() => {
527
528
  ForStatement,
528
529
  ForInOfStatement,
529
530
  ForDeclaration,
530
- LetOrConst,
531
531
  ForBinding,
532
532
  SwitchStatement,
533
533
  CaseBlock,
@@ -541,6 +541,8 @@ var Civet = (() => {
541
541
  Finally,
542
542
  CatchParameter,
543
543
  Condition,
544
+ ExpressionWithIndentedApplicationSuppressed,
545
+ SuppressIndentedApplication,
544
546
  ExpressionStatement,
545
547
  KeywordStatement,
546
548
  MaybeNestedExpression,
@@ -621,9 +623,11 @@ var Civet = (() => {
621
623
  For,
622
624
  From,
623
625
  Function,
626
+ GetOrSet,
624
627
  If,
625
628
  Import,
626
629
  In,
630
+ LetOrConst,
627
631
  Loop,
628
632
  New,
629
633
  Of,
@@ -712,38 +716,41 @@ var Civet = (() => {
712
716
  InsertBreak,
713
717
  Init,
714
718
  Indent,
719
+ TrackIndent,
720
+ RestoreIndent,
721
+ Samedent,
722
+ IndentedFurther,
715
723
  PushIndent,
716
724
  PopIndent,
717
- Nested,
718
- NestedFurther
719
- });
720
- var $L0 = $L("++");
721
- var $L1 = $L("--");
722
- var $L2 = $L("yield");
723
- var $L3 = $L("*");
724
- var $L4 = $L("=>");
725
- var $L5 = $L("<");
726
- var $L6 = $L("extends");
727
- var $L7 = $L("this");
728
- var $L8 = $L("#");
729
- var $L9 = $L("@");
730
- var $L10 = $L("super");
731
- var $L11 = $L("import");
732
- var $L12 = $L("!");
733
- var $L13 = $L("::");
734
- var $L14 = $L("super[");
735
- var $L15 = $L("import.meta");
736
- var $L16 = $L("");
737
- var $L17 = $L(")");
738
- var $L18 = $L("...");
739
- var $L19 = $L("->");
740
- var $L20 = $L("null");
741
- var $L21 = $L("true");
742
- var $L22 = $L("false");
743
- var $L23 = $L(",");
744
- var $L24 = $L("]");
745
- var $L25 = $L("get");
746
- var $L26 = $L("set");
725
+ Nested
726
+ });
727
+ var $L0 = $L("`");
728
+ var $L1 = $L("");
729
+ var $L2 = $L("++");
730
+ var $L3 = $L("--");
731
+ var $L4 = $L("yield");
732
+ var $L5 = $L("*");
733
+ var $L6 = $L("=>");
734
+ var $L7 = $L("<");
735
+ var $L8 = $L("extends");
736
+ var $L9 = $L("this");
737
+ var $L10 = $L("#");
738
+ var $L11 = $L("@");
739
+ var $L12 = $L("super");
740
+ var $L13 = $L("import");
741
+ var $L14 = $L("!");
742
+ var $L15 = $L("::");
743
+ var $L16 = $L("super[");
744
+ var $L17 = $L("import.meta");
745
+ var $L18 = $L(")");
746
+ var $L19 = $L("...");
747
+ var $L20 = $L("->");
748
+ var $L21 = $L("null");
749
+ var $L22 = $L("true");
750
+ var $L23 = $L("false");
751
+ var $L24 = $L(",");
752
+ var $L25 = $L("]");
753
+ var $L26 = $L("}");
747
754
  var $L27 = $L("**=");
748
755
  var $L28 = $L("*=");
749
756
  var $L29 = $L("/=");
@@ -794,38 +801,38 @@ var Civet = (() => {
794
801
  var $L74 = $L("do");
795
802
  var $L75 = $L("while");
796
803
  var $L76 = $L("until");
797
- var $L77 = $L("let");
798
- var $L78 = $L("const");
799
- var $L79 = $L("case");
800
- var $L80 = $L("default");
801
- var $L81 = $L("finally");
802
- var $L82 = $L("break");
803
- var $L83 = $L("continue");
804
- var $L84 = $L("debugger");
805
- var $L85 = $L("throw");
806
- var $L86 = $L("import type");
807
- var $L87 = $L(":=");
808
- var $L88 = $L('"');
809
- var $L89 = $L("'");
810
- var $L90 = $L("`");
811
- var $L91 = $L("${");
812
- var $L92 = $L("/*");
813
- var $L93 = $L("*/");
814
- var $L94 = $L("###");
815
- var $L95 = $L("as");
816
- var $L96 = $L("async");
817
- var $L97 = $L("await");
818
- var $L98 = $L("catch");
819
- var $L99 = $L("class");
820
- var $L100 = $L("}");
821
- var $L101 = $L(":");
822
- var $L102 = $L(".");
823
- var $L103 = $L("else");
824
- var $L104 = $L("export");
825
- var $L105 = $L("for");
826
- var $L106 = $L("from");
827
- var $L107 = $L("function");
828
- var $L108 = $L("if");
804
+ var $L77 = $L("case");
805
+ var $L78 = $L("default");
806
+ var $L79 = $L("finally");
807
+ var $L80 = $L("break");
808
+ var $L81 = $L("continue");
809
+ var $L82 = $L("debugger");
810
+ var $L83 = $L("throw");
811
+ var $L84 = $L("import type");
812
+ var $L85 = $L(":=");
813
+ var $L86 = $L('"');
814
+ var $L87 = $L("'");
815
+ var $L88 = $L("${");
816
+ var $L89 = $L("/*");
817
+ var $L90 = $L("*/");
818
+ var $L91 = $L("###");
819
+ var $L92 = $L("as");
820
+ var $L93 = $L("async");
821
+ var $L94 = $L("await");
822
+ var $L95 = $L("catch");
823
+ var $L96 = $L("class");
824
+ var $L97 = $L(":");
825
+ var $L98 = $L(".");
826
+ var $L99 = $L("else");
827
+ var $L100 = $L("export");
828
+ var $L101 = $L("for");
829
+ var $L102 = $L("from");
830
+ var $L103 = $L("function");
831
+ var $L104 = $L("get");
832
+ var $L105 = $L("set");
833
+ var $L106 = $L("if");
834
+ var $L107 = $L("let");
835
+ var $L108 = $L("const");
829
836
  var $L109 = $L("loop");
830
837
  var $L110 = $L("new");
831
838
  var $L111 = $L("of");
@@ -926,17 +933,30 @@ var Civet = (() => {
926
933
  }
927
934
  }
928
935
  var Arguments$0 = $S(OpenParen, $E(ArgumentList), $E($S(__, Comma)), __, CloseParen);
936
+ var Arguments$1 = ImplicitApplication;
929
937
  function Arguments(state) {
938
+ if (state.tokenize) {
939
+ return $TOKEN("Arguments", state, Arguments$0(state) || Arguments$1(state));
940
+ } else {
941
+ return Arguments$0(state) || Arguments$1(state);
942
+ }
943
+ }
944
+ var ArgumentsWithTrailingCallExpressions$0 = $TS($S(TrackIndent, $C($S(Arguments, $Q($S($Y(EOS), Samedent, $N($EXPECT($L0, fail, 'ArgumentsWithTrailingCallExpressions "`"')), CallExpressionRest)), RestoreIndent), RestoreIndent)), function($skip, $loc, $0, $1, $2) {
945
+ if (!$2)
946
+ return $skip;
947
+ return $2;
948
+ });
949
+ function ArgumentsWithTrailingCallExpressions(state) {
930
950
  if (state.verbose)
931
- console.log("ENTER:", "Arguments");
951
+ console.log("ENTER:", "ArgumentsWithTrailingCallExpressions");
932
952
  if (state.tokenize) {
933
- return $TOKEN("Arguments", state, Arguments$0(state));
953
+ return $TOKEN("ArgumentsWithTrailingCallExpressions", state, ArgumentsWithTrailingCallExpressions$0(state));
934
954
  } else {
935
- return Arguments$0(state);
955
+ return ArgumentsWithTrailingCallExpressions$0(state);
936
956
  }
937
957
  }
938
958
  var ArgumentList$0 = $S($Y(EOS), NestedArgumentList);
939
- var ArgumentList$1 = $S(__, Expression, $Q(CommaExpression));
959
+ var ArgumentList$1 = $S(Expression, $Q(CommaExpression));
940
960
  function ArgumentList(state) {
941
961
  if (state.tokenize) {
942
962
  return $TOKEN("ArgumentList", state, ArgumentList$0(state) || ArgumentList$1(state));
@@ -969,7 +989,44 @@ var Civet = (() => {
969
989
  return NestedArgument$0(state);
970
990
  }
971
991
  }
972
- var CommaExpression$0 = $S(__, Comma, __, Expression);
992
+ var ImplicitApplication$0 = $S(ApplicationStart, ArgumentList, InsertCloseParen);
993
+ function ImplicitApplication(state) {
994
+ if (state.verbose)
995
+ console.log("ENTER:", "ImplicitApplication");
996
+ if (state.tokenize) {
997
+ return $TOKEN("ImplicitApplication", state, ImplicitApplication$0(state));
998
+ } else {
999
+ return ImplicitApplication$0(state);
1000
+ }
1001
+ }
1002
+ var ApplicationStart$0 = $TS($S($N(EOS), _, $N(AdditionalReservedWords)), function($skip, $loc, $0, $1, $2, $3) {
1003
+ var spacing = $2;
1004
+ spacing[0].token = spacing[0].token.replace(/^ ?/, "(");
1005
+ return spacing;
1006
+ });
1007
+ var ApplicationStart$1 = $S(IndentedApplicationAllowed, $Y(NestedObjectLiteral), InsertOpenParen);
1008
+ function ApplicationStart(state) {
1009
+ if (state.tokenize) {
1010
+ return $TOKEN("ApplicationStart", state, ApplicationStart$0(state) || ApplicationStart$1(state));
1011
+ } else {
1012
+ return ApplicationStart$0(state) || ApplicationStart$1(state);
1013
+ }
1014
+ }
1015
+ var IndentedApplicationAllowed$0 = $TV($EXPECT($L1, fail, 'IndentedApplicationAllowed ""'), function($skip, $loc, $0, $1) {
1016
+ if (module.suppressIndentedApplication)
1017
+ return $skip;
1018
+ return;
1019
+ });
1020
+ function IndentedApplicationAllowed(state) {
1021
+ if (state.verbose)
1022
+ console.log("ENTER:", "IndentedApplicationAllowed");
1023
+ if (state.tokenize) {
1024
+ return $TOKEN("IndentedApplicationAllowed", state, IndentedApplicationAllowed$0(state));
1025
+ } else {
1026
+ return IndentedApplicationAllowed$0(state);
1027
+ }
1028
+ }
1029
+ var CommaExpression$0 = $S(__, Comma, Expression);
973
1030
  function CommaExpression(state) {
974
1031
  if (state.verbose)
975
1032
  console.log("ENTER:", "CommaExpression");
@@ -1027,7 +1084,7 @@ var Civet = (() => {
1027
1084
  return UpdateExpression$0(state) || UpdateExpression$1(state);
1028
1085
  }
1029
1086
  }
1030
- var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L0, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L1, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
1087
+ var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L2, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L3, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
1031
1088
  return { $loc, token: $1 };
1032
1089
  });
1033
1090
  function UpdateExpressionSymbol(state) {
@@ -1070,7 +1127,7 @@ var Civet = (() => {
1070
1127
  return AwaitExpression$0(state);
1071
1128
  }
1072
1129
  }
1073
- var YieldExpression$0 = $S($EXPECT($L2, fail, 'YieldExpression "yield"'), NonIdContinue, $E($S($Q(TrailingComment), $EXPECT($L3, fail, 'YieldExpression "*"'))), AssignmentExpression);
1130
+ var YieldExpression$0 = $S($EXPECT($L4, fail, 'YieldExpression "yield"'), NonIdContinue, $E($S($Q(TrailingComment), $EXPECT($L5, fail, 'YieldExpression "*"'))), AssignmentExpression);
1074
1131
  function YieldExpression(state) {
1075
1132
  if (state.verbose)
1076
1133
  console.log("ENTER:", "YieldExpression");
@@ -1089,7 +1146,7 @@ var Civet = (() => {
1089
1146
  return ArrowFunction$0(state) || ArrowFunction$1(state);
1090
1147
  }
1091
1148
  }
1092
- var FatArrow$0 = $TS($S(__, $EXPECT($L4, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1149
+ var FatArrow$0 = $TS($S(__, $EXPECT($L6, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1093
1150
  var ws = $1;
1094
1151
  if (!ws.length)
1095
1152
  return " =>";
@@ -1105,15 +1162,7 @@ var Civet = (() => {
1105
1162
  }
1106
1163
  }
1107
1164
  var FatArrowBody$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1108
- var FatArrowBody$1 = $TS($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1109
- var eos = $2;
1110
- var exps = $3;
1111
- if (exps.length == 1) {
1112
- exps[0].pop();
1113
- return [eos, exps];
1114
- }
1115
- return $0;
1116
- });
1165
+ var FatArrowBody$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1117
1166
  var FatArrowBody$2 = AssignmentExpression;
1118
1167
  var FatArrowBody$3 = $S(__, AssignmentExpression);
1119
1168
  var FatArrowBody$4 = $S(InsertOpenBrace, InsertCloseBrace);
@@ -1153,7 +1202,7 @@ var Civet = (() => {
1153
1202
  var PrimaryExpression$6 = ClassExpression;
1154
1203
  var PrimaryExpression$7 = RegularExpressionLiteral;
1155
1204
  var PrimaryExpression$8 = TemplateLiteral;
1156
- var PrimaryExpression$9 = $S(OpenParen, __, Expression, __, CloseParen);
1205
+ var PrimaryExpression$9 = $S(OpenParen, Expression, __, CloseParen);
1157
1206
  var PrimaryExpression$10 = JSXElement;
1158
1207
  var PrimaryExpression$11 = JSXFragment;
1159
1208
  function PrimaryExpression(state) {
@@ -1173,7 +1222,7 @@ var Civet = (() => {
1173
1222
  return ClassDeclaration$0(state);
1174
1223
  }
1175
1224
  }
1176
- var ClassExpression$0 = $S(Class, $E($S(__, BindingIdentifier)), $E($S(__, ClassHeritage)), ClassBody);
1225
+ var ClassExpression$0 = $S(Class, $E(BindingIdentifier), $E($S(__, ClassHeritage)), ClassBody);
1177
1226
  function ClassExpression(state) {
1178
1227
  if (state.verbose)
1179
1228
  console.log("ENTER:", "ClassExpression");
@@ -1193,10 +1242,10 @@ var Civet = (() => {
1193
1242
  return ClassHeritage$0(state);
1194
1243
  }
1195
1244
  }
1196
- var ExtendsToken$0 = $TV($EXPECT($L5, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1245
+ var ExtendsToken$0 = $TV($EXPECT($L7, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1197
1246
  return { $loc, token: "extends" };
1198
1247
  });
1199
- var ExtendsToken$1 = $TV($EXPECT($L6, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1248
+ var ExtendsToken$1 = $TV($EXPECT($L8, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1200
1249
  return { $loc, token: $1 };
1201
1250
  });
1202
1251
  function ExtendsToken(state) {
@@ -1266,11 +1315,11 @@ var Civet = (() => {
1266
1315
  return FieldDefinition$0(state) || FieldDefinition$1(state);
1267
1316
  }
1268
1317
  }
1269
- var This$0 = $TV($EXPECT($L7, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1318
+ var This$0 = $TV($EXPECT($L9, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1270
1319
  return { $loc, token: $1 };
1271
1320
  });
1272
- var This$1 = $S(AtAccessor, $S($E($EXPECT($L8, fail, 'This "#"')), IdentifierName));
1273
- var This$2 = $TV($EXPECT($L9, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1321
+ var This$1 = $S(AtAccessor, $S($E($EXPECT($L10, fail, 'This "#"')), IdentifierName));
1322
+ var This$2 = $TV($EXPECT($L11, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1274
1323
  return { $loc, token: "this" };
1275
1324
  });
1276
1325
  function This(state) {
@@ -1280,7 +1329,7 @@ var Civet = (() => {
1280
1329
  return This$0(state) || This$1(state) || This$2(state);
1281
1330
  }
1282
1331
  }
1283
- var AtAccessor$0 = $TV($EXPECT($L9, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1332
+ var AtAccessor$0 = $TV($EXPECT($L11, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1284
1333
  return { $loc, token: "this." };
1285
1334
  });
1286
1335
  function AtAccessor(state) {
@@ -1311,8 +1360,8 @@ var Civet = (() => {
1311
1360
  return NewExpression$0(state);
1312
1361
  }
1313
1362
  }
1314
- var CallExpression$0 = $S($EXPECT($L10, fail, 'CallExpression "super"'), __, Arguments);
1315
- var CallExpression$1 = $S($EXPECT($L11, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1363
+ var CallExpression$0 = $S($EXPECT($L12, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1364
+ var CallExpression$1 = $S($EXPECT($L13, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1316
1365
  var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest));
1317
1366
  function CallExpression(state) {
1318
1367
  if (state.tokenize) {
@@ -1321,15 +1370,14 @@ var Civet = (() => {
1321
1370
  return CallExpression$0(state) || CallExpression$1(state) || CallExpression$2(state);
1322
1371
  }
1323
1372
  }
1324
- var CallExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), Arguments);
1325
- var CallExpressionRest$1 = MemberExpressionRest;
1326
- var CallExpressionRest$2 = SpacedApplication;
1327
- var CallExpressionRest$3 = TemplateLiteral;
1373
+ var CallExpressionRest$0 = MemberExpressionRest;
1374
+ var CallExpressionRest$1 = TemplateLiteral;
1375
+ var CallExpressionRest$2 = $S($E($C(OptionalShorthand, NonNullAssertion)), ArgumentsWithTrailingCallExpressions);
1328
1376
  function CallExpressionRest(state) {
1329
1377
  if (state.tokenize) {
1330
- return $TOKEN("CallExpressionRest", state, CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state));
1378
+ return $TOKEN("CallExpressionRest", state, CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state));
1331
1379
  } else {
1332
- return CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state);
1380
+ return CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state);
1333
1381
  }
1334
1382
  }
1335
1383
  var OptionalShorthand$0 = $S(QuestionMark, $C(Dot, InsertDot));
@@ -1342,7 +1390,7 @@ var Civet = (() => {
1342
1390
  return OptionalShorthand$0(state);
1343
1391
  }
1344
1392
  }
1345
- var NonNullAssertion$0 = $T($EXPECT($L12, fail, 'NonNullAssertion "!"'), function(value) {
1393
+ var NonNullAssertion$0 = $T($EXPECT($L14, fail, 'NonNullAssertion "!"'), function(value) {
1346
1394
  return { "ts": true, "children": value };
1347
1395
  });
1348
1396
  function NonNullAssertion(state) {
@@ -1354,31 +1402,6 @@ var Civet = (() => {
1354
1402
  return NonNullAssertion$0(state);
1355
1403
  }
1356
1404
  }
1357
- var SpacedApplication$0 = $S(ApplicationStart, ArgumentList, InsertCloseParen, $Q($S($Y(EOS), Nested, CallExpressionRest)));
1358
- function SpacedApplication(state) {
1359
- if (state.verbose)
1360
- console.log("ENTER:", "SpacedApplication");
1361
- if (state.tokenize) {
1362
- return $TOKEN("SpacedApplication", state, SpacedApplication$0(state));
1363
- } else {
1364
- return SpacedApplication$0(state);
1365
- }
1366
- }
1367
- var ApplicationStart$0 = $TS($S($E(OptionalShorthand), $N(EOS), _, $N(AdditionalReservedWords)), function($skip, $loc, $0, $1, $2, $3, $4) {
1368
- var opt = $1;
1369
- var spacing = $3;
1370
- spacing[0].token = spacing[0].token.replace(/^ ?/, "(");
1371
- return [opt, spacing];
1372
- });
1373
- function ApplicationStart(state) {
1374
- if (state.verbose)
1375
- console.log("ENTER:", "ApplicationStart");
1376
- if (state.tokenize) {
1377
- return $TOKEN("ApplicationStart", state, ApplicationStart$0(state));
1378
- } else {
1379
- return ApplicationStart$0(state);
1380
- }
1381
- }
1382
1405
  var AdditionalReservedWords$0 = $R$0($EXPECT($R0, fail, "AdditionalReservedWords /(of)(?!\\p{ID_Continue})/"));
1383
1406
  function AdditionalReservedWords(state) {
1384
1407
  if (state.verbose)
@@ -1399,10 +1422,10 @@ var Civet = (() => {
1399
1422
  return MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state);
1400
1423
  }
1401
1424
  }
1402
- var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), OpenBracket, __, Expression, __, CloseBracket);
1403
- var MemberExpressionRest$1 = $S($E($S(EOS, NestedFurther)), PropertyAccess);
1404
- var MemberExpressionRest$2 = $TS($S($EXPECT($L13, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2) {
1405
- var id = $2;
1425
+ var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), OpenBracket, Expression, __, CloseBracket);
1426
+ var MemberExpressionRest$1 = $S($E($S($Y(EOS), IndentedFurther)), PropertyAccess);
1427
+ var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L15, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1428
+ var id = $3;
1406
1429
  if (id)
1407
1430
  return [".prototype.", id];
1408
1431
  return ".prototype";
@@ -1425,7 +1448,7 @@ var Civet = (() => {
1425
1448
  return PropertyAccess$0(state);
1426
1449
  }
1427
1450
  }
1428
- var SuperProperty$0 = $S($EXPECT($L14, fail, 'SuperProperty "super["'), __, Expression, __, CloseBracket);
1451
+ var SuperProperty$0 = $S($EXPECT($L16, fail, 'SuperProperty "super["'), Expression, __, CloseBracket);
1429
1452
  function SuperProperty(state) {
1430
1453
  if (state.verbose)
1431
1454
  console.log("ENTER:", "SuperProperty");
@@ -1436,7 +1459,7 @@ var Civet = (() => {
1436
1459
  }
1437
1460
  }
1438
1461
  var MetaProperty$0 = $S(New, Dot, Target);
1439
- var MetaProperty$1 = $TV($EXPECT($L15, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1462
+ var MetaProperty$1 = $TV($EXPECT($L17, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1440
1463
  return { $loc, token: $1 };
1441
1464
  });
1442
1465
  function MetaProperty(state) {
@@ -1447,7 +1470,7 @@ var Civet = (() => {
1447
1470
  }
1448
1471
  }
1449
1472
  var Parameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1450
- var Parameters$1 = $TV($EXPECT($L16, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1473
+ var Parameters$1 = $TV($EXPECT($L1, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1451
1474
  return { $loc, token: "()" };
1452
1475
  });
1453
1476
  function Parameters(state) {
@@ -1468,8 +1491,8 @@ var Civet = (() => {
1468
1491
  }
1469
1492
  }
1470
1493
  var ParameterElementDelimiter$0 = $S($Q(_), Comma);
1471
- var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L17, fail, 'ParameterElementDelimiter ")"')));
1472
- var ParameterElementDelimiter$2 = $TV($Y($S(__, $EXPECT($L17, fail, 'ParameterElementDelimiter ")"'))), function($skip, $loc, $0, $1) {
1494
+ var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L18, fail, 'ParameterElementDelimiter ")"')));
1495
+ var ParameterElementDelimiter$2 = $TV($Y($S(__, $EXPECT($L18, fail, 'ParameterElementDelimiter ")"'))), function($skip, $loc, $0, $1) {
1473
1496
  return { $loc, token: "," };
1474
1497
  });
1475
1498
  var ParameterElementDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
@@ -1482,7 +1505,7 @@ var Civet = (() => {
1482
1505
  return ParameterElementDelimiter$0(state) || ParameterElementDelimiter$1(state) || ParameterElementDelimiter$2(state) || ParameterElementDelimiter$3(state);
1483
1506
  }
1484
1507
  }
1485
- var BindingIdentifier$0 = Identifier;
1508
+ var BindingIdentifier$0 = $S(__, Identifier);
1486
1509
  function BindingIdentifier(state) {
1487
1510
  if (state.verbose)
1488
1511
  console.log("ENTER:", "BindingIdentifier");
@@ -1492,8 +1515,8 @@ var Civet = (() => {
1492
1515
  return BindingIdentifier$0(state);
1493
1516
  }
1494
1517
  }
1495
- var BindingPattern$0 = ObjectBindingPattern;
1496
- var BindingPattern$1 = ArrayBindingPattern;
1518
+ var BindingPattern$0 = $S(__, ObjectBindingPattern);
1519
+ var BindingPattern$1 = $S(__, ArrayBindingPattern);
1497
1520
  function BindingPattern(state) {
1498
1521
  if (state.tokenize) {
1499
1522
  return $TOKEN("BindingPattern", state, BindingPattern$0(state) || BindingPattern$1(state));
@@ -1501,28 +1524,54 @@ var Civet = (() => {
1501
1524
  return BindingPattern$0(state) || BindingPattern$1(state);
1502
1525
  }
1503
1526
  }
1504
- var ObjectBindingPattern$0 = $S(OpenBrace, $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, CloseBrace);
1527
+ var ObjectBindingPattern$0 = $S(OpenBrace, $Y(EOS), NestedBindingProperties, __, CloseBrace);
1528
+ var ObjectBindingPattern$1 = $S(OpenBrace, $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, CloseBrace);
1505
1529
  function ObjectBindingPattern(state) {
1506
- if (state.verbose)
1507
- console.log("ENTER:", "ObjectBindingPattern");
1508
1530
  if (state.tokenize) {
1509
- return $TOKEN("ObjectBindingPattern", state, ObjectBindingPattern$0(state));
1531
+ return $TOKEN("ObjectBindingPattern", state, ObjectBindingPattern$0(state) || ObjectBindingPattern$1(state));
1510
1532
  } else {
1511
- return ObjectBindingPattern$0(state);
1533
+ return ObjectBindingPattern$0(state) || ObjectBindingPattern$1(state);
1512
1534
  }
1513
1535
  }
1514
- var ArrayBindingPattern$0 = $S(OpenBracket, $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, CloseBracket);
1536
+ var ArrayBindingPattern$0 = $S(OpenBracket, $Y(EOS), NestedBindingElements, __, CloseBracket);
1537
+ var ArrayBindingPattern$1 = $S(OpenBracket, $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, CloseBracket);
1515
1538
  function ArrayBindingPattern(state) {
1539
+ if (state.tokenize) {
1540
+ return $TOKEN("ArrayBindingPattern", state, ArrayBindingPattern$0(state) || ArrayBindingPattern$1(state));
1541
+ } else {
1542
+ return ArrayBindingPattern$0(state) || ArrayBindingPattern$1(state);
1543
+ }
1544
+ }
1545
+ var NestedBindingProperties$0 = $TS($S(PushIndent, $Q(NestedBindingProperty), $E($S(Nested, BindingRestProperty)), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
1546
+ var props = $2;
1547
+ var rest = $3;
1548
+ if (!props.length)
1549
+ return $skip;
1550
+ if (rest)
1551
+ props.push(rest);
1552
+ return props;
1553
+ });
1554
+ function NestedBindingProperties(state) {
1555
+ if (state.verbose)
1556
+ console.log("ENTER:", "NestedBindingProperties");
1557
+ if (state.tokenize) {
1558
+ return $TOKEN("NestedBindingProperties", state, NestedBindingProperties$0(state));
1559
+ } else {
1560
+ return NestedBindingProperties$0(state);
1561
+ }
1562
+ }
1563
+ var NestedBindingProperty$0 = $S(Nested, BindingProperty);
1564
+ function NestedBindingProperty(state) {
1516
1565
  if (state.verbose)
1517
- console.log("ENTER:", "ArrayBindingPattern");
1566
+ console.log("ENTER:", "NestedBindingProperty");
1518
1567
  if (state.tokenize) {
1519
- return $TOKEN("ArrayBindingPattern", state, ArrayBindingPattern$0(state));
1568
+ return $TOKEN("NestedBindingProperty", state, NestedBindingProperty$0(state));
1520
1569
  } else {
1521
- return ArrayBindingPattern$0(state);
1570
+ return NestedBindingProperty$0(state);
1522
1571
  }
1523
1572
  }
1524
- var BindingProperty$0 = $S(__, PropertyName, __, Colon, __, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1525
- var BindingProperty$1 = $S(__, BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter);
1573
+ var BindingProperty$0 = $S(__, PropertyName, __, Colon, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1574
+ var BindingProperty$1 = $S(BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter);
1526
1575
  function BindingProperty(state) {
1527
1576
  if (state.tokenize) {
1528
1577
  return $TOKEN("BindingProperty", state, BindingProperty$0(state) || BindingProperty$1(state));
@@ -1530,7 +1579,7 @@ var Civet = (() => {
1530
1579
  return BindingProperty$0(state) || BindingProperty$1(state);
1531
1580
  }
1532
1581
  }
1533
- var BindingRestProperty$0 = $S($EXPECT($L18, fail, 'BindingRestProperty "..."'), __, BindingIdentifier);
1582
+ var BindingRestProperty$0 = $S($EXPECT($L19, fail, 'BindingRestProperty "..."'), BindingIdentifier);
1534
1583
  function BindingRestProperty(state) {
1535
1584
  if (state.verbose)
1536
1585
  console.log("ENTER:", "BindingRestProperty");
@@ -1540,6 +1589,34 @@ var Civet = (() => {
1540
1589
  return BindingRestProperty$0(state);
1541
1590
  }
1542
1591
  }
1592
+ var NestedBindingElements$0 = $TS($S(PushIndent, $Q(NestedBindingElement), $E($S(Nested, BindingRestElement)), PopIndent), function($skip, $loc, $0, $1, $2, $3, $4) {
1593
+ var props = $2;
1594
+ var rest = $3;
1595
+ if (!props.length)
1596
+ return $skip;
1597
+ if (rest)
1598
+ props.push(rest);
1599
+ return props;
1600
+ });
1601
+ function NestedBindingElements(state) {
1602
+ if (state.verbose)
1603
+ console.log("ENTER:", "NestedBindingElements");
1604
+ if (state.tokenize) {
1605
+ return $TOKEN("NestedBindingElements", state, NestedBindingElements$0(state));
1606
+ } else {
1607
+ return NestedBindingElements$0(state);
1608
+ }
1609
+ }
1610
+ var NestedBindingElement$0 = $S(Nested, BindingElement);
1611
+ function NestedBindingElement(state) {
1612
+ if (state.verbose)
1613
+ console.log("ENTER:", "NestedBindingElement");
1614
+ if (state.tokenize) {
1615
+ return $TOKEN("NestedBindingElement", state, NestedBindingElement$0(state));
1616
+ } else {
1617
+ return NestedBindingElement$0(state);
1618
+ }
1619
+ }
1543
1620
  var BindingElement$0 = $S(__, $C(BindingIdentifier, BindingPattern), $E(Initializer), ArrayElementDelimiter);
1544
1621
  function BindingElement(state) {
1545
1622
  if (state.verbose)
@@ -1550,7 +1627,7 @@ var Civet = (() => {
1550
1627
  return BindingElement$0(state);
1551
1628
  }
1552
1629
  }
1553
- var BindingRestElement$0 = $S($EXPECT($L18, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1630
+ var BindingRestElement$0 = $S($EXPECT($L19, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1554
1631
  function BindingRestElement(state) {
1555
1632
  if (state.verbose)
1556
1633
  console.log("ENTER:", "BindingRestElement");
@@ -1571,7 +1648,7 @@ var Civet = (() => {
1571
1648
  }
1572
1649
  }
1573
1650
  var FunctionExpression$0 = ThinArrowFunction;
1574
- var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S($EXPECT($L3, fail, 'FunctionExpression "*"'), __)), $E($S(__, BindingIdentifier)), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1651
+ var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S($EXPECT($L5, fail, 'FunctionExpression "*"'), __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1575
1652
  function FunctionExpression(state) {
1576
1653
  if (state.tokenize) {
1577
1654
  return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state));
@@ -1600,7 +1677,7 @@ var Civet = (() => {
1600
1677
  return ThinArrowFunction$0(state);
1601
1678
  }
1602
1679
  }
1603
- var Arrow$0 = $TV($EXPECT($L19, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1680
+ var Arrow$0 = $TV($EXPECT($L20, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1604
1681
  return { $loc, token: $1 };
1605
1682
  });
1606
1683
  function Arrow(state) {
@@ -1693,7 +1770,7 @@ var Civet = (() => {
1693
1770
  return Literal$0(state) || Literal$1(state) || Literal$2(state) || Literal$3(state);
1694
1771
  }
1695
1772
  }
1696
- var NullLiteral$0 = $TV($EXPECT($L20, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1773
+ var NullLiteral$0 = $TV($EXPECT($L21, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1697
1774
  return { $loc, token: $1 };
1698
1775
  });
1699
1776
  function NullLiteral(state) {
@@ -1705,7 +1782,7 @@ var Civet = (() => {
1705
1782
  return NullLiteral$0(state);
1706
1783
  }
1707
1784
  }
1708
- var BooleanLiteral$0 = $TV($C($EXPECT($L21, fail, 'BooleanLiteral "true"'), $EXPECT($L22, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1785
+ var BooleanLiteral$0 = $TV($C($EXPECT($L22, fail, 'BooleanLiteral "true"'), $EXPECT($L23, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1709
1786
  return { $loc, token: $1 };
1710
1787
  });
1711
1788
  function BooleanLiteral(state) {
@@ -1717,7 +1794,7 @@ var Civet = (() => {
1717
1794
  return BooleanLiteral$0(state);
1718
1795
  }
1719
1796
  }
1720
- var Comma$0 = $TV($EXPECT($L23, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
1797
+ var Comma$0 = $TV($EXPECT($L24, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
1721
1798
  return { $loc, token: $1 };
1722
1799
  });
1723
1800
  function Comma(state) {
@@ -1799,7 +1876,7 @@ var Civet = (() => {
1799
1876
  }
1800
1877
  }
1801
1878
  var ArrayElementDelimiter$0 = $S($Q(_), Comma);
1802
- var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L24, fail, 'ArrayElementDelimiter "]"')));
1879
+ var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L25, fail, 'ArrayElementDelimiter "]"')));
1803
1880
  var ArrayElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1804
1881
  return { $loc, token: "," };
1805
1882
  });
@@ -1830,7 +1907,7 @@ var Civet = (() => {
1830
1907
  return InlineElementList$0(state);
1831
1908
  }
1832
1909
  }
1833
- var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L18, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1910
+ var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L19, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1834
1911
  function ArrayElementExpression(state) {
1835
1912
  if (state.verbose)
1836
1913
  console.log("ENTER:", "ArrayElementExpression");
@@ -1853,7 +1930,7 @@ var Civet = (() => {
1853
1930
  var ObjectLiteral$0 = $S(OpenBrace, $Y(EOS), NestedPropertyDefinitions, __, CloseBrace);
1854
1931
  var ObjectLiteral$1 = $S(OpenBrace, __, PropertyDefinitionList, __, $E($S(Comma, __)), CloseBrace);
1855
1932
  var ObjectLiteral$2 = $S(OpenBrace, __, CloseBrace);
1856
- var ObjectLiteral$3 = $S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace);
1933
+ var ObjectLiteral$3 = NestedObjectLiteral;
1857
1934
  function ObjectLiteral(state) {
1858
1935
  if (state.tokenize) {
1859
1936
  return $TOKEN("ObjectLiteral", state, ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state));
@@ -1861,6 +1938,16 @@ var Civet = (() => {
1861
1938
  return ObjectLiteral$0(state) || ObjectLiteral$1(state) || ObjectLiteral$2(state) || ObjectLiteral$3(state);
1862
1939
  }
1863
1940
  }
1941
+ var NestedObjectLiteral$0 = $S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace);
1942
+ function NestedObjectLiteral(state) {
1943
+ if (state.verbose)
1944
+ console.log("ENTER:", "NestedObjectLiteral");
1945
+ if (state.tokenize) {
1946
+ return $TOKEN("NestedObjectLiteral", state, NestedObjectLiteral$0(state));
1947
+ } else {
1948
+ return NestedObjectLiteral$0(state);
1949
+ }
1950
+ }
1864
1951
  var NestedPropertyDefinitions$0 = $TS($S(PushIndent, $Q(NestedPropertyDefinition), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
1865
1952
  var defs = $2;
1866
1953
  if (!defs.length)
@@ -1887,18 +1974,15 @@ var Civet = (() => {
1887
1974
  }
1888
1975
  }
1889
1976
  var ObjectPropertyDelimiter$0 = $S($Q(_), Comma);
1890
- var ObjectPropertyDelimiter$1 = $Y($S($Q(_), CloseBrace));
1891
- var ObjectPropertyDelimiter$2 = $TV($Y($S(__, CloseBrace)), function($skip, $loc, $0, $1) {
1892
- return { $loc, token: "," };
1893
- });
1894
- var ObjectPropertyDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1977
+ var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L26, fail, 'ObjectPropertyDelimiter "}"')));
1978
+ var ObjectPropertyDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1895
1979
  return { $loc, token: "," };
1896
1980
  });
1897
1981
  function ObjectPropertyDelimiter(state) {
1898
1982
  if (state.tokenize) {
1899
- return $TOKEN("ObjectPropertyDelimiter", state, ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state) || ObjectPropertyDelimiter$3(state));
1983
+ return $TOKEN("ObjectPropertyDelimiter", state, ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state));
1900
1984
  } else {
1901
- return ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state) || ObjectPropertyDelimiter$3(state);
1985
+ return ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state);
1902
1986
  }
1903
1987
  }
1904
1988
  var PropertyDefinitionList$0 = $S(PropertyDefinition, $Q($S(__, Comma, __, PropertyDefinition)));
@@ -1913,7 +1997,7 @@ var Civet = (() => {
1913
1997
  }
1914
1998
  var PropertyDefinition$0 = $S(PropertyName, __, Colon, AssignmentExpression);
1915
1999
  var PropertyDefinition$1 = MethodDefinition;
1916
- var PropertyDefinition$2 = $S($EXPECT($L18, fail, 'PropertyDefinition "..."'), AssignmentExpression);
2000
+ var PropertyDefinition$2 = $S($EXPECT($L19, fail, 'PropertyDefinition "..."'), AssignmentExpression);
1917
2001
  var PropertyDefinition$3 = IdentifierReference;
1918
2002
  function PropertyDefinition(state) {
1919
2003
  if (state.tokenize) {
@@ -1925,7 +2009,7 @@ var Civet = (() => {
1925
2009
  var PropertyName$0 = NumericLiteral;
1926
2010
  var PropertyName$1 = StringLiteral;
1927
2011
  var PropertyName$2 = IdentifierName;
1928
- var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L24, fail, 'PropertyName "]"'));
2012
+ var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L25, fail, 'PropertyName "]"'));
1929
2013
  function PropertyName(state) {
1930
2014
  if (state.tokenize) {
1931
2015
  return $TOKEN("PropertyName", state, PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state));
@@ -1933,27 +2017,25 @@ var Civet = (() => {
1933
2017
  return PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state);
1934
2018
  }
1935
2019
  }
1936
- var MethodDefinition$0 = $S($EXPECT($L25, fail, 'MethodDefinition "get"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1937
- var MethodDefinition$1 = $S($EXPECT($L26, fail, 'MethodDefinition "set"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1938
- var MethodDefinition$2 = AsyncGeneratorMethod;
1939
- var MethodDefinition$3 = AsyncMethod;
1940
- var MethodDefinition$4 = GeneratorMethod;
1941
- var MethodDefinition$5 = $S(ClassElementName, $Q(_), Parameters, BracedBlock);
2020
+ var MethodDefinition$0 = $S(MethodSignature, BracedBlock);
1942
2021
  function MethodDefinition(state) {
2022
+ if (state.verbose)
2023
+ console.log("ENTER:", "MethodDefinition");
1943
2024
  if (state.tokenize) {
1944
- return $TOKEN("MethodDefinition", state, MethodDefinition$0(state) || MethodDefinition$1(state) || MethodDefinition$2(state) || MethodDefinition$3(state) || MethodDefinition$4(state) || MethodDefinition$5(state));
2025
+ return $TOKEN("MethodDefinition", state, MethodDefinition$0(state));
1945
2026
  } else {
1946
- return MethodDefinition$0(state) || MethodDefinition$1(state) || MethodDefinition$2(state) || MethodDefinition$3(state) || MethodDefinition$4(state) || MethodDefinition$5(state);
2027
+ return MethodDefinition$0(state);
1947
2028
  }
1948
2029
  }
1949
- var MethodModifier$0 = $S($C($EXPECT($L25, fail, 'MethodModifier "get"'), $EXPECT($L26, fail, 'MethodModifier "set"')), NonIdContinue, $Q(TrailingComment));
2030
+ var MethodModifier$0 = $S(GetOrSet, $Q(TrailingComment));
2031
+ var MethodModifier$1 = $S($S(Async, __), $E($S($EXPECT($L5, fail, 'MethodModifier "*"'), __)));
2032
+ var MethodModifier$2 = $S($EXPECT($L5, fail, 'MethodModifier "*"'), __);
2033
+ var MethodModifier$3 = $S(Async, __);
1950
2034
  function MethodModifier(state) {
1951
- if (state.verbose)
1952
- console.log("ENTER:", "MethodModifier");
1953
2035
  if (state.tokenize) {
1954
- return $TOKEN("MethodModifier", state, MethodModifier$0(state));
2036
+ return $TOKEN("MethodModifier", state, MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state));
1955
2037
  } else {
1956
- return MethodModifier$0(state);
2038
+ return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
1957
2039
  }
1958
2040
  }
1959
2041
  var MethodSignature$0 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
@@ -1975,7 +2057,7 @@ var Civet = (() => {
1975
2057
  return ClassElementName$0(state) || ClassElementName$1(state);
1976
2058
  }
1977
2059
  }
1978
- var PrivateIdentifier$0 = $S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName);
2060
+ var PrivateIdentifier$0 = $S($EXPECT($L10, fail, 'PrivateIdentifier "#"'), IdentifierName);
1979
2061
  function PrivateIdentifier(state) {
1980
2062
  if (state.verbose)
1981
2063
  console.log("ENTER:", "PrivateIdentifier");
@@ -1985,66 +2067,6 @@ var Civet = (() => {
1985
2067
  return PrivateIdentifier$0(state);
1986
2068
  }
1987
2069
  }
1988
- var GeneratorMethod$0 = $S($EXPECT($L3, fail, 'GeneratorMethod "*"'), __, ClassElementName, __, Parameters, GeneratorBody);
1989
- function GeneratorMethod(state) {
1990
- if (state.verbose)
1991
- console.log("ENTER:", "GeneratorMethod");
1992
- if (state.tokenize) {
1993
- return $TOKEN("GeneratorMethod", state, GeneratorMethod$0(state));
1994
- } else {
1995
- return GeneratorMethod$0(state);
1996
- }
1997
- }
1998
- var GeneratorBody$0 = BracedBlock;
1999
- function GeneratorBody(state) {
2000
- if (state.verbose)
2001
- console.log("ENTER:", "GeneratorBody");
2002
- if (state.tokenize) {
2003
- return $TOKEN("GeneratorBody", state, GeneratorBody$0(state));
2004
- } else {
2005
- return GeneratorBody$0(state);
2006
- }
2007
- }
2008
- var AsyncMethod$0 = $S(Async, $N(EOS), __, ClassElementName, __, Parameters, AsyncFunctionBody);
2009
- function AsyncMethod(state) {
2010
- if (state.verbose)
2011
- console.log("ENTER:", "AsyncMethod");
2012
- if (state.tokenize) {
2013
- return $TOKEN("AsyncMethod", state, AsyncMethod$0(state));
2014
- } else {
2015
- return AsyncMethod$0(state);
2016
- }
2017
- }
2018
- var AsyncFunctionBody$0 = BracedBlock;
2019
- function AsyncFunctionBody(state) {
2020
- if (state.verbose)
2021
- console.log("ENTER:", "AsyncFunctionBody");
2022
- if (state.tokenize) {
2023
- return $TOKEN("AsyncFunctionBody", state, AsyncFunctionBody$0(state));
2024
- } else {
2025
- return AsyncFunctionBody$0(state);
2026
- }
2027
- }
2028
- var AsyncGeneratorMethod$0 = $S(Async, $N(EOS), __, $EXPECT($L3, fail, 'AsyncGeneratorMethod "*"'), __, ClassElementName, __, Parameters, AsyncGeneratorBody);
2029
- function AsyncGeneratorMethod(state) {
2030
- if (state.verbose)
2031
- console.log("ENTER:", "AsyncGeneratorMethod");
2032
- if (state.tokenize) {
2033
- return $TOKEN("AsyncGeneratorMethod", state, AsyncGeneratorMethod$0(state));
2034
- } else {
2035
- return AsyncGeneratorMethod$0(state);
2036
- }
2037
- }
2038
- var AsyncGeneratorBody$0 = BracedBlock;
2039
- function AsyncGeneratorBody(state) {
2040
- if (state.verbose)
2041
- console.log("ENTER:", "AsyncGeneratorBody");
2042
- if (state.tokenize) {
2043
- return $TOKEN("AsyncGeneratorBody", state, AsyncGeneratorBody$0(state));
2044
- } else {
2045
- return AsyncGeneratorBody$0(state);
2046
- }
2047
- }
2048
2070
  var AssignmentOp$0 = $TS($S(AssignmentOpSymbol), function($skip, $loc, $0, $1) {
2049
2071
  return { $loc, token: $1 };
2050
2072
  });
@@ -2096,7 +2118,7 @@ var Civet = (() => {
2096
2118
  }
2097
2119
  }
2098
2120
  var BinaryOpSymbol$0 = $EXPECT($L44, fail, 'BinaryOpSymbol "**"');
2099
- var BinaryOpSymbol$1 = $EXPECT($L3, fail, 'BinaryOpSymbol "*"');
2121
+ var BinaryOpSymbol$1 = $EXPECT($L5, fail, 'BinaryOpSymbol "*"');
2100
2122
  var BinaryOpSymbol$2 = $EXPECT($L45, fail, 'BinaryOpSymbol "/"');
2101
2123
  var BinaryOpSymbol$3 = $EXPECT($L46, fail, 'BinaryOpSymbol "%"');
2102
2124
  var BinaryOpSymbol$4 = $EXPECT($L47, fail, 'BinaryOpSymbol "+"');
@@ -2104,7 +2126,7 @@ var Civet = (() => {
2104
2126
  var BinaryOpSymbol$6 = $EXPECT($L49, fail, 'BinaryOpSymbol "<="');
2105
2127
  var BinaryOpSymbol$7 = $EXPECT($L50, fail, 'BinaryOpSymbol ">="');
2106
2128
  var BinaryOpSymbol$8 = $EXPECT($L51, fail, 'BinaryOpSymbol "<<"');
2107
- var BinaryOpSymbol$9 = $EXPECT($L5, fail, 'BinaryOpSymbol "<"');
2129
+ var BinaryOpSymbol$9 = $EXPECT($L7, fail, 'BinaryOpSymbol "<"');
2108
2130
  var BinaryOpSymbol$10 = $EXPECT($L52, fail, 'BinaryOpSymbol ">>>"');
2109
2131
  var BinaryOpSymbol$11 = $EXPECT($L53, fail, 'BinaryOpSymbol ">>"');
2110
2132
  var BinaryOpSymbol$12 = $EXPECT($L54, fail, 'BinaryOpSymbol ">"');
@@ -2185,7 +2207,7 @@ var Civet = (() => {
2185
2207
  return StatementListItem$0(state);
2186
2208
  }
2187
2209
  }
2188
- var PostfixConditional$0 = $TS($S($Q(TrailingComment), $C(If, Unless), NonIdContinue, Loc, Expression, Loc), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2210
+ var PostfixConditional$0 = $TS($S($Q(TrailingComment), $C(If, Unless), NonIdContinue, Loc, ExpressionWithIndentedApplicationSuppressed, Loc), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2189
2211
  var ws = $1;
2190
2212
  var cond = $2;
2191
2213
  var l1 = $4;
@@ -2319,7 +2341,7 @@ var Civet = (() => {
2319
2341
  var cond = $3;
2320
2342
  if (kind === "until") {
2321
2343
  cond[1] = "(!(";
2322
- cond[5] = "))";
2344
+ cond[4] = "))";
2323
2345
  return ["while", cond];
2324
2346
  }
2325
2347
  return $0;
@@ -2333,7 +2355,7 @@ var Civet = (() => {
2333
2355
  return WhileClause$0(state);
2334
2356
  }
2335
2357
  }
2336
- var ForStatement$0 = $S(For, __, OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, __, $E(Expression), Semicolon, __, $E(Expression), CloseParen, Block);
2358
+ var ForStatement$0 = $S(For, __, OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E(Expression), CloseParen, Block);
2337
2359
  function ForStatement(state) {
2338
2360
  if (state.verbose)
2339
2361
  console.log("ENTER:", "ForStatement");
@@ -2343,8 +2365,8 @@ var Civet = (() => {
2343
2365
  return ForStatement$0(state);
2344
2366
  }
2345
2367
  }
2346
- var ForInOfStatement$0 = $S(For, __, OpenParen, __, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, __, Expression, __, CloseParen, Block);
2347
- var ForInOfStatement$1 = $S(For, __, InsertOpenParen, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, __, Expression, InsertCloseParen, Block);
2368
+ var ForInOfStatement$0 = $S(For, __, OpenParen, __, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, Expression, __, CloseParen, Block);
2369
+ var ForInOfStatement$1 = $S(For, __, InsertOpenParen, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, Expression, InsertCloseParen, Block);
2348
2370
  var ForInOfStatement$2 = $S(For, $E($S(__, Await)), __, OpenParen, __, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, Of, AssignmentExpression, __, CloseParen, Block);
2349
2371
  var ForInOfStatement$3 = $S(For, $E($S(__, Await)), __, InsertOpenParen, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, Of, AssignmentExpression, InsertCloseParen, Block);
2350
2372
  function ForInOfStatement(state) {
@@ -2364,18 +2386,6 @@ var Civet = (() => {
2364
2386
  return ForDeclaration$0(state);
2365
2387
  }
2366
2388
  }
2367
- var LetOrConst$0 = $TV($C($EXPECT($L77, fail, 'LetOrConst "let"'), $EXPECT($L78, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
2368
- return { $loc, token: $1 };
2369
- });
2370
- function LetOrConst(state) {
2371
- if (state.verbose)
2372
- console.log("ENTER:", "LetOrConst");
2373
- if (state.tokenize) {
2374
- return $TOKEN("LetOrConst", state, LetOrConst$0(state));
2375
- } else {
2376
- return LetOrConst$0(state);
2377
- }
2378
- }
2379
2389
  var ForBinding$0 = BindingIdentifier;
2380
2390
  var ForBinding$1 = BindingPattern;
2381
2391
  function ForBinding(state) {
@@ -2429,9 +2439,9 @@ var Civet = (() => {
2429
2439
  return NestedCaseClause$0(state);
2430
2440
  }
2431
2441
  }
2432
- var CaseClause$0 = $S($EXPECT($L79, fail, 'CaseClause "case"'), NonIdContinue, $Q(_), Expression, ImpliedColon, NestedBlockExpressions);
2433
- var CaseClause$1 = $S(When, $Q(_), Expression, ImpliedColon, NestedBlockExpressions, InsertBreak);
2434
- var CaseClause$2 = $S($EXPECT($L80, fail, 'CaseClause "default"'), NonIdContinue, ImpliedColon, NestedBlockExpressions);
2442
+ var CaseClause$0 = $S($EXPECT($L77, fail, 'CaseClause "case"'), NonIdContinue, $Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon, NestedBlockExpressions);
2443
+ var CaseClause$1 = $S(When, $Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon, NestedBlockExpressions, InsertBreak);
2444
+ var CaseClause$2 = $S($EXPECT($L78, fail, 'CaseClause "default"'), NonIdContinue, ImpliedColon, NestedBlockExpressions);
2435
2445
  function CaseClause(state) {
2436
2446
  if (state.tokenize) {
2437
2447
  return $TOKEN("CaseClause", state, CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state));
@@ -2440,7 +2450,7 @@ var Civet = (() => {
2440
2450
  }
2441
2451
  }
2442
2452
  var ImpliedColon$0 = $S(__, Colon);
2443
- var ImpliedColon$1 = $TV($EXPECT($L16, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
2453
+ var ImpliedColon$1 = $TV($EXPECT($L1, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
2444
2454
  return { $loc, token: ":" };
2445
2455
  });
2446
2456
  function ImpliedColon(state) {
@@ -2486,7 +2496,7 @@ var Civet = (() => {
2486
2496
  return CatchBind$0(state) || CatchBind$1(state);
2487
2497
  }
2488
2498
  }
2489
- var Finally$0 = $S(__, $EXPECT($L81, fail, 'Finally "finally"'), BracedBlock);
2499
+ var Finally$0 = $S(__, $EXPECT($L79, fail, 'Finally "finally"'), BracedBlock);
2490
2500
  function Finally(state) {
2491
2501
  if (state.verbose)
2492
2502
  console.log("ENTER:", "Finally");
@@ -2505,8 +2515,8 @@ var Civet = (() => {
2505
2515
  return CatchParameter$0(state) || CatchParameter$1(state);
2506
2516
  }
2507
2517
  }
2508
- var Condition$0 = $S(__, OpenParen, __, Expression, __, CloseParen);
2509
- var Condition$1 = $S($N(EOS), __, InsertOpenParen, Expression, InsertCloseParen);
2518
+ var Condition$0 = $S(__, OpenParen, Expression, __, CloseParen);
2519
+ var Condition$1 = $S($N(EOS), __, InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen);
2510
2520
  function Condition(state) {
2511
2521
  if (state.tokenize) {
2512
2522
  return $TOKEN("Condition", state, Condition$0(state) || Condition$1(state));
@@ -2514,6 +2524,34 @@ var Civet = (() => {
2514
2524
  return Condition$0(state) || Condition$1(state);
2515
2525
  }
2516
2526
  }
2527
+ var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(Expression)), function($skip, $loc, $0, $1, $2) {
2528
+ var exp = $2;
2529
+ module.suppressIndentedApplication = false;
2530
+ if (exp)
2531
+ return exp;
2532
+ return $skip;
2533
+ });
2534
+ function ExpressionWithIndentedApplicationSuppressed(state) {
2535
+ if (state.verbose)
2536
+ console.log("ENTER:", "ExpressionWithIndentedApplicationSuppressed");
2537
+ if (state.tokenize) {
2538
+ return $TOKEN("ExpressionWithIndentedApplicationSuppressed", state, ExpressionWithIndentedApplicationSuppressed$0(state));
2539
+ } else {
2540
+ return ExpressionWithIndentedApplicationSuppressed$0(state);
2541
+ }
2542
+ }
2543
+ var SuppressIndentedApplication$0 = $TV($EXPECT($L1, fail, 'SuppressIndentedApplication ""'), function($skip, $loc, $0, $1) {
2544
+ module.suppressIndentedApplication = true;
2545
+ });
2546
+ function SuppressIndentedApplication(state) {
2547
+ if (state.verbose)
2548
+ console.log("ENTER:", "SuppressIndentedApplication");
2549
+ if (state.tokenize) {
2550
+ return $TOKEN("SuppressIndentedApplication", state, SuppressIndentedApplication$0(state));
2551
+ } else {
2552
+ return SuppressIndentedApplication$0(state);
2553
+ }
2554
+ }
2517
2555
  var ExpressionStatement$0 = Expression;
2518
2556
  function ExpressionStatement(state) {
2519
2557
  if (state.verbose)
@@ -2524,11 +2562,11 @@ var Civet = (() => {
2524
2562
  return ExpressionStatement$0(state);
2525
2563
  }
2526
2564
  }
2527
- var KeywordStatement$0 = $S($EXPECT($L82, fail, 'KeywordStatement "break"'), NonIdContinue);
2528
- var KeywordStatement$1 = $S($EXPECT($L83, fail, 'KeywordStatement "continue"'), NonIdContinue);
2529
- var KeywordStatement$2 = $S($EXPECT($L84, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2565
+ var KeywordStatement$0 = $S($EXPECT($L80, fail, 'KeywordStatement "break"'), NonIdContinue);
2566
+ var KeywordStatement$1 = $S($EXPECT($L81, fail, 'KeywordStatement "continue"'), NonIdContinue);
2567
+ var KeywordStatement$2 = $S($EXPECT($L82, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2530
2568
  var KeywordStatement$3 = $S(Return, $E(MaybeNestedExpression));
2531
- var KeywordStatement$4 = $S($EXPECT($L85, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2569
+ var KeywordStatement$4 = $S($EXPECT($L83, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2532
2570
  function KeywordStatement(state) {
2533
2571
  if (state.tokenize) {
2534
2572
  return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state));
@@ -2545,7 +2583,7 @@ var Civet = (() => {
2545
2583
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2546
2584
  }
2547
2585
  }
2548
- var ImportDeclaration$0 = $T($S($EXPECT($L86, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2586
+ var ImportDeclaration$0 = $T($S($EXPECT($L84, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2549
2587
  return { "ts": true, "children": value };
2550
2588
  });
2551
2589
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -2568,7 +2606,7 @@ var Civet = (() => {
2568
2606
  return ImportDeclaration$0(state) || ImportDeclaration$1(state) || ImportDeclaration$2(state) || ImportDeclaration$3(state);
2569
2607
  }
2570
2608
  }
2571
- var ImpliedImport$0 = $TV($EXPECT($L16, fail, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
2609
+ var ImpliedImport$0 = $TV($EXPECT($L1, fail, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
2572
2610
  return { $loc, token: "import " };
2573
2611
  });
2574
2612
  function ImpliedImport(state) {
@@ -2590,7 +2628,7 @@ var Civet = (() => {
2590
2628
  return ImportClause$0(state) || ImportClause$1(state) || ImportClause$2(state);
2591
2629
  }
2592
2630
  }
2593
- var NameSpaceImport$0 = $S($EXPECT($L3, fail, 'NameSpaceImport "*"'), __, As, NonIdContinue, __, ImportedBinding);
2631
+ var NameSpaceImport$0 = $S($EXPECT($L5, fail, 'NameSpaceImport "*"'), __, As, NonIdContinue, __, ImportedBinding);
2594
2632
  function NameSpaceImport(state) {
2595
2633
  if (state.verbose)
2596
2634
  console.log("ENTER:", "NameSpaceImport");
@@ -2683,7 +2721,7 @@ var Civet = (() => {
2683
2721
  return ImportedBinding$0(state);
2684
2722
  }
2685
2723
  }
2686
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L80, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2724
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L78, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2687
2725
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
2688
2726
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
2689
2727
  function ExportDeclaration(state) {
@@ -2693,7 +2731,7 @@ var Civet = (() => {
2693
2731
  return ExportDeclaration$0(state) || ExportDeclaration$1(state) || ExportDeclaration$2(state);
2694
2732
  }
2695
2733
  }
2696
- var ExportFromClause$0 = $S($EXPECT($L3, fail, 'ExportFromClause "*"'), $E($S(__, As, NonIdContinue, __, ModuleExportName)));
2734
+ var ExportFromClause$0 = $S($EXPECT($L5, fail, 'ExportFromClause "*"'), $E($S(__, As, NonIdContinue, __, ModuleExportName)));
2697
2735
  var ExportFromClause$1 = NamedExports;
2698
2736
  function ExportFromClause(state) {
2699
2737
  if (state.tokenize) {
@@ -2760,7 +2798,7 @@ var Civet = (() => {
2760
2798
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2761
2799
  }
2762
2800
  }
2763
- var ConstAssignment$0 = $TV($EXPECT($L87, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2801
+ var ConstAssignment$0 = $TV($EXPECT($L85, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2764
2802
  return { $loc, token: "=" };
2765
2803
  });
2766
2804
  function ConstAssignment(state) {
@@ -2906,10 +2944,10 @@ var Civet = (() => {
2906
2944
  var e = $3;
2907
2945
  return [s, module.dedentBlockString(str), e];
2908
2946
  });
2909
- var StringLiteral$2 = $TV($TEXT($S($EXPECT($L88, fail, 'StringLiteral "\\\\\\""'), $Q(DoubleStringCharacter), $EXPECT($L88, fail, 'StringLiteral "\\\\\\""'))), function($skip, $loc, $0, $1) {
2947
+ var StringLiteral$2 = $TV($TEXT($S($EXPECT($L86, fail, 'StringLiteral "\\\\\\""'), $Q(DoubleStringCharacter), $EXPECT($L86, fail, 'StringLiteral "\\\\\\""'))), function($skip, $loc, $0, $1) {
2910
2948
  return { $loc, token: $1 };
2911
2949
  });
2912
- var StringLiteral$3 = $TV($TEXT($S($EXPECT($L89, fail, `StringLiteral "'"`), $Q(SingleStringCharacter), $EXPECT($L89, fail, `StringLiteral "'"`))), function($skip, $loc, $0, $1) {
2950
+ var StringLiteral$3 = $TV($TEXT($S($EXPECT($L87, fail, `StringLiteral "'"`), $Q(SingleStringCharacter), $EXPECT($L87, fail, `StringLiteral "'"`))), function($skip, $loc, $0, $1) {
2913
2951
  return { $loc, token: $1 };
2914
2952
  });
2915
2953
  function StringLiteral(state) {
@@ -3005,7 +3043,7 @@ var Civet = (() => {
3005
3043
  return RegularExpressionFlags$0(state);
3006
3044
  }
3007
3045
  }
3008
- var TemplateLiteral$0 = $S($EXPECT($L90, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L90, fail, 'TemplateLiteral "`"'));
3046
+ var TemplateLiteral$0 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3009
3047
  function TemplateLiteral(state) {
3010
3048
  if (state.verbose)
3011
3049
  console.log("ENTER:", "TemplateLiteral");
@@ -3015,7 +3053,7 @@ var Civet = (() => {
3015
3053
  return TemplateLiteral$0(state);
3016
3054
  }
3017
3055
  }
3018
- var TemplateSubstitution$0 = $S($EXPECT($L91, fail, 'TemplateSubstitution "${"'), __, Expression, __, CloseBrace);
3056
+ var TemplateSubstitution$0 = $S($EXPECT($L88, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3019
3057
  function TemplateSubstitution(state) {
3020
3058
  if (state.verbose)
3021
3059
  console.log("ENTER:", "TemplateSubstitution");
@@ -3074,7 +3112,7 @@ var Civet = (() => {
3074
3112
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3075
3113
  }
3076
3114
  }
3077
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L92, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L93, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L93, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3115
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L89, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L90, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L90, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3078
3116
  return { $loc, token: $1 };
3079
3117
  });
3080
3118
  function JSMultiLineComment(state) {
@@ -3100,7 +3138,7 @@ var Civet = (() => {
3100
3138
  return CoffeeSingleLineComment$0(state);
3101
3139
  }
3102
3140
  }
3103
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L94, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L94, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L93, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L94, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3141
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L91, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L91, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L90, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L91, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3104
3142
  return { $loc, token: `/*${$2}*/` };
3105
3143
  });
3106
3144
  function CoffeeMultiLineComment(state) {
@@ -3112,7 +3150,7 @@ var Civet = (() => {
3112
3150
  return CoffeeMultiLineComment$0(state);
3113
3151
  }
3114
3152
  }
3115
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L92, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L93, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L93, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3153
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L89, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L90, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L90, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3116
3154
  return { $loc, token: $1 };
3117
3155
  });
3118
3156
  function InlineComment(state) {
@@ -3189,7 +3227,7 @@ var Civet = (() => {
3189
3227
  }
3190
3228
  }
3191
3229
  var StatementDelimiter$0 = $S($Q(TrailingComment), Semicolon, $Q(TrailingComment));
3192
- var StatementDelimiter$1 = $TS($S($EXPECT($L16, fail, 'StatementDelimiter ""'), $Y(EOS)), function($skip, $loc, $0, $1, $2) {
3230
+ var StatementDelimiter$1 = $TS($S($EXPECT($L1, fail, 'StatementDelimiter ""'), $Y(EOS)), function($skip, $loc, $0, $1, $2) {
3193
3231
  return { $loc, token: ";" };
3194
3232
  });
3195
3233
  function StatementDelimiter(state) {
@@ -3209,7 +3247,7 @@ var Civet = (() => {
3209
3247
  return NonIdContinue$0(state);
3210
3248
  }
3211
3249
  }
3212
- var Loc$0 = $TV($EXPECT($L16, fail, 'Loc ""'), function($skip, $loc, $0, $1) {
3250
+ var Loc$0 = $TV($EXPECT($L1, fail, 'Loc ""'), function($skip, $loc, $0, $1) {
3213
3251
  return { $loc, token: "" };
3214
3252
  });
3215
3253
  function Loc(state) {
@@ -3221,7 +3259,7 @@ var Civet = (() => {
3221
3259
  return Loc$0(state);
3222
3260
  }
3223
3261
  }
3224
- var As$0 = $TS($S($EXPECT($L95, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3262
+ var As$0 = $TS($S($EXPECT($L92, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3225
3263
  return { $loc, token: $1 };
3226
3264
  });
3227
3265
  function As(state) {
@@ -3233,7 +3271,7 @@ var Civet = (() => {
3233
3271
  return As$0(state);
3234
3272
  }
3235
3273
  }
3236
- var Async$0 = $TV($EXPECT($L96, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3274
+ var Async$0 = $TV($EXPECT($L93, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3237
3275
  return { $loc, token: $1 };
3238
3276
  });
3239
3277
  function Async(state) {
@@ -3245,7 +3283,7 @@ var Civet = (() => {
3245
3283
  return Async$0(state);
3246
3284
  }
3247
3285
  }
3248
- var Await$0 = $TS($S($EXPECT($L97, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3286
+ var Await$0 = $TS($S($EXPECT($L94, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3249
3287
  return { $loc, token: $1 };
3250
3288
  });
3251
3289
  function Await(state) {
@@ -3257,7 +3295,7 @@ var Civet = (() => {
3257
3295
  return Await$0(state);
3258
3296
  }
3259
3297
  }
3260
- var Catch$0 = $TV($EXPECT($L98, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3298
+ var Catch$0 = $TV($EXPECT($L95, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3261
3299
  return { $loc, token: $1 };
3262
3300
  });
3263
3301
  function Catch(state) {
@@ -3269,7 +3307,7 @@ var Civet = (() => {
3269
3307
  return Catch$0(state);
3270
3308
  }
3271
3309
  }
3272
- var Class$0 = $TV($EXPECT($L99, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3310
+ var Class$0 = $TV($EXPECT($L96, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3273
3311
  return { $loc, token: $1 };
3274
3312
  });
3275
3313
  function Class(state) {
@@ -3281,7 +3319,7 @@ var Civet = (() => {
3281
3319
  return Class$0(state);
3282
3320
  }
3283
3321
  }
3284
- var CloseBrace$0 = $TV($EXPECT($L100, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3322
+ var CloseBrace$0 = $TV($EXPECT($L26, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3285
3323
  return { $loc, token: $1 };
3286
3324
  });
3287
3325
  function CloseBrace(state) {
@@ -3293,7 +3331,7 @@ var Civet = (() => {
3293
3331
  return CloseBrace$0(state);
3294
3332
  }
3295
3333
  }
3296
- var CloseBracket$0 = $TV($EXPECT($L24, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3334
+ var CloseBracket$0 = $TV($EXPECT($L25, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3297
3335
  return { $loc, token: $1 };
3298
3336
  });
3299
3337
  function CloseBracket(state) {
@@ -3305,7 +3343,7 @@ var Civet = (() => {
3305
3343
  return CloseBracket$0(state);
3306
3344
  }
3307
3345
  }
3308
- var CloseParen$0 = $TV($EXPECT($L17, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3346
+ var CloseParen$0 = $TV($EXPECT($L18, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3309
3347
  return { $loc, token: $1 };
3310
3348
  });
3311
3349
  function CloseParen(state) {
@@ -3317,7 +3355,7 @@ var Civet = (() => {
3317
3355
  return CloseParen$0(state);
3318
3356
  }
3319
3357
  }
3320
- var Colon$0 = $TV($EXPECT($L101, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3358
+ var Colon$0 = $TV($EXPECT($L97, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3321
3359
  return { $loc, token: $1 };
3322
3360
  });
3323
3361
  function Colon(state) {
@@ -3329,7 +3367,7 @@ var Civet = (() => {
3329
3367
  return Colon$0(state);
3330
3368
  }
3331
3369
  }
3332
- var Dot$0 = $TV($EXPECT($L102, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3370
+ var Dot$0 = $TV($EXPECT($L98, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3333
3371
  return { $loc, token: $1 };
3334
3372
  });
3335
3373
  function Dot(state) {
@@ -3341,7 +3379,7 @@ var Civet = (() => {
3341
3379
  return Dot$0(state);
3342
3380
  }
3343
3381
  }
3344
- var Else$0 = $TV($EXPECT($L103, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3382
+ var Else$0 = $TV($EXPECT($L99, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3345
3383
  return { $loc, token: $1 };
3346
3384
  });
3347
3385
  function Else(state) {
@@ -3365,7 +3403,7 @@ var Civet = (() => {
3365
3403
  return Equals$0(state);
3366
3404
  }
3367
3405
  }
3368
- var Export$0 = $TS($S($EXPECT($L104, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3406
+ var Export$0 = $TS($S($EXPECT($L100, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3369
3407
  return { $loc, token: $1 };
3370
3408
  });
3371
3409
  function Export(state) {
@@ -3377,7 +3415,7 @@ var Civet = (() => {
3377
3415
  return Export$0(state);
3378
3416
  }
3379
3417
  }
3380
- var For$0 = $TS($S($EXPECT($L105, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3418
+ var For$0 = $TS($S($EXPECT($L101, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3381
3419
  return { $loc, token: $1 };
3382
3420
  });
3383
3421
  function For(state) {
@@ -3389,7 +3427,7 @@ var Civet = (() => {
3389
3427
  return For$0(state);
3390
3428
  }
3391
3429
  }
3392
- var From$0 = $TS($S($EXPECT($L106, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3430
+ var From$0 = $TS($S($EXPECT($L102, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3393
3431
  return { $loc, token: $1 };
3394
3432
  });
3395
3433
  function From(state) {
@@ -3401,7 +3439,7 @@ var Civet = (() => {
3401
3439
  return From$0(state);
3402
3440
  }
3403
3441
  }
3404
- var Function$0 = $TV($EXPECT($L107, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3442
+ var Function$0 = $TV($EXPECT($L103, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3405
3443
  return { $loc, token: $1 };
3406
3444
  });
3407
3445
  function Function(state) {
@@ -3413,7 +3451,19 @@ var Civet = (() => {
3413
3451
  return Function$0(state);
3414
3452
  }
3415
3453
  }
3416
- var If$0 = $TV($EXPECT($L108, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3454
+ var GetOrSet$0 = $TS($S($C($EXPECT($L104, fail, 'GetOrSet "get"'), $EXPECT($L105, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3455
+ return { $loc, token: $1 };
3456
+ });
3457
+ function GetOrSet(state) {
3458
+ if (state.verbose)
3459
+ console.log("ENTER:", "GetOrSet");
3460
+ if (state.tokenize) {
3461
+ return $TOKEN("GetOrSet", state, GetOrSet$0(state));
3462
+ } else {
3463
+ return GetOrSet$0(state);
3464
+ }
3465
+ }
3466
+ var If$0 = $TV($EXPECT($L106, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3417
3467
  return { $loc, token: $1 };
3418
3468
  });
3419
3469
  function If(state) {
@@ -3425,7 +3475,7 @@ var Civet = (() => {
3425
3475
  return If$0(state);
3426
3476
  }
3427
3477
  }
3428
- var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3478
+ var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3429
3479
  return { $loc, token: $1 };
3430
3480
  });
3431
3481
  function Import(state) {
@@ -3449,6 +3499,18 @@ var Civet = (() => {
3449
3499
  return In$0(state);
3450
3500
  }
3451
3501
  }
3502
+ var LetOrConst$0 = $TV($C($EXPECT($L107, fail, 'LetOrConst "let"'), $EXPECT($L108, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3503
+ return { $loc, token: $1 };
3504
+ });
3505
+ function LetOrConst(state) {
3506
+ if (state.verbose)
3507
+ console.log("ENTER:", "LetOrConst");
3508
+ if (state.tokenize) {
3509
+ return $TOKEN("LetOrConst", state, LetOrConst$0(state));
3510
+ } else {
3511
+ return LetOrConst$0(state);
3512
+ }
3513
+ }
3452
3514
  var Loop$0 = $TS($S($EXPECT($L109, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3453
3515
  return { $loc, token: "while(true)" };
3454
3516
  });
@@ -3560,13 +3622,14 @@ var Civet = (() => {
3560
3622
  var Static$0 = $TV($EXPECT($L117, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3561
3623
  return { $loc, token: $1 };
3562
3624
  });
3625
+ var Static$1 = $TV($EXPECT($L11, fail, 'Static "@"'), function($skip, $loc, $0, $1) {
3626
+ return { $loc, token: "static " };
3627
+ });
3563
3628
  function Static(state) {
3564
- if (state.verbose)
3565
- console.log("ENTER:", "Static");
3566
3629
  if (state.tokenize) {
3567
- return $TOKEN("Static", state, Static$0(state));
3630
+ return $TOKEN("Static", state, Static$0(state) || Static$1(state));
3568
3631
  } else {
3569
- return Static$0(state);
3632
+ return Static$0(state) || Static$1(state);
3570
3633
  }
3571
3634
  }
3572
3635
  var Switch$0 = $TV($EXPECT($L118, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
@@ -3679,7 +3742,7 @@ var Civet = (() => {
3679
3742
  return JSXElement$0(state) || JSXElement$1(state);
3680
3743
  }
3681
3744
  }
3682
- var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3745
+ var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3683
3746
  function JSXSelfClosingElement(state) {
3684
3747
  if (state.verbose)
3685
3748
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -3689,7 +3752,7 @@ var Civet = (() => {
3689
3752
  return JSXSelfClosingElement$0(state);
3690
3753
  }
3691
3754
  }
3692
- var JSXOpeningElement$0 = $S($EXPECT($L5, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L54, fail, 'JSXOpeningElement ">"'));
3755
+ var JSXOpeningElement$0 = $S($EXPECT($L7, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L54, fail, 'JSXOpeningElement ">"'));
3693
3756
  function JSXOpeningElement(state) {
3694
3757
  if (state.verbose)
3695
3758
  console.log("ENTER:", "JSXOpeningElement");
@@ -3749,7 +3812,7 @@ var Civet = (() => {
3749
3812
  return JSXAttributes$0(state);
3750
3813
  }
3751
3814
  }
3752
- var JSXAttribute$0 = $S(OpenBrace, __, $EXPECT($L18, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, CloseBrace);
3815
+ var JSXAttribute$0 = $S(OpenBrace, __, $EXPECT($L19, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, CloseBrace);
3753
3816
  var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
3754
3817
  function JSXAttribute(state) {
3755
3818
  if (state.tokenize) {
@@ -3821,7 +3884,7 @@ var Civet = (() => {
3821
3884
  return JSXText$0(state);
3822
3885
  }
3823
3886
  }
3824
- var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L18, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
3887
+ var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L19, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
3825
3888
  function JSXChildExpression(state) {
3826
3889
  if (state.verbose)
3827
3890
  console.log("ENTER:", "JSXChildExpression");
@@ -4111,7 +4174,7 @@ var Civet = (() => {
4111
4174
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
4112
4175
  }
4113
4176
  }
4114
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4177
+ var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L8, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4115
4178
  function TypeConditional(state) {
4116
4179
  if (state.verbose)
4117
4180
  console.log("ENTER:", "TypeConditional");
@@ -4140,7 +4203,7 @@ var Civet = (() => {
4140
4203
  return TypeBinaryOp$0(state) || TypeBinaryOp$1(state);
4141
4204
  }
4142
4205
  }
4143
- var FunctionType$0 = $S(Parameters, __, $EXPECT($L4, fail, 'FunctionType "=>"'), Type);
4206
+ var FunctionType$0 = $S(Parameters, __, $EXPECT($L6, fail, 'FunctionType "=>"'), Type);
4144
4207
  function FunctionType(state) {
4145
4208
  if (state.verbose)
4146
4209
  console.log("ENTER:", "FunctionType");
@@ -4150,7 +4213,7 @@ var Civet = (() => {
4150
4213
  return FunctionType$0(state);
4151
4214
  }
4152
4215
  }
4153
- var TypeArguments$0 = $S(__, $EXPECT($L5, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeArguments ">"'));
4216
+ var TypeArguments$0 = $S(__, $EXPECT($L7, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeArguments ">"'));
4154
4217
  function TypeArguments(state) {
4155
4218
  if (state.verbose)
4156
4219
  console.log("ENTER:", "TypeArguments");
@@ -4160,7 +4223,7 @@ var Civet = (() => {
4160
4223
  return TypeArguments$0(state);
4161
4224
  }
4162
4225
  }
4163
- var TypeParameters$0 = $TS($S(__, $EXPECT($L5, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
4226
+ var TypeParameters$0 = $TS($S(__, $EXPECT($L7, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
4164
4227
  return { ts: true, children: $0 };
4165
4228
  });
4166
4229
  function TypeParameters(state) {
@@ -4182,7 +4245,7 @@ var Civet = (() => {
4182
4245
  return TypeParameter$0(state);
4183
4246
  }
4184
4247
  }
4185
- var TypeConstraint$0 = $S(__, $EXPECT($L6, fail, 'TypeConstraint "extends"'), Type);
4248
+ var TypeConstraint$0 = $S(__, $EXPECT($L8, fail, 'TypeConstraint "extends"'), Type);
4186
4249
  function TypeConstraint(state) {
4187
4250
  if (state.verbose)
4188
4251
  console.log("ENTER:", "TypeConstraint");
@@ -4257,7 +4320,7 @@ var Civet = (() => {
4257
4320
  return EOF$0(state);
4258
4321
  }
4259
4322
  }
4260
- var Debugger$0 = $TV($EXPECT($L16, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
4323
+ var Debugger$0 = $TV($EXPECT($L1, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
4261
4324
  debugger;
4262
4325
  });
4263
4326
  function Debugger(state) {
@@ -4269,7 +4332,7 @@ var Civet = (() => {
4269
4332
  return Debugger$0(state);
4270
4333
  }
4271
4334
  }
4272
- var InsertOpenParen$0 = $TV($EXPECT($L16, fail, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
4335
+ var InsertOpenParen$0 = $TV($EXPECT($L1, fail, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
4273
4336
  return { $loc, token: "(" };
4274
4337
  });
4275
4338
  function InsertOpenParen(state) {
@@ -4281,7 +4344,7 @@ var Civet = (() => {
4281
4344
  return InsertOpenParen$0(state);
4282
4345
  }
4283
4346
  }
4284
- var InsertCloseParen$0 = $TV($EXPECT($L16, fail, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
4347
+ var InsertCloseParen$0 = $TV($EXPECT($L1, fail, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
4285
4348
  return { $loc, token: ")" };
4286
4349
  });
4287
4350
  function InsertCloseParen(state) {
@@ -4293,7 +4356,7 @@ var Civet = (() => {
4293
4356
  return InsertCloseParen$0(state);
4294
4357
  }
4295
4358
  }
4296
- var InsertOpenBrace$0 = $TV($EXPECT($L16, fail, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
4359
+ var InsertOpenBrace$0 = $TV($EXPECT($L1, fail, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
4297
4360
  return [{ $loc, token: " " }, { $loc, token: "{" }];
4298
4361
  });
4299
4362
  function InsertOpenBrace(state) {
@@ -4305,7 +4368,7 @@ var Civet = (() => {
4305
4368
  return InsertOpenBrace$0(state);
4306
4369
  }
4307
4370
  }
4308
- var InsertCloseBrace$0 = $TV($EXPECT($L16, fail, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
4371
+ var InsertCloseBrace$0 = $TV($EXPECT($L1, fail, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
4309
4372
  return { $loc, token: "}" };
4310
4373
  });
4311
4374
  function InsertCloseBrace(state) {
@@ -4317,7 +4380,7 @@ var Civet = (() => {
4317
4380
  return InsertCloseBrace$0(state);
4318
4381
  }
4319
4382
  }
4320
- var InsertConst$0 = $TV($EXPECT($L16, fail, 'InsertConst ""'), function($skip, $loc, $0, $1) {
4383
+ var InsertConst$0 = $TV($EXPECT($L1, fail, 'InsertConst ""'), function($skip, $loc, $0, $1) {
4321
4384
  return { $loc, token: "const " };
4322
4385
  });
4323
4386
  function InsertConst(state) {
@@ -4329,7 +4392,7 @@ var Civet = (() => {
4329
4392
  return InsertConst$0(state);
4330
4393
  }
4331
4394
  }
4332
- var InsertReadonly$0 = $TV($EXPECT($L16, fail, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
4395
+ var InsertReadonly$0 = $TV($EXPECT($L1, fail, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
4333
4396
  return { ts: true, children: [{ $loc, token: "readonly " }] };
4334
4397
  });
4335
4398
  function InsertReadonly(state) {
@@ -4341,7 +4404,7 @@ var Civet = (() => {
4341
4404
  return InsertReadonly$0(state);
4342
4405
  }
4343
4406
  }
4344
- var InsertNewline$0 = $TV($EXPECT($L16, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
4407
+ var InsertNewline$0 = $TV($EXPECT($L1, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
4345
4408
  return "\n";
4346
4409
  });
4347
4410
  function InsertNewline(state) {
@@ -4353,8 +4416,8 @@ var Civet = (() => {
4353
4416
  return InsertNewline$0(state);
4354
4417
  }
4355
4418
  }
4356
- var InsertIndent$0 = $TV($EXPECT($L16, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
4357
- return "".padStart(global.currentIndent * 2);
4419
+ var InsertIndent$0 = $TV($EXPECT($L1, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
4420
+ return "".padStart(module.currentIndent * 2);
4358
4421
  });
4359
4422
  function InsertIndent(state) {
4360
4423
  if (state.verbose)
@@ -4365,7 +4428,7 @@ var Civet = (() => {
4365
4428
  return InsertIndent$0(state);
4366
4429
  }
4367
4430
  }
4368
- var InsertSpace$0 = $TV($EXPECT($L16, fail, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
4431
+ var InsertSpace$0 = $TV($EXPECT($L1, fail, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
4369
4432
  return { $loc, token: " " };
4370
4433
  });
4371
4434
  function InsertSpace(state) {
@@ -4377,7 +4440,7 @@ var Civet = (() => {
4377
4440
  return InsertSpace$0(state);
4378
4441
  }
4379
4442
  }
4380
- var InsertDot$0 = $TV($EXPECT($L16, fail, 'InsertDot ""'), function($skip, $loc, $0, $1) {
4443
+ var InsertDot$0 = $TV($EXPECT($L1, fail, 'InsertDot ""'), function($skip, $loc, $0, $1) {
4381
4444
  return { $loc, token: "." };
4382
4445
  });
4383
4446
  function InsertDot(state) {
@@ -4389,7 +4452,7 @@ var Civet = (() => {
4389
4452
  return InsertDot$0(state);
4390
4453
  }
4391
4454
  }
4392
- var InsertBreak$0 = $TV($EXPECT($L16, fail, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
4455
+ var InsertBreak$0 = $TV($EXPECT($L1, fail, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
4393
4456
  return { $loc, token: "break;" };
4394
4457
  });
4395
4458
  function InsertBreak(state) {
@@ -4401,11 +4464,13 @@ var Civet = (() => {
4401
4464
  return InsertBreak$0(state);
4402
4465
  }
4403
4466
  }
4404
- var Init$0 = $TS($S($E(Shebang), DirectivePrologue, $EXPECT($L16, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
4467
+ var Init$0 = $TS($S($E(Shebang), DirectivePrologue, $EXPECT($L1, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
4405
4468
  var directives = $2;
4406
- global.currentIndent = 0;
4407
- global.indentLevels = [0];
4408
- global.verbose = false;
4469
+ module.lastIndent = 0;
4470
+ module.trackedIndents = [0];
4471
+ module.currentIndent = 0;
4472
+ module.indentLevels = [0];
4473
+ module.verbose = false;
4409
4474
  if (directives) {
4410
4475
  const compatRe = /use coffee-compat/;
4411
4476
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
@@ -4436,7 +4501,13 @@ var Civet = (() => {
4436
4501
  }
4437
4502
  }
4438
4503
  var Indent$0 = $TV($Q($C($EXPECT($L139, fail, 'Indent " "'), $EXPECT($L140, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
4439
- return $1.length;
4504
+ const level = $1.length;
4505
+ module.lastIndent = level;
4506
+ return {
4507
+ $loc,
4508
+ token: "".padStart(level * 2),
4509
+ level
4510
+ };
4440
4511
  });
4441
4512
  function Indent(state) {
4442
4513
  if (state.verbose)
@@ -4447,13 +4518,70 @@ var Civet = (() => {
4447
4518
  return Indent$0(state);
4448
4519
  }
4449
4520
  }
4450
- var PushIndent$0 = $TV($EXPECT($L16, fail, 'PushIndent ""'), function($skip, $loc, $0, $1) {
4451
- global.currentIndent++;
4452
- if (global.verbose) {
4453
- console.log("pushing indent", global.currentIndent);
4521
+ var TrackIndent$0 = $TV($EXPECT($L1, fail, 'TrackIndent ""'), function($skip, $loc, $0, $1) {
4522
+ module.trackedIndents.push(module.lastIndent);
4523
+ });
4524
+ function TrackIndent(state) {
4525
+ if (state.verbose)
4526
+ console.log("ENTER:", "TrackIndent");
4527
+ if (state.tokenize) {
4528
+ return $TOKEN("TrackIndent", state, TrackIndent$0(state));
4529
+ } else {
4530
+ return TrackIndent$0(state);
4531
+ }
4532
+ }
4533
+ var RestoreIndent$0 = $TV($EXPECT($L1, fail, 'RestoreIndent ""'), function($skip, $loc, $0, $1) {
4534
+ const topLevel = module.trackedIndents.pop();
4535
+ module.lastIndent = topLevel;
4536
+ });
4537
+ function RestoreIndent(state) {
4538
+ if (state.verbose)
4539
+ console.log("ENTER:", "RestoreIndent");
4540
+ if (state.tokenize) {
4541
+ return $TOKEN("RestoreIndent", state, RestoreIndent$0(state));
4542
+ } else {
4543
+ return RestoreIndent$0(state);
4544
+ }
4545
+ }
4546
+ var Samedent$0 = $TS($S($E(EOS), Indent), function($skip, $loc, $0, $1, $2) {
4547
+ var indent = $2;
4548
+ if (indent.level === module.trackedIndents[module.trackedIndents.length - 1]) {
4549
+ return $0;
4454
4550
  }
4455
- global.indentLevels.push(global.currentIndent);
4456
- return global.currentIndent;
4551
+ return $skip;
4552
+ });
4553
+ function Samedent(state) {
4554
+ if (state.verbose)
4555
+ console.log("ENTER:", "Samedent");
4556
+ if (state.tokenize) {
4557
+ return $TOKEN("Samedent", state, Samedent$0(state));
4558
+ } else {
4559
+ return Samedent$0(state);
4560
+ }
4561
+ }
4562
+ var IndentedFurther$0 = $TS($S($E(EOS), Indent), function($skip, $loc, $0, $1, $2) {
4563
+ var indent = $2;
4564
+ if (indent.level > module.trackedIndents[module.trackedIndents.length - 1]) {
4565
+ return $0;
4566
+ }
4567
+ return $skip;
4568
+ });
4569
+ function IndentedFurther(state) {
4570
+ if (state.verbose)
4571
+ console.log("ENTER:", "IndentedFurther");
4572
+ if (state.tokenize) {
4573
+ return $TOKEN("IndentedFurther", state, IndentedFurther$0(state));
4574
+ } else {
4575
+ return IndentedFurther$0(state);
4576
+ }
4577
+ }
4578
+ var PushIndent$0 = $TV($EXPECT($L1, fail, 'PushIndent ""'), function($skip, $loc, $0, $1) {
4579
+ module.currentIndent++;
4580
+ if (module.verbose) {
4581
+ console.log("pushing indent", module.currentIndent);
4582
+ }
4583
+ module.indentLevels.push(module.currentIndent);
4584
+ return module.currentIndent;
4457
4585
  });
4458
4586
  function PushIndent(state) {
4459
4587
  if (state.verbose)
@@ -4464,13 +4592,13 @@ var Civet = (() => {
4464
4592
  return PushIndent$0(state);
4465
4593
  }
4466
4594
  }
4467
- var PopIndent$0 = $TV($EXPECT($L16, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
4468
- if (global.verbose) {
4469
- console.log("popping indent", global.indentLevels[global.indentLevels.length - 1], "->", global.indentLevels[global.indentLevels.length - 2]);
4595
+ var PopIndent$0 = $TV($EXPECT($L1, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
4596
+ if (module.verbose) {
4597
+ console.log("popping indent", module.indentLevels[module.indentLevels.length - 1], "->", module.indentLevels[module.indentLevels.length - 2]);
4470
4598
  }
4471
- global.indentLevels.pop();
4472
- global.currentIndent = global.indentLevels[global.indentLevels.length - 1];
4473
- return global.currentIndent;
4599
+ module.indentLevels.pop();
4600
+ module.currentIndent = module.indentLevels[module.indentLevels.length - 1];
4601
+ return module.currentIndent;
4474
4602
  });
4475
4603
  function PopIndent(state) {
4476
4604
  if (state.verbose)
@@ -4484,18 +4612,19 @@ var Civet = (() => {
4484
4612
  var Nested$0 = $TS($S($E(EOS), Indent), function($skip, $loc, $0, $1, $2) {
4485
4613
  var eos = $1;
4486
4614
  var indent = $2;
4487
- const currentIndent = global.indentLevels[global.indentLevels.length - 1];
4488
- if (global.verbose) {
4489
- console.log("global indent", global.currentIndent);
4490
- console.log("Indented", indent, currentIndent);
4491
- }
4492
- if (indent !== currentIndent) {
4493
- if (global.verbose) {
4615
+ const { level } = indent;
4616
+ const currentIndent = module.indentLevels[module.indentLevels.length - 1];
4617
+ if (module.verbose) {
4618
+ console.log("global indent", module.currentIndent);
4619
+ console.log("Indented", level, currentIndent);
4620
+ }
4621
+ if (level !== currentIndent) {
4622
+ if (module.verbose) {
4494
4623
  console.log("skipped nested");
4495
4624
  }
4496
4625
  return $skip;
4497
4626
  }
4498
- return [eos, "".padStart(indent * 2)];
4627
+ return $0;
4499
4628
  });
4500
4629
  function Nested(state) {
4501
4630
  if (state.verbose)
@@ -4506,31 +4635,6 @@ var Civet = (() => {
4506
4635
  return Nested$0(state);
4507
4636
  }
4508
4637
  }
4509
- var NestedFurther$0 = $TS($S($E(EOS), Indent), function($skip, $loc, $0, $1, $2) {
4510
- var eos = $1;
4511
- var indent = $2;
4512
- const currentIndent = global.indentLevels[global.indentLevels.length - 1];
4513
- if (global.verbose) {
4514
- console.log("global indent", global.currentIndent);
4515
- console.log("Indented", indent, currentIndent);
4516
- }
4517
- if (indent !== currentIndent + 1) {
4518
- if (global.verbose) {
4519
- console.log("skipped nested");
4520
- }
4521
- return $skip;
4522
- }
4523
- return [eos, "".padStart(indent * 2)];
4524
- });
4525
- function NestedFurther(state) {
4526
- if (state.verbose)
4527
- console.log("ENTER:", "NestedFurther");
4528
- if (state.tokenize) {
4529
- return $TOKEN("NestedFurther", state, NestedFurther$0(state));
4530
- } else {
4531
- return NestedFurther$0(state);
4532
- }
4533
- }
4534
4638
  module.exports = {
4535
4639
  parse
4536
4640
  };