@danielx/civet 0.4.3 → 0.4.5

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
@@ -505,7 +505,6 @@ var Civet = (() => {
505
505
  PropertyName,
506
506
  MethodDefinition,
507
507
  MethodModifier,
508
- ConstructorShorthand,
509
508
  MethodSignature,
510
509
  ClassElementName,
511
510
  PrivateIdentifier,
@@ -535,6 +534,7 @@ var Civet = (() => {
535
534
  NestedCaseClauses,
536
535
  NestedCaseClause,
537
536
  CaseClause,
537
+ CaseExpressionList,
538
538
  ImpliedColon,
539
539
  TryStatement,
540
540
  CatchClause,
@@ -580,12 +580,12 @@ var Civet = (() => {
580
580
  OctalIntegerLiteral,
581
581
  HexLiteral,
582
582
  StringLiteral,
583
- DoubleStringCharacter,
584
- SingleStringCharacter,
583
+ BasicStringLiteral,
584
+ DoubleStringCharacters,
585
+ SingleStringCharacters,
585
586
  TripleDoubleStringCharacters,
586
587
  TripleSingleStringCharacters,
587
588
  CoffeeStringSubstitution,
588
- CoffeeSubstitutionStart,
589
589
  RegularExpressionLiteral,
590
590
  RegularExpressionBody,
591
591
  RegExpCharacter,
@@ -593,6 +593,7 @@ var Civet = (() => {
593
593
  TemplateLiteral,
594
594
  TemplateSubstitution,
595
595
  TemplateCharacters,
596
+ TemplateBlockCharacters,
596
597
  ReservedWord,
597
598
  Comment,
598
599
  SingleLineComment,
@@ -613,13 +614,18 @@ var Civet = (() => {
613
614
  As,
614
615
  Async,
615
616
  Await,
617
+ Case,
616
618
  Catch,
617
619
  Class,
618
620
  CloseBrace,
619
621
  CloseBracket,
620
622
  CloseParen,
623
+ CoffeeSubstitutionStart,
621
624
  Colon,
625
+ ConstructorShorthand,
626
+ Default,
622
627
  Dot,
628
+ DoubleQuote,
623
629
  Else,
624
630
  Equals,
625
631
  Export,
@@ -640,7 +646,10 @@ var Civet = (() => {
640
646
  QuestionMark,
641
647
  Return,
642
648
  Semicolon,
649
+ SingleQuote,
650
+ Star,
643
651
  Static,
652
+ SubstitutionStart,
644
653
  Switch,
645
654
  Target,
646
655
  TripleDoubleQuote,
@@ -650,6 +659,7 @@ var Civet = (() => {
650
659
  Unless,
651
660
  Var,
652
661
  When,
662
+ Yield,
653
663
  JSXElement,
654
664
  JSXSelfClosingElement,
655
665
  JSXOpeningElement,
@@ -731,130 +741,130 @@ var Civet = (() => {
731
741
  var $L1 = $L("");
732
742
  var $L2 = $L("++");
733
743
  var $L3 = $L("--");
734
- var $L4 = $L("yield");
735
- var $L5 = $L("*");
736
- var $L6 = $L("=>");
737
- var $L7 = $L("<");
738
- var $L8 = $L("extends");
739
- var $L9 = $L("this");
740
- var $L10 = $L("#");
741
- var $L11 = $L("@");
742
- var $L12 = $L("super");
743
- var $L13 = $L("import");
744
- var $L14 = $L("!");
745
- var $L15 = $L("::");
746
- var $L16 = $L("super[");
747
- var $L17 = $L("import.meta");
748
- var $L18 = $L(")");
749
- var $L19 = $L("...");
750
- var $L20 = $L("->");
751
- var $L21 = $L("null");
752
- var $L22 = $L("true");
753
- var $L23 = $L("false");
754
- var $L24 = $L(",");
755
- var $L25 = $L("]");
756
- var $L26 = $L("}");
757
- var $L27 = $L("**=");
758
- var $L28 = $L("*=");
759
- var $L29 = $L("/=");
760
- var $L30 = $L("%=");
761
- var $L31 = $L("+=");
762
- var $L32 = $L("-=");
763
- var $L33 = $L("<<=");
764
- var $L34 = $L(">>>=");
765
- var $L35 = $L(">>=");
766
- var $L36 = $L("&&=");
767
- var $L37 = $L("&=");
768
- var $L38 = $L("^=");
769
- var $L39 = $L("||=");
770
- var $L40 = $L("|=");
771
- var $L41 = $L("??=");
772
- var $L42 = $L("?=");
773
- var $L43 = $L("=");
774
- var $L44 = $L("**");
775
- var $L45 = $L("/");
776
- var $L46 = $L("%");
777
- var $L47 = $L("+");
778
- var $L48 = $L("-");
779
- var $L49 = $L("<=");
780
- var $L50 = $L(">=");
781
- var $L51 = $L("<<");
782
- var $L52 = $L(">>>");
783
- var $L53 = $L(">>");
784
- var $L54 = $L(">");
785
- var $L55 = $L("!==");
786
- var $L56 = $L("!=");
787
- var $L57 = $L("is");
788
- var $L58 = $L("===");
789
- var $L59 = $L("==");
790
- var $L60 = $L("and");
791
- var $L61 = $L("&&");
792
- var $L62 = $L("or");
793
- var $L63 = $L("||");
794
- var $L64 = $L("??");
795
- var $L65 = $L("instanceof");
796
- var $L66 = $L("in");
797
- var $L67 = $L("&");
798
- var $L68 = $L("^");
799
- var $L69 = $L("|");
800
- var $L70 = $L("delete");
801
- var $L71 = $L("void");
802
- var $L72 = $L("typeof");
803
- var $L73 = $L(";");
804
- var $L74 = $L("do");
805
- var $L75 = $L("while");
806
- var $L76 = $L("until");
807
- var $L77 = $L("case");
808
- var $L78 = $L("default");
809
- var $L79 = $L("finally");
810
- var $L80 = $L("break");
811
- var $L81 = $L("continue");
812
- var $L82 = $L("debugger");
813
- var $L83 = $L("throw");
814
- var $L84 = $L("import type");
815
- var $L85 = $L(":=");
816
- var $L86 = $L('"');
817
- var $L87 = $L("'");
818
- var $L88 = $L("#{");
819
- var $L89 = $L("${");
820
- var $L90 = $L("/*");
821
- var $L91 = $L("*/");
822
- var $L92 = $L("###");
823
- var $L93 = $L("as");
824
- var $L94 = $L("async");
825
- var $L95 = $L("await");
826
- var $L96 = $L("catch");
827
- var $L97 = $L("class");
828
- var $L98 = $L(":");
829
- var $L99 = $L(".");
830
- var $L100 = $L("else");
831
- var $L101 = $L("export");
832
- var $L102 = $L("for");
833
- var $L103 = $L("from");
834
- var $L104 = $L("function");
835
- var $L105 = $L("get");
836
- var $L106 = $L("set");
837
- var $L107 = $L("if");
838
- var $L108 = $L("let");
839
- var $L109 = $L("const");
840
- var $L110 = $L("loop");
841
- var $L111 = $L("new");
842
- var $L112 = $L("of");
843
- var $L113 = $L("{");
844
- var $L114 = $L("[");
845
- var $L115 = $L("(");
846
- var $L116 = $L("?");
847
- var $L117 = $L("return");
848
- var $L118 = $L("static");
849
- var $L119 = $L("switch");
850
- var $L120 = $L("target");
851
- var $L121 = $L('"""');
852
- var $L122 = $L("'''");
853
- var $L123 = $L("```");
854
- var $L124 = $L("try");
855
- var $L125 = $L("unless");
856
- var $L126 = $L("var");
857
- var $L127 = $L("when");
744
+ var $L4 = $L("=>");
745
+ var $L5 = $L("<");
746
+ var $L6 = $L("extends");
747
+ var $L7 = $L("this");
748
+ var $L8 = $L("#");
749
+ var $L9 = $L("@");
750
+ var $L10 = $L("super");
751
+ var $L11 = $L("import");
752
+ var $L12 = $L("!");
753
+ var $L13 = $L("::");
754
+ var $L14 = $L("super[");
755
+ var $L15 = $L("import.meta");
756
+ var $L16 = $L(")");
757
+ var $L17 = $L("...");
758
+ var $L18 = $L("->");
759
+ var $L19 = $L("null");
760
+ var $L20 = $L("true");
761
+ var $L21 = $L("false");
762
+ var $L22 = $L(",");
763
+ var $L23 = $L("]");
764
+ var $L24 = $L("}");
765
+ var $L25 = $L("**=");
766
+ var $L26 = $L("*=");
767
+ var $L27 = $L("/=");
768
+ var $L28 = $L("%=");
769
+ var $L29 = $L("+=");
770
+ var $L30 = $L("-=");
771
+ var $L31 = $L("<<=");
772
+ var $L32 = $L(">>>=");
773
+ var $L33 = $L(">>=");
774
+ var $L34 = $L("&&=");
775
+ var $L35 = $L("&=");
776
+ var $L36 = $L("^=");
777
+ var $L37 = $L("||=");
778
+ var $L38 = $L("|=");
779
+ var $L39 = $L("??=");
780
+ var $L40 = $L("?=");
781
+ var $L41 = $L("=");
782
+ var $L42 = $L("**");
783
+ var $L43 = $L("*");
784
+ var $L44 = $L("/");
785
+ var $L45 = $L("%");
786
+ var $L46 = $L("+");
787
+ var $L47 = $L("-");
788
+ var $L48 = $L("<=");
789
+ var $L49 = $L(">=");
790
+ var $L50 = $L("<<");
791
+ var $L51 = $L(">>>");
792
+ var $L52 = $L(">>");
793
+ var $L53 = $L(">");
794
+ var $L54 = $L("!==");
795
+ var $L55 = $L("!=");
796
+ var $L56 = $L("is");
797
+ var $L57 = $L("===");
798
+ var $L58 = $L("==");
799
+ var $L59 = $L("and");
800
+ var $L60 = $L("&&");
801
+ var $L61 = $L("or");
802
+ var $L62 = $L("||");
803
+ var $L63 = $L("??");
804
+ var $L64 = $L("instanceof");
805
+ var $L65 = $L("in");
806
+ var $L66 = $L("&");
807
+ var $L67 = $L("^");
808
+ var $L68 = $L("|");
809
+ var $L69 = $L("delete");
810
+ var $L70 = $L("void");
811
+ var $L71 = $L("typeof");
812
+ var $L72 = $L(";");
813
+ var $L73 = $L("do");
814
+ var $L74 = $L("while");
815
+ var $L75 = $L("until");
816
+ var $L76 = $L("finally");
817
+ var $L77 = $L("break");
818
+ var $L78 = $L("continue");
819
+ var $L79 = $L("debugger");
820
+ var $L80 = $L("throw");
821
+ var $L81 = $L("import type");
822
+ var $L82 = $L("default");
823
+ var $L83 = $L(":=");
824
+ var $L84 = $L("/*");
825
+ var $L85 = $L("*/");
826
+ var $L86 = $L("###");
827
+ var $L87 = $L("as");
828
+ var $L88 = $L("async");
829
+ var $L89 = $L("await");
830
+ var $L90 = $L("case");
831
+ var $L91 = $L("catch");
832
+ var $L92 = $L("class");
833
+ var $L93 = $L("#{");
834
+ var $L94 = $L(":");
835
+ var $L95 = $L(".");
836
+ var $L96 = $L('"');
837
+ var $L97 = $L("else");
838
+ var $L98 = $L("export");
839
+ var $L99 = $L("for");
840
+ var $L100 = $L("from");
841
+ var $L101 = $L("function");
842
+ var $L102 = $L("get");
843
+ var $L103 = $L("set");
844
+ var $L104 = $L("if");
845
+ var $L105 = $L("let");
846
+ var $L106 = $L("const");
847
+ var $L107 = $L("loop");
848
+ var $L108 = $L("new");
849
+ var $L109 = $L("of");
850
+ var $L110 = $L("{");
851
+ var $L111 = $L("[");
852
+ var $L112 = $L("(");
853
+ var $L113 = $L("?");
854
+ var $L114 = $L("return");
855
+ var $L115 = $L("'");
856
+ var $L116 = $L("static");
857
+ var $L117 = $L("${");
858
+ var $L118 = $L("switch");
859
+ var $L119 = $L("target");
860
+ var $L120 = $L('"""');
861
+ var $L121 = $L("'''");
862
+ var $L122 = $L("```");
863
+ var $L123 = $L("try");
864
+ var $L124 = $L("unless");
865
+ var $L125 = $L("var");
866
+ var $L126 = $L("when");
867
+ var $L127 = $L("yield");
858
868
  var $L128 = $L("/>");
859
869
  var $L129 = $L("</");
860
870
  var $L130 = $L("<>");
@@ -879,21 +889,21 @@ var Civet = (() => {
879
889
  var $R6 = $R(new RegExp("0[bB][01](?:[01]|_[01])*", "suy"));
880
890
  var $R7 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*", "suy"));
881
891
  var $R8 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
882
- var $R9 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
883
- var $R10 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
892
+ var $R9 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
893
+ var $R10 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
884
894
  var $R11 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
885
895
  var $R12 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
886
896
  var $R13 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
887
897
  var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
888
898
  var $R15 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
889
899
  var $R16 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
890
- var $R17 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
891
- var $R18 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
892
- var $R19 = $R(new RegExp(".", "suy"));
893
- var $R20 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
894
- var $R21 = $R(new RegExp("[^\\r\\n]", "suy"));
895
- var $R22 = $R(new RegExp("[ \\t]+", "suy"));
896
- var $R23 = $R(new RegExp("[\\t ]+", "suy"));
900
+ var $R17 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
901
+ var $R18 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
902
+ var $R19 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
903
+ var $R20 = $R(new RegExp(".", "suy"));
904
+ var $R21 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
905
+ var $R22 = $R(new RegExp("[^\\r\\n]", "suy"));
906
+ var $R23 = $R(new RegExp("[ \\t]+", "suy"));
897
907
  var $R24 = $R(new RegExp("[\\s]+", "suy"));
898
908
  var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
899
909
  var $R26 = $R(new RegExp("\\s", "suy"));
@@ -1006,8 +1016,7 @@ var Civet = (() => {
1006
1016
  }
1007
1017
  var ApplicationStart$0 = $TS($S($N(EOS), _, $N(AdditionalReservedWords)), function($skip, $loc, $0, $1, $2, $3) {
1008
1018
  var spacing = $2;
1009
- spacing[0].token = spacing[0].token.replace(/^ ?/, "(");
1010
- return spacing;
1019
+ return module.insertTrimmingSpace(spacing, "(");
1011
1020
  });
1012
1021
  var ApplicationStart$1 = $S(IndentedApplicationAllowed, $Y(NestedObjectLiteral), InsertOpenParen);
1013
1022
  function ApplicationStart(state) {
@@ -1132,7 +1141,7 @@ var Civet = (() => {
1132
1141
  return AwaitExpression$0(state);
1133
1142
  }
1134
1143
  }
1135
- var YieldExpression$0 = $S($EXPECT($L4, fail, 'YieldExpression "yield"'), NonIdContinue, $E($S($Q(TrailingComment), $EXPECT($L5, fail, 'YieldExpression "*"'))), AssignmentExpression);
1144
+ var YieldExpression$0 = $S(Yield, $E($S($Q(TrailingComment), Star)), AssignmentExpression);
1136
1145
  function YieldExpression(state) {
1137
1146
  if (state.verbose)
1138
1147
  console.log("ENTER:", "YieldExpression");
@@ -1151,7 +1160,7 @@ var Civet = (() => {
1151
1160
  return ArrowFunction$0(state) || ArrowFunction$1(state);
1152
1161
  }
1153
1162
  }
1154
- var FatArrow$0 = $TS($S(__, $EXPECT($L6, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1163
+ var FatArrow$0 = $TS($S(__, $EXPECT($L4, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1155
1164
  var ws = $1;
1156
1165
  if (!ws.length)
1157
1166
  return " =>";
@@ -1247,10 +1256,10 @@ var Civet = (() => {
1247
1256
  return ClassHeritage$0(state);
1248
1257
  }
1249
1258
  }
1250
- var ExtendsToken$0 = $TV($EXPECT($L7, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1259
+ var ExtendsToken$0 = $TV($EXPECT($L5, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1251
1260
  return { $loc, token: "extends" };
1252
1261
  });
1253
- var ExtendsToken$1 = $TV($EXPECT($L8, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1262
+ var ExtendsToken$1 = $TV($EXPECT($L6, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1254
1263
  return { $loc, token: $1 };
1255
1264
  });
1256
1265
  function ExtendsToken(state) {
@@ -1320,11 +1329,11 @@ var Civet = (() => {
1320
1329
  return FieldDefinition$0(state) || FieldDefinition$1(state);
1321
1330
  }
1322
1331
  }
1323
- var This$0 = $TV($EXPECT($L9, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1332
+ var This$0 = $TV($EXPECT($L7, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1324
1333
  return { $loc, token: $1 };
1325
1334
  });
1326
- var This$1 = $S(AtAccessor, $S($E($EXPECT($L10, fail, 'This "#"')), IdentifierName));
1327
- var This$2 = $TV($EXPECT($L11, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1335
+ var This$1 = $S(AtAccessor, $S($E($EXPECT($L8, fail, 'This "#"')), IdentifierName));
1336
+ var This$2 = $TV($EXPECT($L9, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1328
1337
  return { $loc, token: "this" };
1329
1338
  });
1330
1339
  function This(state) {
@@ -1334,7 +1343,7 @@ var Civet = (() => {
1334
1343
  return This$0(state) || This$1(state) || This$2(state);
1335
1344
  }
1336
1345
  }
1337
- var AtAccessor$0 = $TV($EXPECT($L11, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1346
+ var AtAccessor$0 = $TV($EXPECT($L9, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1338
1347
  return { $loc, token: "this." };
1339
1348
  });
1340
1349
  function AtAccessor(state) {
@@ -1365,8 +1374,8 @@ var Civet = (() => {
1365
1374
  return NewExpression$0(state);
1366
1375
  }
1367
1376
  }
1368
- var CallExpression$0 = $S($EXPECT($L12, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1369
- var CallExpression$1 = $S($EXPECT($L13, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1377
+ var CallExpression$0 = $S($EXPECT($L10, fail, 'CallExpression "super"'), ArgumentsWithTrailingCallExpressions);
1378
+ var CallExpression$1 = $S($EXPECT($L11, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1370
1379
  var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest));
1371
1380
  function CallExpression(state) {
1372
1381
  if (state.tokenize) {
@@ -1395,7 +1404,7 @@ var Civet = (() => {
1395
1404
  return OptionalShorthand$0(state);
1396
1405
  }
1397
1406
  }
1398
- var NonNullAssertion$0 = $T($EXPECT($L14, fail, 'NonNullAssertion "!"'), function(value) {
1407
+ var NonNullAssertion$0 = $T($EXPECT($L12, fail, 'NonNullAssertion "!"'), function(value) {
1399
1408
  return { "ts": true, "children": value };
1400
1409
  });
1401
1410
  function NonNullAssertion(state) {
@@ -1429,7 +1438,7 @@ var Civet = (() => {
1429
1438
  }
1430
1439
  var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), OpenBracket, Expression, __, CloseBracket);
1431
1440
  var MemberExpressionRest$1 = $S($E($S($Y(EOS), IndentedFurther)), PropertyAccess);
1432
- var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L15, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1441
+ var MemberExpressionRest$2 = $TS($S($E($S($Y(EOS), IndentedFurther)), $EXPECT($L13, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2, $3) {
1433
1442
  var id = $3;
1434
1443
  if (id)
1435
1444
  return [".prototype.", id];
@@ -1453,7 +1462,7 @@ var Civet = (() => {
1453
1462
  return PropertyAccess$0(state);
1454
1463
  }
1455
1464
  }
1456
- var SuperProperty$0 = $S($EXPECT($L16, fail, 'SuperProperty "super["'), Expression, __, CloseBracket);
1465
+ var SuperProperty$0 = $S($EXPECT($L14, fail, 'SuperProperty "super["'), Expression, __, CloseBracket);
1457
1466
  function SuperProperty(state) {
1458
1467
  if (state.verbose)
1459
1468
  console.log("ENTER:", "SuperProperty");
@@ -1464,7 +1473,7 @@ var Civet = (() => {
1464
1473
  }
1465
1474
  }
1466
1475
  var MetaProperty$0 = $S(New, Dot, Target);
1467
- var MetaProperty$1 = $TV($EXPECT($L17, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1476
+ var MetaProperty$1 = $TV($EXPECT($L15, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1468
1477
  return { $loc, token: $1 };
1469
1478
  });
1470
1479
  function MetaProperty(state) {
@@ -1496,8 +1505,8 @@ var Civet = (() => {
1496
1505
  }
1497
1506
  }
1498
1507
  var ParameterElementDelimiter$0 = $S($Q(_), Comma);
1499
- var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L18, fail, 'ParameterElementDelimiter ")"')));
1500
- var ParameterElementDelimiter$2 = $TV($Y($S(__, $EXPECT($L18, fail, 'ParameterElementDelimiter ")"'))), function($skip, $loc, $0, $1) {
1508
+ var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L16, fail, 'ParameterElementDelimiter ")"')));
1509
+ var ParameterElementDelimiter$2 = $TV($Y($S(__, $EXPECT($L16, fail, 'ParameterElementDelimiter ")"'))), function($skip, $loc, $0, $1) {
1501
1510
  return { $loc, token: "," };
1502
1511
  });
1503
1512
  var ParameterElementDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
@@ -1584,7 +1593,7 @@ var Civet = (() => {
1584
1593
  return BindingProperty$0(state) || BindingProperty$1(state);
1585
1594
  }
1586
1595
  }
1587
- var BindingRestProperty$0 = $S($EXPECT($L19, fail, 'BindingRestProperty "..."'), BindingIdentifier);
1596
+ var BindingRestProperty$0 = $S($EXPECT($L17, fail, 'BindingRestProperty "..."'), BindingIdentifier);
1588
1597
  function BindingRestProperty(state) {
1589
1598
  if (state.verbose)
1590
1599
  console.log("ENTER:", "BindingRestProperty");
@@ -1632,7 +1641,7 @@ var Civet = (() => {
1632
1641
  return BindingElement$0(state);
1633
1642
  }
1634
1643
  }
1635
- var BindingRestElement$0 = $S($EXPECT($L19, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1644
+ var BindingRestElement$0 = $S($EXPECT($L17, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1636
1645
  function BindingRestElement(state) {
1637
1646
  if (state.verbose)
1638
1647
  console.log("ENTER:", "BindingRestElement");
@@ -1653,7 +1662,7 @@ var Civet = (() => {
1653
1662
  }
1654
1663
  }
1655
1664
  var FunctionExpression$0 = ThinArrowFunction;
1656
- var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S($EXPECT($L5, fail, 'FunctionExpression "*"'), __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1665
+ var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S(Star, __)), $E(BindingIdentifier), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1657
1666
  function FunctionExpression(state) {
1658
1667
  if (state.tokenize) {
1659
1668
  return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state));
@@ -1682,7 +1691,7 @@ var Civet = (() => {
1682
1691
  return ThinArrowFunction$0(state);
1683
1692
  }
1684
1693
  }
1685
- var Arrow$0 = $TV($EXPECT($L20, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1694
+ var Arrow$0 = $TV($EXPECT($L18, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1686
1695
  return { $loc, token: $1 };
1687
1696
  });
1688
1697
  function Arrow(state) {
@@ -1775,7 +1784,7 @@ var Civet = (() => {
1775
1784
  return Literal$0(state) || Literal$1(state) || Literal$2(state) || Literal$3(state);
1776
1785
  }
1777
1786
  }
1778
- var NullLiteral$0 = $TV($EXPECT($L21, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1787
+ var NullLiteral$0 = $TV($EXPECT($L19, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1779
1788
  return { $loc, token: $1 };
1780
1789
  });
1781
1790
  function NullLiteral(state) {
@@ -1787,7 +1796,7 @@ var Civet = (() => {
1787
1796
  return NullLiteral$0(state);
1788
1797
  }
1789
1798
  }
1790
- var BooleanLiteral$0 = $TV($C($EXPECT($L22, fail, 'BooleanLiteral "true"'), $EXPECT($L23, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1799
+ var BooleanLiteral$0 = $TV($C($EXPECT($L20, fail, 'BooleanLiteral "true"'), $EXPECT($L21, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1791
1800
  return { $loc, token: $1 };
1792
1801
  });
1793
1802
  function BooleanLiteral(state) {
@@ -1799,7 +1808,7 @@ var Civet = (() => {
1799
1808
  return BooleanLiteral$0(state);
1800
1809
  }
1801
1810
  }
1802
- var Comma$0 = $TV($EXPECT($L24, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
1811
+ var Comma$0 = $TV($EXPECT($L22, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
1803
1812
  return { $loc, token: $1 };
1804
1813
  });
1805
1814
  function Comma(state) {
@@ -1881,7 +1890,7 @@ var Civet = (() => {
1881
1890
  }
1882
1891
  }
1883
1892
  var ArrayElementDelimiter$0 = $S($Q(_), Comma);
1884
- var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L25, fail, 'ArrayElementDelimiter "]"')));
1893
+ var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L23, fail, 'ArrayElementDelimiter "]"')));
1885
1894
  var ArrayElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1886
1895
  return { $loc, token: "," };
1887
1896
  });
@@ -1912,7 +1921,7 @@ var Civet = (() => {
1912
1921
  return InlineElementList$0(state);
1913
1922
  }
1914
1923
  }
1915
- var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L19, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1924
+ var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L17, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1916
1925
  function ArrayElementExpression(state) {
1917
1926
  if (state.verbose)
1918
1927
  console.log("ENTER:", "ArrayElementExpression");
@@ -1979,7 +1988,7 @@ var Civet = (() => {
1979
1988
  }
1980
1989
  }
1981
1990
  var ObjectPropertyDelimiter$0 = $S($Q(_), Comma);
1982
- var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L26, fail, 'ObjectPropertyDelimiter "}"')));
1991
+ var ObjectPropertyDelimiter$1 = $Y($S(__, $EXPECT($L24, fail, 'ObjectPropertyDelimiter "}"')));
1983
1992
  var ObjectPropertyDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1984
1993
  return { $loc, token: "," };
1985
1994
  });
@@ -2002,7 +2011,7 @@ var Civet = (() => {
2002
2011
  }
2003
2012
  var PropertyDefinition$0 = $S(PropertyName, __, Colon, AssignmentExpression);
2004
2013
  var PropertyDefinition$1 = MethodDefinition;
2005
- var PropertyDefinition$2 = $S($EXPECT($L19, fail, 'PropertyDefinition "..."'), AssignmentExpression);
2014
+ var PropertyDefinition$2 = $S($EXPECT($L17, fail, 'PropertyDefinition "..."'), AssignmentExpression);
2006
2015
  var PropertyDefinition$3 = IdentifierReference;
2007
2016
  function PropertyDefinition(state) {
2008
2017
  if (state.tokenize) {
@@ -2014,7 +2023,7 @@ var Civet = (() => {
2014
2023
  var PropertyName$0 = NumericLiteral;
2015
2024
  var PropertyName$1 = StringLiteral;
2016
2025
  var PropertyName$2 = IdentifierName;
2017
- var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L25, fail, 'PropertyName "]"'));
2026
+ var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L23, fail, 'PropertyName "]"'));
2018
2027
  function PropertyName(state) {
2019
2028
  if (state.tokenize) {
2020
2029
  return $TOKEN("PropertyName", state, PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state));
@@ -2033,8 +2042,8 @@ var Civet = (() => {
2033
2042
  }
2034
2043
  }
2035
2044
  var MethodModifier$0 = $S(GetOrSet, $Q(TrailingComment));
2036
- var MethodModifier$1 = $S($S(Async, __), $E($S($EXPECT($L5, fail, 'MethodModifier "*"'), __)));
2037
- var MethodModifier$2 = $S($EXPECT($L5, fail, 'MethodModifier "*"'), __);
2045
+ var MethodModifier$1 = $S($S(Async, __), $E($S(Star, __)));
2046
+ var MethodModifier$2 = $S(Star, __);
2038
2047
  var MethodModifier$3 = $S(Async, __);
2039
2048
  function MethodModifier(state) {
2040
2049
  if (state.tokenize) {
@@ -2043,18 +2052,6 @@ var Civet = (() => {
2043
2052
  return MethodModifier$0(state) || MethodModifier$1(state) || MethodModifier$2(state) || MethodModifier$3(state);
2044
2053
  }
2045
2054
  }
2046
- var ConstructorShorthand$0 = $TV($EXPECT($L11, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
2047
- return { $loc, token: "constructor" };
2048
- });
2049
- function ConstructorShorthand(state) {
2050
- if (state.verbose)
2051
- console.log("ENTER:", "ConstructorShorthand");
2052
- if (state.tokenize) {
2053
- return $TOKEN("ConstructorShorthand", state, ConstructorShorthand$0(state));
2054
- } else {
2055
- return ConstructorShorthand$0(state);
2056
- }
2057
- }
2058
2055
  var MethodSignature$0 = $S(ConstructorShorthand, Parameters);
2059
2056
  var MethodSignature$1 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
2060
2057
  function MethodSignature(state) {
@@ -2073,7 +2070,7 @@ var Civet = (() => {
2073
2070
  return ClassElementName$0(state) || ClassElementName$1(state);
2074
2071
  }
2075
2072
  }
2076
- var PrivateIdentifier$0 = $S($EXPECT($L10, fail, 'PrivateIdentifier "#"'), IdentifierName);
2073
+ var PrivateIdentifier$0 = $S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName);
2077
2074
  function PrivateIdentifier(state) {
2078
2075
  if (state.verbose)
2079
2076
  console.log("ENTER:", "PrivateIdentifier");
@@ -2095,25 +2092,25 @@ var Civet = (() => {
2095
2092
  return AssignmentOp$0(state);
2096
2093
  }
2097
2094
  }
2098
- var AssignmentOpSymbol$0 = $EXPECT($L27, fail, 'AssignmentOpSymbol "**="');
2099
- var AssignmentOpSymbol$1 = $EXPECT($L28, fail, 'AssignmentOpSymbol "*="');
2100
- var AssignmentOpSymbol$2 = $EXPECT($L29, fail, 'AssignmentOpSymbol "/="');
2101
- var AssignmentOpSymbol$3 = $EXPECT($L30, fail, 'AssignmentOpSymbol "%="');
2102
- var AssignmentOpSymbol$4 = $EXPECT($L31, fail, 'AssignmentOpSymbol "+="');
2103
- var AssignmentOpSymbol$5 = $EXPECT($L32, fail, 'AssignmentOpSymbol "-="');
2104
- var AssignmentOpSymbol$6 = $EXPECT($L33, fail, 'AssignmentOpSymbol "<<="');
2105
- var AssignmentOpSymbol$7 = $EXPECT($L34, fail, 'AssignmentOpSymbol ">>>="');
2106
- var AssignmentOpSymbol$8 = $EXPECT($L35, fail, 'AssignmentOpSymbol ">>="');
2107
- var AssignmentOpSymbol$9 = $EXPECT($L36, fail, 'AssignmentOpSymbol "&&="');
2108
- var AssignmentOpSymbol$10 = $EXPECT($L37, fail, 'AssignmentOpSymbol "&="');
2109
- var AssignmentOpSymbol$11 = $EXPECT($L38, fail, 'AssignmentOpSymbol "^="');
2110
- var AssignmentOpSymbol$12 = $EXPECT($L39, fail, 'AssignmentOpSymbol "||="');
2111
- var AssignmentOpSymbol$13 = $EXPECT($L40, fail, 'AssignmentOpSymbol "|="');
2112
- var AssignmentOpSymbol$14 = $EXPECT($L41, fail, 'AssignmentOpSymbol "??="');
2113
- var AssignmentOpSymbol$15 = $T($EXPECT($L42, fail, 'AssignmentOpSymbol "?="'), function(value) {
2095
+ var AssignmentOpSymbol$0 = $EXPECT($L25, fail, 'AssignmentOpSymbol "**="');
2096
+ var AssignmentOpSymbol$1 = $EXPECT($L26, fail, 'AssignmentOpSymbol "*="');
2097
+ var AssignmentOpSymbol$2 = $EXPECT($L27, fail, 'AssignmentOpSymbol "/="');
2098
+ var AssignmentOpSymbol$3 = $EXPECT($L28, fail, 'AssignmentOpSymbol "%="');
2099
+ var AssignmentOpSymbol$4 = $EXPECT($L29, fail, 'AssignmentOpSymbol "+="');
2100
+ var AssignmentOpSymbol$5 = $EXPECT($L30, fail, 'AssignmentOpSymbol "-="');
2101
+ var AssignmentOpSymbol$6 = $EXPECT($L31, fail, 'AssignmentOpSymbol "<<="');
2102
+ var AssignmentOpSymbol$7 = $EXPECT($L32, fail, 'AssignmentOpSymbol ">>>="');
2103
+ var AssignmentOpSymbol$8 = $EXPECT($L33, fail, 'AssignmentOpSymbol ">>="');
2104
+ var AssignmentOpSymbol$9 = $EXPECT($L34, fail, 'AssignmentOpSymbol "&&="');
2105
+ var AssignmentOpSymbol$10 = $EXPECT($L35, fail, 'AssignmentOpSymbol "&="');
2106
+ var AssignmentOpSymbol$11 = $EXPECT($L36, fail, 'AssignmentOpSymbol "^="');
2107
+ var AssignmentOpSymbol$12 = $EXPECT($L37, fail, 'AssignmentOpSymbol "||="');
2108
+ var AssignmentOpSymbol$13 = $EXPECT($L38, fail, 'AssignmentOpSymbol "|="');
2109
+ var AssignmentOpSymbol$14 = $EXPECT($L39, fail, 'AssignmentOpSymbol "??="');
2110
+ var AssignmentOpSymbol$15 = $T($EXPECT($L40, fail, 'AssignmentOpSymbol "?="'), function(value) {
2114
2111
  return "??=";
2115
2112
  });
2116
- var AssignmentOpSymbol$16 = $EXPECT($L43, fail, 'AssignmentOpSymbol "="');
2113
+ var AssignmentOpSymbol$16 = $EXPECT($L41, fail, 'AssignmentOpSymbol "="');
2117
2114
  function AssignmentOpSymbol(state) {
2118
2115
  if (state.tokenize) {
2119
2116
  return $TOKEN("AssignmentOpSymbol", state, AssignmentOpSymbol$0(state) || AssignmentOpSymbol$1(state) || AssignmentOpSymbol$2(state) || AssignmentOpSymbol$3(state) || AssignmentOpSymbol$4(state) || AssignmentOpSymbol$5(state) || AssignmentOpSymbol$6(state) || AssignmentOpSymbol$7(state) || AssignmentOpSymbol$8(state) || AssignmentOpSymbol$9(state) || AssignmentOpSymbol$10(state) || AssignmentOpSymbol$11(state) || AssignmentOpSymbol$12(state) || AssignmentOpSymbol$13(state) || AssignmentOpSymbol$14(state) || AssignmentOpSymbol$15(state) || AssignmentOpSymbol$16(state));
@@ -2133,52 +2130,52 @@ var Civet = (() => {
2133
2130
  return BinaryOp$0(state);
2134
2131
  }
2135
2132
  }
2136
- var BinaryOpSymbol$0 = $EXPECT($L44, fail, 'BinaryOpSymbol "**"');
2137
- var BinaryOpSymbol$1 = $EXPECT($L5, fail, 'BinaryOpSymbol "*"');
2138
- var BinaryOpSymbol$2 = $EXPECT($L45, fail, 'BinaryOpSymbol "/"');
2139
- var BinaryOpSymbol$3 = $EXPECT($L46, fail, 'BinaryOpSymbol "%"');
2140
- var BinaryOpSymbol$4 = $EXPECT($L47, fail, 'BinaryOpSymbol "+"');
2141
- var BinaryOpSymbol$5 = $EXPECT($L48, fail, 'BinaryOpSymbol "-"');
2142
- var BinaryOpSymbol$6 = $EXPECT($L49, fail, 'BinaryOpSymbol "<="');
2143
- var BinaryOpSymbol$7 = $EXPECT($L50, fail, 'BinaryOpSymbol ">="');
2144
- var BinaryOpSymbol$8 = $EXPECT($L51, fail, 'BinaryOpSymbol "<<"');
2145
- var BinaryOpSymbol$9 = $EXPECT($L7, fail, 'BinaryOpSymbol "<"');
2146
- var BinaryOpSymbol$10 = $EXPECT($L52, fail, 'BinaryOpSymbol ">>>"');
2147
- var BinaryOpSymbol$11 = $EXPECT($L53, fail, 'BinaryOpSymbol ">>"');
2148
- var BinaryOpSymbol$12 = $EXPECT($L54, fail, 'BinaryOpSymbol ">"');
2149
- var BinaryOpSymbol$13 = $EXPECT($L55, fail, 'BinaryOpSymbol "!=="');
2150
- var BinaryOpSymbol$14 = $TV($EXPECT($L56, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2133
+ var BinaryOpSymbol$0 = $EXPECT($L42, fail, 'BinaryOpSymbol "**"');
2134
+ var BinaryOpSymbol$1 = $EXPECT($L43, fail, 'BinaryOpSymbol "*"');
2135
+ var BinaryOpSymbol$2 = $EXPECT($L44, fail, 'BinaryOpSymbol "/"');
2136
+ var BinaryOpSymbol$3 = $EXPECT($L45, fail, 'BinaryOpSymbol "%"');
2137
+ var BinaryOpSymbol$4 = $EXPECT($L46, fail, 'BinaryOpSymbol "+"');
2138
+ var BinaryOpSymbol$5 = $EXPECT($L47, fail, 'BinaryOpSymbol "-"');
2139
+ var BinaryOpSymbol$6 = $EXPECT($L48, fail, 'BinaryOpSymbol "<="');
2140
+ var BinaryOpSymbol$7 = $EXPECT($L49, fail, 'BinaryOpSymbol ">="');
2141
+ var BinaryOpSymbol$8 = $EXPECT($L50, fail, 'BinaryOpSymbol "<<"');
2142
+ var BinaryOpSymbol$9 = $EXPECT($L5, fail, 'BinaryOpSymbol "<"');
2143
+ var BinaryOpSymbol$10 = $EXPECT($L51, fail, 'BinaryOpSymbol ">>>"');
2144
+ var BinaryOpSymbol$11 = $EXPECT($L52, fail, 'BinaryOpSymbol ">>"');
2145
+ var BinaryOpSymbol$12 = $EXPECT($L53, fail, 'BinaryOpSymbol ">"');
2146
+ var BinaryOpSymbol$13 = $EXPECT($L54, fail, 'BinaryOpSymbol "!=="');
2147
+ var BinaryOpSymbol$14 = $TV($EXPECT($L55, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2151
2148
  if (module.coffeeCompat)
2152
2149
  return "!==";
2153
2150
  return $1;
2154
2151
  });
2155
- var BinaryOpSymbol$15 = $T($S($EXPECT($L57, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2152
+ var BinaryOpSymbol$15 = $T($S($EXPECT($L56, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2156
2153
  return "===";
2157
2154
  });
2158
- var BinaryOpSymbol$16 = $EXPECT($L58, fail, 'BinaryOpSymbol "==="');
2159
- var BinaryOpSymbol$17 = $TV($EXPECT($L59, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2155
+ var BinaryOpSymbol$16 = $EXPECT($L57, fail, 'BinaryOpSymbol "==="');
2156
+ var BinaryOpSymbol$17 = $TV($EXPECT($L58, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2160
2157
  if (module.coffeeCompat)
2161
2158
  return "===";
2162
2159
  return $1;
2163
2160
  });
2164
- var BinaryOpSymbol$18 = $T($S($EXPECT($L60, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2161
+ var BinaryOpSymbol$18 = $T($S($EXPECT($L59, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2165
2162
  return "&&";
2166
2163
  });
2167
- var BinaryOpSymbol$19 = $EXPECT($L61, fail, 'BinaryOpSymbol "&&"');
2168
- var BinaryOpSymbol$20 = $T($S($EXPECT($L62, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2164
+ var BinaryOpSymbol$19 = $EXPECT($L60, fail, 'BinaryOpSymbol "&&"');
2165
+ var BinaryOpSymbol$20 = $T($S($EXPECT($L61, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2169
2166
  return "||";
2170
2167
  });
2171
- var BinaryOpSymbol$21 = $EXPECT($L63, fail, 'BinaryOpSymbol "||"');
2172
- var BinaryOpSymbol$22 = $EXPECT($L64, fail, 'BinaryOpSymbol "??"');
2173
- var BinaryOpSymbol$23 = $TS($S($EXPECT($L65, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2168
+ var BinaryOpSymbol$21 = $EXPECT($L62, fail, 'BinaryOpSymbol "||"');
2169
+ var BinaryOpSymbol$22 = $EXPECT($L63, fail, 'BinaryOpSymbol "??"');
2170
+ var BinaryOpSymbol$23 = $TS($S($EXPECT($L64, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2174
2171
  return $1;
2175
2172
  });
2176
- var BinaryOpSymbol$24 = $TS($S($EXPECT($L66, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2173
+ var BinaryOpSymbol$24 = $TS($S($EXPECT($L65, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2177
2174
  return $1;
2178
2175
  });
2179
- var BinaryOpSymbol$25 = $EXPECT($L67, fail, 'BinaryOpSymbol "&"');
2180
- var BinaryOpSymbol$26 = $EXPECT($L68, fail, 'BinaryOpSymbol "^"');
2181
- var BinaryOpSymbol$27 = $EXPECT($L69, fail, 'BinaryOpSymbol "|"');
2176
+ var BinaryOpSymbol$25 = $EXPECT($L66, fail, 'BinaryOpSymbol "&"');
2177
+ var BinaryOpSymbol$26 = $EXPECT($L67, fail, 'BinaryOpSymbol "^"');
2178
+ var BinaryOpSymbol$27 = $EXPECT($L68, fail, 'BinaryOpSymbol "|"');
2182
2179
  function BinaryOpSymbol(state) {
2183
2180
  if (state.tokenize) {
2184
2181
  return $TOKEN("BinaryOpSymbol", state, BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state));
@@ -2187,7 +2184,7 @@ var Civet = (() => {
2187
2184
  }
2188
2185
  }
2189
2186
  var UnaryOp$0 = $R$0($EXPECT($R2, fail, "UnaryOp /[!~+-]/"));
2190
- var UnaryOp$1 = $S($C($EXPECT($L70, fail, 'UnaryOp "delete"'), $EXPECT($L71, fail, 'UnaryOp "void"'), $EXPECT($L72, fail, 'UnaryOp "typeof"')), NonIdContinue, __);
2187
+ var UnaryOp$1 = $S($C($EXPECT($L69, fail, 'UnaryOp "delete"'), $EXPECT($L70, fail, 'UnaryOp "void"'), $EXPECT($L71, fail, 'UnaryOp "typeof"')), NonIdContinue, __);
2191
2188
  function UnaryOp(state) {
2192
2189
  if (state.tokenize) {
2193
2190
  return $TOKEN("UnaryOp", state, UnaryOp$0(state) || UnaryOp$1(state));
@@ -2267,7 +2264,7 @@ var Civet = (() => {
2267
2264
  return Statement$0(state) || Statement$1(state) || Statement$2(state) || Statement$3(state) || Statement$4(state) || Statement$5(state) || Statement$6(state) || Statement$7(state) || Statement$8(state);
2268
2265
  }
2269
2266
  }
2270
- var EmptyStatement$0 = $S($Q(TrailingComment), $Y($EXPECT($L73, fail, 'EmptyStatement ";"')));
2267
+ var EmptyStatement$0 = $S($Q(TrailingComment), $Y($EXPECT($L72, fail, 'EmptyStatement ";"')));
2271
2268
  function EmptyStatement(state) {
2272
2269
  if (state.verbose)
2273
2270
  console.log("ENTER:", "EmptyStatement");
@@ -2332,7 +2329,7 @@ var Civet = (() => {
2332
2329
  return LoopStatement$0(state);
2333
2330
  }
2334
2331
  }
2335
- var DoWhileStatement$0 = $S($EXPECT($L74, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause);
2332
+ var DoWhileStatement$0 = $S($EXPECT($L73, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause);
2336
2333
  function DoWhileStatement(state) {
2337
2334
  if (state.verbose)
2338
2335
  console.log("ENTER:", "DoWhileStatement");
@@ -2352,7 +2349,7 @@ var Civet = (() => {
2352
2349
  return WhileStatement$0(state);
2353
2350
  }
2354
2351
  }
2355
- var WhileClause$0 = $TS($S($C($EXPECT($L75, fail, 'WhileClause "while"'), $EXPECT($L76, fail, 'WhileClause "until"')), NonIdContinue, Condition), function($skip, $loc, $0, $1, $2, $3) {
2352
+ var WhileClause$0 = $TS($S($C($EXPECT($L74, fail, 'WhileClause "while"'), $EXPECT($L75, fail, 'WhileClause "until"')), NonIdContinue, Condition), function($skip, $loc, $0, $1, $2, $3) {
2356
2353
  var kind = $1;
2357
2354
  var cond = $3;
2358
2355
  if (kind === "until") {
@@ -2411,7 +2408,7 @@ var Civet = (() => {
2411
2408
  return ForBinding$0(state) || ForBinding$1(state);
2412
2409
  }
2413
2410
  }
2414
- var SwitchStatement$0 = $S(Switch, NonIdContinue, Condition, CaseBlock);
2411
+ var SwitchStatement$0 = $S(Switch, Condition, CaseBlock);
2415
2412
  function SwitchStatement(state) {
2416
2413
  if (state.verbose)
2417
2414
  console.log("ENTER:", "SwitchStatement");
@@ -2455,9 +2452,9 @@ var Civet = (() => {
2455
2452
  return NestedCaseClause$0(state);
2456
2453
  }
2457
2454
  }
2458
- var CaseClause$0 = $S($EXPECT($L77, fail, 'CaseClause "case"'), NonIdContinue, $Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon, NestedBlockExpressions);
2459
- var CaseClause$1 = $S(When, $Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon, NestedBlockExpressions, InsertBreak);
2460
- var CaseClause$2 = $S($EXPECT($L78, fail, 'CaseClause "default"'), NonIdContinue, ImpliedColon, NestedBlockExpressions);
2455
+ var CaseClause$0 = $S(Case, CaseExpressionList, NestedBlockExpressions);
2456
+ var CaseClause$1 = $S(When, CaseExpressionList, NestedBlockExpressions, InsertBreak);
2457
+ var CaseClause$2 = $S(Default, ImpliedColon, NestedBlockExpressions);
2461
2458
  function CaseClause(state) {
2462
2459
  if (state.tokenize) {
2463
2460
  return $TOKEN("CaseClause", state, CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state));
@@ -2465,6 +2462,25 @@ var Civet = (() => {
2465
2462
  return CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state);
2466
2463
  }
2467
2464
  }
2465
+ var CaseExpressionList$0 = $TS($S($S($Q(_), ExpressionWithIndentedApplicationSuppressed, ImpliedColon), $Q($S(__, Comma, ExpressionWithIndentedApplicationSuppressed, ImpliedColon))), function($skip, $loc, $0, $1, $2) {
2466
+ const result = $2.map(([ws, _comma, exp, col]) => {
2467
+ module.insertTrimmingSpace(exp, "");
2468
+ if (ws.length)
2469
+ return [module.insertTrimmingSpace("case ", ws), exp, col];
2470
+ return ["case ", exp, col];
2471
+ });
2472
+ result.unshift($1);
2473
+ return result;
2474
+ });
2475
+ function CaseExpressionList(state) {
2476
+ if (state.verbose)
2477
+ console.log("ENTER:", "CaseExpressionList");
2478
+ if (state.tokenize) {
2479
+ return $TOKEN("CaseExpressionList", state, CaseExpressionList$0(state));
2480
+ } else {
2481
+ return CaseExpressionList$0(state);
2482
+ }
2483
+ }
2468
2484
  var ImpliedColon$0 = $S(__, Colon);
2469
2485
  var ImpliedColon$1 = $TV($EXPECT($L1, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
2470
2486
  return { $loc, token: ":" };
@@ -2512,7 +2528,7 @@ var Civet = (() => {
2512
2528
  return CatchBind$0(state) || CatchBind$1(state);
2513
2529
  }
2514
2530
  }
2515
- var Finally$0 = $S(__, $EXPECT($L79, fail, 'Finally "finally"'), BracedBlock);
2531
+ var Finally$0 = $S(__, $EXPECT($L76, fail, 'Finally "finally"'), BracedBlock);
2516
2532
  function Finally(state) {
2517
2533
  if (state.verbose)
2518
2534
  console.log("ENTER:", "Finally");
@@ -2540,7 +2556,7 @@ var Civet = (() => {
2540
2556
  return Condition$0(state) || Condition$1(state);
2541
2557
  }
2542
2558
  }
2543
- var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(Expression)), function($skip, $loc, $0, $1, $2) {
2559
+ var ExpressionWithIndentedApplicationSuppressed$0 = $TS($S(SuppressIndentedApplication, $E(AssignmentExpression)), function($skip, $loc, $0, $1, $2) {
2544
2560
  var exp = $2;
2545
2561
  module.suppressIndentedApplication = false;
2546
2562
  if (exp)
@@ -2578,11 +2594,11 @@ var Civet = (() => {
2578
2594
  return ExpressionStatement$0(state);
2579
2595
  }
2580
2596
  }
2581
- var KeywordStatement$0 = $S($EXPECT($L80, fail, 'KeywordStatement "break"'), NonIdContinue);
2582
- var KeywordStatement$1 = $S($EXPECT($L81, fail, 'KeywordStatement "continue"'), NonIdContinue);
2583
- var KeywordStatement$2 = $S($EXPECT($L82, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2597
+ var KeywordStatement$0 = $S($EXPECT($L77, fail, 'KeywordStatement "break"'), NonIdContinue);
2598
+ var KeywordStatement$1 = $S($EXPECT($L78, fail, 'KeywordStatement "continue"'), NonIdContinue);
2599
+ var KeywordStatement$2 = $S($EXPECT($L79, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2584
2600
  var KeywordStatement$3 = $S(Return, $E(MaybeNestedExpression));
2585
- var KeywordStatement$4 = $S($EXPECT($L83, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2601
+ var KeywordStatement$4 = $S($EXPECT($L80, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2586
2602
  function KeywordStatement(state) {
2587
2603
  if (state.tokenize) {
2588
2604
  return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state));
@@ -2599,7 +2615,7 @@ var Civet = (() => {
2599
2615
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2600
2616
  }
2601
2617
  }
2602
- var ImportDeclaration$0 = $T($S($EXPECT($L84, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2618
+ var ImportDeclaration$0 = $T($S($EXPECT($L81, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2603
2619
  return { "ts": true, "children": value };
2604
2620
  });
2605
2621
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -2644,7 +2660,7 @@ var Civet = (() => {
2644
2660
  return ImportClause$0(state) || ImportClause$1(state) || ImportClause$2(state);
2645
2661
  }
2646
2662
  }
2647
- var NameSpaceImport$0 = $S($EXPECT($L5, fail, 'NameSpaceImport "*"'), __, As, NonIdContinue, __, ImportedBinding);
2663
+ var NameSpaceImport$0 = $S(Star, __, As, NonIdContinue, __, ImportedBinding);
2648
2664
  function NameSpaceImport(state) {
2649
2665
  if (state.verbose)
2650
2666
  console.log("ENTER:", "NameSpaceImport");
@@ -2705,7 +2721,7 @@ var Civet = (() => {
2705
2721
  return ModuleSpecifier$0(state);
2706
2722
  }
2707
2723
  }
2708
- var UnprocessedModuleSpecifier$0 = StringLiteral;
2724
+ var UnprocessedModuleSpecifier$0 = BasicStringLiteral;
2709
2725
  var UnprocessedModuleSpecifier$1 = UnquotedSpecifier;
2710
2726
  function UnprocessedModuleSpecifier(state) {
2711
2727
  if (state.tokenize) {
@@ -2737,7 +2753,7 @@ var Civet = (() => {
2737
2753
  return ImportedBinding$0(state);
2738
2754
  }
2739
2755
  }
2740
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L78, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2756
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L82, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2741
2757
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
2742
2758
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
2743
2759
  function ExportDeclaration(state) {
@@ -2747,7 +2763,7 @@ var Civet = (() => {
2747
2763
  return ExportDeclaration$0(state) || ExportDeclaration$1(state) || ExportDeclaration$2(state);
2748
2764
  }
2749
2765
  }
2750
- var ExportFromClause$0 = $S($EXPECT($L5, fail, 'ExportFromClause "*"'), $E($S(__, As, NonIdContinue, __, ModuleExportName)));
2766
+ var ExportFromClause$0 = $S(Star, $E($S(__, As, NonIdContinue, __, ModuleExportName)));
2751
2767
  var ExportFromClause$1 = NamedExports;
2752
2768
  function ExportFromClause(state) {
2753
2769
  if (state.tokenize) {
@@ -2814,7 +2830,7 @@ var Civet = (() => {
2814
2830
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2815
2831
  }
2816
2832
  }
2817
- var ConstAssignment$0 = $TV($EXPECT($L85, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2833
+ var ConstAssignment$0 = $TV($EXPECT($L83, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2818
2834
  return { $loc, token: "=" };
2819
2835
  });
2820
2836
  function ConstAssignment(state) {
@@ -2949,37 +2965,7 @@ var Civet = (() => {
2949
2965
  }
2950
2966
  }
2951
2967
  var StringLiteral$0 = $TS($S(TripleDoubleQuote, $Q($C(TripleDoubleStringCharacters, CoffeeStringSubstitution)), TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2952
- var s = $1;
2953
- var strWithSubstitutions = $2;
2954
- var e = $3;
2955
- if (strWithSubstitutions.length === 0) {
2956
- return $0;
2957
- }
2958
- let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
2959
- const { token } = strWithSubstitutions[0];
2960
- if (token) {
2961
- initialSpacing = token.match(/^(\r?\n|\n)\s+/);
2962
- } else {
2963
- initialSpacing = false;
2964
- }
2965
- while (i < l) {
2966
- let segment = strWithSubstitutions[i];
2967
- if (segment.token) {
2968
- segment = module.dedentBlockString(segment, initialSpacing, false);
2969
- if (i === 0) {
2970
- segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
2971
- }
2972
- if (i === l - 1) {
2973
- segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
2974
- }
2975
- results.push(segment);
2976
- } else {
2977
- results.push(segment);
2978
- }
2979
- i++;
2980
- }
2981
- results.push(e);
2982
- return results;
2968
+ return module.dedentBlockSubstitutions($0);
2983
2969
  });
2984
2970
  var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2985
2971
  var s = $1;
@@ -2987,37 +2973,57 @@ var Civet = (() => {
2987
2973
  var e = $3;
2988
2974
  return [s, module.dedentBlockString(str), e];
2989
2975
  });
2990
- var StringLiteral$2 = $TV($TEXT($S($EXPECT($L86, fail, 'StringLiteral "\\\\\\""'), $Q(DoubleStringCharacter), $EXPECT($L86, fail, 'StringLiteral "\\\\\\""'))), function($skip, $loc, $0, $1) {
2991
- return { $loc, token: $1 };
2976
+ var StringLiteral$2 = BasicStringLiteral;
2977
+ function StringLiteral(state) {
2978
+ if (state.tokenize) {
2979
+ return $TOKEN("StringLiteral", state, StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state));
2980
+ } else {
2981
+ return StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state);
2982
+ }
2983
+ }
2984
+ var BasicStringLiteral$0 = $TS($S(DoubleQuote, DoubleStringCharacters, DoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2985
+ var str = $2;
2986
+ return {
2987
+ token: `"${module.modifyString(str.token)}"`,
2988
+ $loc
2989
+ };
2992
2990
  });
2993
- var StringLiteral$3 = $TV($TEXT($S($EXPECT($L87, fail, `StringLiteral "'"`), $Q(SingleStringCharacter), $EXPECT($L87, fail, `StringLiteral "'"`))), function($skip, $loc, $0, $1) {
2994
- return { $loc, token: $1 };
2991
+ var BasicStringLiteral$1 = $TS($S(SingleQuote, SingleStringCharacters, SingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2992
+ var str = $2;
2993
+ return {
2994
+ token: `'${module.modifyString(str.token)}'`,
2995
+ $loc
2996
+ };
2995
2997
  });
2996
- function StringLiteral(state) {
2998
+ function BasicStringLiteral(state) {
2997
2999
  if (state.tokenize) {
2998
- return $TOKEN("StringLiteral", state, StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state) || StringLiteral$3(state));
3000
+ return $TOKEN("BasicStringLiteral", state, BasicStringLiteral$0(state) || BasicStringLiteral$1(state));
2999
3001
  } else {
3000
- return StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state) || StringLiteral$3(state);
3002
+ return BasicStringLiteral$0(state) || BasicStringLiteral$1(state);
3001
3003
  }
3002
3004
  }
3003
- var DoubleStringCharacter$0 = $R$0($EXPECT($R9, fail, 'DoubleStringCharacter /(?:\\\\.|[^"])+/'));
3004
- function DoubleStringCharacter(state) {
3005
+ var DoubleStringCharacters$0 = $TR($EXPECT($R9, fail, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3006
+ return { $loc, token: $0 };
3007
+ });
3008
+ function DoubleStringCharacters(state) {
3005
3009
  if (state.verbose)
3006
- console.log("ENTER:", "DoubleStringCharacter");
3010
+ console.log("ENTER:", "DoubleStringCharacters");
3007
3011
  if (state.tokenize) {
3008
- return $TOKEN("DoubleStringCharacter", state, DoubleStringCharacter$0(state));
3012
+ return $TOKEN("DoubleStringCharacters", state, DoubleStringCharacters$0(state));
3009
3013
  } else {
3010
- return DoubleStringCharacter$0(state);
3014
+ return DoubleStringCharacters$0(state);
3011
3015
  }
3012
3016
  }
3013
- var SingleStringCharacter$0 = $R$0($EXPECT($R10, fail, "SingleStringCharacter /(?:\\\\.|[^'])+/"));
3014
- function SingleStringCharacter(state) {
3017
+ var SingleStringCharacters$0 = $TR($EXPECT($R10, fail, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3018
+ return { $loc, token: $0 };
3019
+ });
3020
+ function SingleStringCharacters(state) {
3015
3021
  if (state.verbose)
3016
- console.log("ENTER:", "SingleStringCharacter");
3022
+ console.log("ENTER:", "SingleStringCharacters");
3017
3023
  if (state.tokenize) {
3018
- return $TOKEN("SingleStringCharacter", state, SingleStringCharacter$0(state));
3024
+ return $TOKEN("SingleStringCharacters", state, SingleStringCharacters$0(state));
3019
3025
  } else {
3020
- return SingleStringCharacter$0(state);
3026
+ return SingleStringCharacters$0(state);
3021
3027
  }
3022
3028
  }
3023
3029
  var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
@@ -3054,19 +3060,7 @@ var Civet = (() => {
3054
3060
  return CoffeeStringSubstitution$0(state);
3055
3061
  }
3056
3062
  }
3057
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L88, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3058
- return { $loc, token: "${" };
3059
- });
3060
- function CoffeeSubstitutionStart(state) {
3061
- if (state.verbose)
3062
- console.log("ENTER:", "CoffeeSubstitutionStart");
3063
- if (state.tokenize) {
3064
- return $TOKEN("CoffeeSubstitutionStart", state, CoffeeSubstitutionStart$0(state));
3065
- } else {
3066
- return CoffeeSubstitutionStart$0(state);
3067
- }
3068
- }
3069
- var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3063
+ var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L44, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L44, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3070
3064
  return { $loc, token: $1 };
3071
3065
  });
3072
3066
  function RegularExpressionLiteral(state) {
@@ -3108,17 +3102,18 @@ var Civet = (() => {
3108
3102
  return RegularExpressionFlags$0(state);
3109
3103
  }
3110
3104
  }
3111
- var TemplateLiteral$0 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3105
+ var TemplateLiteral$0 = $TS($S(TripleTick, $Q($C(TemplateBlockCharacters, TemplateSubstitution)), TripleTick), function($skip, $loc, $0, $1, $2, $3) {
3106
+ return module.dedentBlockSubstitutions($0);
3107
+ });
3108
+ var TemplateLiteral$1 = $S($EXPECT($L0, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L0, fail, 'TemplateLiteral "`"'));
3112
3109
  function TemplateLiteral(state) {
3113
- if (state.verbose)
3114
- console.log("ENTER:", "TemplateLiteral");
3115
3110
  if (state.tokenize) {
3116
- return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state));
3111
+ return $TOKEN("TemplateLiteral", state, TemplateLiteral$0(state) || TemplateLiteral$1(state));
3117
3112
  } else {
3118
- return TemplateLiteral$0(state);
3113
+ return TemplateLiteral$0(state) || TemplateLiteral$1(state);
3119
3114
  }
3120
3115
  }
3121
- var TemplateSubstitution$0 = $S($EXPECT($L89, fail, 'TemplateSubstitution "${"'), Expression, __, CloseBrace);
3116
+ var TemplateSubstitution$0 = $S(SubstitutionStart, Expression, __, CloseBrace);
3122
3117
  function TemplateSubstitution(state) {
3123
3118
  if (state.verbose)
3124
3119
  console.log("ENTER:", "TemplateSubstitution");
@@ -3128,7 +3123,9 @@ var Civet = (() => {
3128
3123
  return TemplateSubstitution$0(state);
3129
3124
  }
3130
3125
  }
3131
- var TemplateCharacters$0 = $R$0($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3126
+ var TemplateCharacters$0 = $TR($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3127
+ return { $loc, token: $0 };
3128
+ });
3132
3129
  function TemplateCharacters(state) {
3133
3130
  if (state.verbose)
3134
3131
  console.log("ENTER:", "TemplateCharacters");
@@ -3138,7 +3135,19 @@ var Civet = (() => {
3138
3135
  return TemplateCharacters$0(state);
3139
3136
  }
3140
3137
  }
3141
- var ReservedWord$0 = $R$0($EXPECT($R17, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3138
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R17, fail, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3139
+ return { $loc, token: $0 };
3140
+ });
3141
+ function TemplateBlockCharacters(state) {
3142
+ if (state.verbose)
3143
+ console.log("ENTER:", "TemplateBlockCharacters");
3144
+ if (state.tokenize) {
3145
+ return $TOKEN("TemplateBlockCharacters", state, TemplateBlockCharacters$0(state));
3146
+ } else {
3147
+ return TemplateBlockCharacters$0(state);
3148
+ }
3149
+ }
3150
+ var ReservedWord$0 = $R$0($EXPECT($R18, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3142
3151
  function ReservedWord(state) {
3143
3152
  if (state.verbose)
3144
3153
  console.log("ENTER:", "ReservedWord");
@@ -3157,7 +3166,7 @@ var Civet = (() => {
3157
3166
  return Comment$0(state) || Comment$1(state);
3158
3167
  }
3159
3168
  }
3160
- var SingleLineComment$0 = $TR($EXPECT($R18, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3169
+ var SingleLineComment$0 = $TR($EXPECT($R19, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3161
3170
  return { $loc, token: $0 };
3162
3171
  });
3163
3172
  var SingleLineComment$1 = CoffeeSingleLineComment;
@@ -3177,7 +3186,7 @@ var Civet = (() => {
3177
3186
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3178
3187
  }
3179
3188
  }
3180
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L91, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L91, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3189
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L84, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L85, fail, 'JSMultiLineComment "*/"')), $EXPECT($R20, fail, "JSMultiLineComment /./"))), $EXPECT($L85, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3181
3190
  return { $loc, token: $1 };
3182
3191
  });
3183
3192
  function JSMultiLineComment(state) {
@@ -3189,7 +3198,7 @@ var Civet = (() => {
3189
3198
  return JSMultiLineComment$0(state);
3190
3199
  }
3191
3200
  }
3192
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R20, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3201
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R21, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3193
3202
  if (!module.coffeeCompat)
3194
3203
  return $skip;
3195
3204
  return { $loc, token: `//${$1}` };
@@ -3203,7 +3212,7 @@ var Civet = (() => {
3203
3212
  return CoffeeSingleLineComment$0(state);
3204
3213
  }
3205
3214
  }
3206
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L92, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L91, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L92, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3215
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L86, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L86, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L85, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R20, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L86, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3207
3216
  return { $loc, token: `/*${$2}*/` };
3208
3217
  });
3209
3218
  function CoffeeMultiLineComment(state) {
@@ -3215,7 +3224,7 @@ var Civet = (() => {
3215
3224
  return CoffeeMultiLineComment$0(state);
3216
3225
  }
3217
3226
  }
3218
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L90, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L91, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L91, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3227
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L84, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L85, fail, 'InlineComment "*/"')), $EXPECT($R22, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L85, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3219
3228
  return { $loc, token: $1 };
3220
3229
  });
3221
3230
  function InlineComment(state) {
@@ -3227,7 +3236,7 @@ var Civet = (() => {
3227
3236
  return InlineComment$0(state);
3228
3237
  }
3229
3238
  }
3230
- var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R22, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3239
+ var RestOfLine$0 = $S($Q($C(NonNewlineWhitespace, SingleLineComment, MultiLineComment)), EOL);
3231
3240
  function RestOfLine(state) {
3232
3241
  if (state.verbose)
3233
3242
  console.log("ENTER:", "RestOfLine");
@@ -3237,7 +3246,7 @@ var Civet = (() => {
3237
3246
  return RestOfLine$0(state);
3238
3247
  }
3239
3248
  }
3240
- var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3249
+ var TrailingComment$0 = NonNewlineWhitespace;
3241
3250
  var TrailingComment$1 = InlineComment;
3242
3251
  var TrailingComment$2 = SingleLineComment;
3243
3252
  function TrailingComment(state) {
@@ -3257,7 +3266,7 @@ var Civet = (() => {
3257
3266
  return _$0(state);
3258
3267
  }
3259
3268
  }
3260
- var NonNewlineWhitespace$0 = $TR($EXPECT($R22, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3269
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R23, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3261
3270
  return { $loc, token: $0 };
3262
3271
  });
3263
3272
  function NonNewlineWhitespace(state) {
@@ -3324,7 +3333,7 @@ var Civet = (() => {
3324
3333
  return Loc$0(state);
3325
3334
  }
3326
3335
  }
3327
- var As$0 = $TS($S($EXPECT($L93, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3336
+ var As$0 = $TS($S($EXPECT($L87, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3328
3337
  return { $loc, token: $1 };
3329
3338
  });
3330
3339
  function As(state) {
@@ -3336,7 +3345,7 @@ var Civet = (() => {
3336
3345
  return As$0(state);
3337
3346
  }
3338
3347
  }
3339
- var Async$0 = $TV($EXPECT($L94, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3348
+ var Async$0 = $TV($EXPECT($L88, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3340
3349
  return { $loc, token: $1 };
3341
3350
  });
3342
3351
  function Async(state) {
@@ -3348,7 +3357,7 @@ var Civet = (() => {
3348
3357
  return Async$0(state);
3349
3358
  }
3350
3359
  }
3351
- var Await$0 = $TS($S($EXPECT($L95, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3360
+ var Await$0 = $TS($S($EXPECT($L89, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3352
3361
  return { $loc, token: $1 };
3353
3362
  });
3354
3363
  function Await(state) {
@@ -3360,7 +3369,19 @@ var Civet = (() => {
3360
3369
  return Await$0(state);
3361
3370
  }
3362
3371
  }
3363
- var Catch$0 = $TV($EXPECT($L96, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3372
+ var Case$0 = $TS($S($EXPECT($L90, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3373
+ return { $loc, token: $1 };
3374
+ });
3375
+ function Case(state) {
3376
+ if (state.verbose)
3377
+ console.log("ENTER:", "Case");
3378
+ if (state.tokenize) {
3379
+ return $TOKEN("Case", state, Case$0(state));
3380
+ } else {
3381
+ return Case$0(state);
3382
+ }
3383
+ }
3384
+ var Catch$0 = $TV($EXPECT($L91, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3364
3385
  return { $loc, token: $1 };
3365
3386
  });
3366
3387
  function Catch(state) {
@@ -3372,7 +3393,7 @@ var Civet = (() => {
3372
3393
  return Catch$0(state);
3373
3394
  }
3374
3395
  }
3375
- var Class$0 = $TV($EXPECT($L97, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3396
+ var Class$0 = $TV($EXPECT($L92, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3376
3397
  return { $loc, token: $1 };
3377
3398
  });
3378
3399
  function Class(state) {
@@ -3384,7 +3405,7 @@ var Civet = (() => {
3384
3405
  return Class$0(state);
3385
3406
  }
3386
3407
  }
3387
- var CloseBrace$0 = $TV($EXPECT($L26, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3408
+ var CloseBrace$0 = $TV($EXPECT($L24, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3388
3409
  return { $loc, token: $1 };
3389
3410
  });
3390
3411
  function CloseBrace(state) {
@@ -3396,7 +3417,7 @@ var Civet = (() => {
3396
3417
  return CloseBrace$0(state);
3397
3418
  }
3398
3419
  }
3399
- var CloseBracket$0 = $TV($EXPECT($L25, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3420
+ var CloseBracket$0 = $TV($EXPECT($L23, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3400
3421
  return { $loc, token: $1 };
3401
3422
  });
3402
3423
  function CloseBracket(state) {
@@ -3408,7 +3429,7 @@ var Civet = (() => {
3408
3429
  return CloseBracket$0(state);
3409
3430
  }
3410
3431
  }
3411
- var CloseParen$0 = $TV($EXPECT($L18, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3432
+ var CloseParen$0 = $TV($EXPECT($L16, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3412
3433
  return { $loc, token: $1 };
3413
3434
  });
3414
3435
  function CloseParen(state) {
@@ -3420,7 +3441,19 @@ var Civet = (() => {
3420
3441
  return CloseParen$0(state);
3421
3442
  }
3422
3443
  }
3423
- var Colon$0 = $TV($EXPECT($L98, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3444
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L93, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3445
+ return { $loc, token: "${" };
3446
+ });
3447
+ function CoffeeSubstitutionStart(state) {
3448
+ if (state.verbose)
3449
+ console.log("ENTER:", "CoffeeSubstitutionStart");
3450
+ if (state.tokenize) {
3451
+ return $TOKEN("CoffeeSubstitutionStart", state, CoffeeSubstitutionStart$0(state));
3452
+ } else {
3453
+ return CoffeeSubstitutionStart$0(state);
3454
+ }
3455
+ }
3456
+ var Colon$0 = $TV($EXPECT($L94, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3424
3457
  return { $loc, token: $1 };
3425
3458
  });
3426
3459
  function Colon(state) {
@@ -3432,7 +3465,31 @@ var Civet = (() => {
3432
3465
  return Colon$0(state);
3433
3466
  }
3434
3467
  }
3435
- var Dot$0 = $TV($EXPECT($L99, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3468
+ var ConstructorShorthand$0 = $TV($EXPECT($L9, fail, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
3469
+ return { $loc, token: "constructor" };
3470
+ });
3471
+ function ConstructorShorthand(state) {
3472
+ if (state.verbose)
3473
+ console.log("ENTER:", "ConstructorShorthand");
3474
+ if (state.tokenize) {
3475
+ return $TOKEN("ConstructorShorthand", state, ConstructorShorthand$0(state));
3476
+ } else {
3477
+ return ConstructorShorthand$0(state);
3478
+ }
3479
+ }
3480
+ var Default$0 = $TS($S($EXPECT($L82, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3481
+ return { $loc, token: $1 };
3482
+ });
3483
+ function Default(state) {
3484
+ if (state.verbose)
3485
+ console.log("ENTER:", "Default");
3486
+ if (state.tokenize) {
3487
+ return $TOKEN("Default", state, Default$0(state));
3488
+ } else {
3489
+ return Default$0(state);
3490
+ }
3491
+ }
3492
+ var Dot$0 = $TV($EXPECT($L95, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3436
3493
  return { $loc, token: $1 };
3437
3494
  });
3438
3495
  function Dot(state) {
@@ -3444,7 +3501,19 @@ var Civet = (() => {
3444
3501
  return Dot$0(state);
3445
3502
  }
3446
3503
  }
3447
- var Else$0 = $TV($EXPECT($L100, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3504
+ var DoubleQuote$0 = $TV($EXPECT($L96, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
3505
+ return { $loc, token: $1 };
3506
+ });
3507
+ function DoubleQuote(state) {
3508
+ if (state.verbose)
3509
+ console.log("ENTER:", "DoubleQuote");
3510
+ if (state.tokenize) {
3511
+ return $TOKEN("DoubleQuote", state, DoubleQuote$0(state));
3512
+ } else {
3513
+ return DoubleQuote$0(state);
3514
+ }
3515
+ }
3516
+ var Else$0 = $TV($EXPECT($L97, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3448
3517
  return { $loc, token: $1 };
3449
3518
  });
3450
3519
  function Else(state) {
@@ -3456,7 +3525,7 @@ var Civet = (() => {
3456
3525
  return Else$0(state);
3457
3526
  }
3458
3527
  }
3459
- var Equals$0 = $TV($EXPECT($L43, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
3528
+ var Equals$0 = $TV($EXPECT($L41, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
3460
3529
  return { $loc, token: $1 };
3461
3530
  });
3462
3531
  function Equals(state) {
@@ -3468,7 +3537,7 @@ var Civet = (() => {
3468
3537
  return Equals$0(state);
3469
3538
  }
3470
3539
  }
3471
- var Export$0 = $TS($S($EXPECT($L101, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3540
+ var Export$0 = $TS($S($EXPECT($L98, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3472
3541
  return { $loc, token: $1 };
3473
3542
  });
3474
3543
  function Export(state) {
@@ -3480,7 +3549,7 @@ var Civet = (() => {
3480
3549
  return Export$0(state);
3481
3550
  }
3482
3551
  }
3483
- var For$0 = $TS($S($EXPECT($L102, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3552
+ var For$0 = $TS($S($EXPECT($L99, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3484
3553
  return { $loc, token: $1 };
3485
3554
  });
3486
3555
  function For(state) {
@@ -3492,7 +3561,7 @@ var Civet = (() => {
3492
3561
  return For$0(state);
3493
3562
  }
3494
3563
  }
3495
- var From$0 = $TS($S($EXPECT($L103, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3564
+ var From$0 = $TS($S($EXPECT($L100, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3496
3565
  return { $loc, token: $1 };
3497
3566
  });
3498
3567
  function From(state) {
@@ -3504,7 +3573,7 @@ var Civet = (() => {
3504
3573
  return From$0(state);
3505
3574
  }
3506
3575
  }
3507
- var Function$0 = $TV($EXPECT($L104, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3576
+ var Function$0 = $TV($EXPECT($L101, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3508
3577
  return { $loc, token: $1 };
3509
3578
  });
3510
3579
  function Function(state) {
@@ -3516,7 +3585,7 @@ var Civet = (() => {
3516
3585
  return Function$0(state);
3517
3586
  }
3518
3587
  }
3519
- var GetOrSet$0 = $TS($S($C($EXPECT($L105, fail, 'GetOrSet "get"'), $EXPECT($L106, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3588
+ var GetOrSet$0 = $TS($S($C($EXPECT($L102, fail, 'GetOrSet "get"'), $EXPECT($L103, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3520
3589
  return { $loc, token: $1 };
3521
3590
  });
3522
3591
  function GetOrSet(state) {
@@ -3528,7 +3597,7 @@ var Civet = (() => {
3528
3597
  return GetOrSet$0(state);
3529
3598
  }
3530
3599
  }
3531
- var If$0 = $TV($EXPECT($L107, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3600
+ var If$0 = $TV($EXPECT($L104, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3532
3601
  return { $loc, token: $1 };
3533
3602
  });
3534
3603
  function If(state) {
@@ -3540,7 +3609,7 @@ var Civet = (() => {
3540
3609
  return If$0(state);
3541
3610
  }
3542
3611
  }
3543
- var Import$0 = $TS($S($EXPECT($L13, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3612
+ var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3544
3613
  return { $loc, token: $1 };
3545
3614
  });
3546
3615
  function Import(state) {
@@ -3552,7 +3621,7 @@ var Civet = (() => {
3552
3621
  return Import$0(state);
3553
3622
  }
3554
3623
  }
3555
- var In$0 = $TV($EXPECT($L66, fail, 'In "in"'), function($skip, $loc, $0, $1) {
3624
+ var In$0 = $TV($EXPECT($L65, fail, 'In "in"'), function($skip, $loc, $0, $1) {
3556
3625
  return { $loc, token: $1 };
3557
3626
  });
3558
3627
  function In(state) {
@@ -3564,7 +3633,7 @@ var Civet = (() => {
3564
3633
  return In$0(state);
3565
3634
  }
3566
3635
  }
3567
- var LetOrConst$0 = $TV($C($EXPECT($L108, fail, 'LetOrConst "let"'), $EXPECT($L109, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3636
+ var LetOrConst$0 = $TV($C($EXPECT($L105, fail, 'LetOrConst "let"'), $EXPECT($L106, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
3568
3637
  return { $loc, token: $1 };
3569
3638
  });
3570
3639
  function LetOrConst(state) {
@@ -3576,7 +3645,7 @@ var Civet = (() => {
3576
3645
  return LetOrConst$0(state);
3577
3646
  }
3578
3647
  }
3579
- var Loop$0 = $TS($S($EXPECT($L110, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3648
+ var Loop$0 = $TS($S($EXPECT($L107, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3580
3649
  return { $loc, token: "while(true)" };
3581
3650
  });
3582
3651
  function Loop(state) {
@@ -3588,7 +3657,7 @@ var Civet = (() => {
3588
3657
  return Loop$0(state);
3589
3658
  }
3590
3659
  }
3591
- var New$0 = $TV($EXPECT($L111, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3660
+ var New$0 = $TV($EXPECT($L108, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3592
3661
  return { $loc, token: $1 };
3593
3662
  });
3594
3663
  function New(state) {
@@ -3600,7 +3669,7 @@ var Civet = (() => {
3600
3669
  return New$0(state);
3601
3670
  }
3602
3671
  }
3603
- var Of$0 = $TV($EXPECT($L112, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3672
+ var Of$0 = $TV($EXPECT($L109, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3604
3673
  return { $loc, token: $1 };
3605
3674
  });
3606
3675
  function Of(state) {
@@ -3612,7 +3681,7 @@ var Civet = (() => {
3612
3681
  return Of$0(state);
3613
3682
  }
3614
3683
  }
3615
- var OpenBrace$0 = $TV($EXPECT($L113, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3684
+ var OpenBrace$0 = $TV($EXPECT($L110, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3616
3685
  return { $loc, token: $1 };
3617
3686
  });
3618
3687
  function OpenBrace(state) {
@@ -3624,7 +3693,7 @@ var Civet = (() => {
3624
3693
  return OpenBrace$0(state);
3625
3694
  }
3626
3695
  }
3627
- var OpenBracket$0 = $TV($EXPECT($L114, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3696
+ var OpenBracket$0 = $TV($EXPECT($L111, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3628
3697
  return { $loc, token: $1 };
3629
3698
  });
3630
3699
  function OpenBracket(state) {
@@ -3636,7 +3705,7 @@ var Civet = (() => {
3636
3705
  return OpenBracket$0(state);
3637
3706
  }
3638
3707
  }
3639
- var OpenParen$0 = $TV($EXPECT($L115, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3708
+ var OpenParen$0 = $TV($EXPECT($L112, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3640
3709
  return { $loc, token: $1 };
3641
3710
  });
3642
3711
  function OpenParen(state) {
@@ -3648,7 +3717,7 @@ var Civet = (() => {
3648
3717
  return OpenParen$0(state);
3649
3718
  }
3650
3719
  }
3651
- var QuestionMark$0 = $TV($EXPECT($L116, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3720
+ var QuestionMark$0 = $TV($EXPECT($L113, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3652
3721
  return { $loc, token: $1 };
3653
3722
  });
3654
3723
  function QuestionMark(state) {
@@ -3660,7 +3729,7 @@ var Civet = (() => {
3660
3729
  return QuestionMark$0(state);
3661
3730
  }
3662
3731
  }
3663
- var Return$0 = $TS($S($EXPECT($L117, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3732
+ var Return$0 = $TS($S($EXPECT($L114, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3664
3733
  return { $loc, token: $1 };
3665
3734
  });
3666
3735
  function Return(state) {
@@ -3672,7 +3741,7 @@ var Civet = (() => {
3672
3741
  return Return$0(state);
3673
3742
  }
3674
3743
  }
3675
- var Semicolon$0 = $TV($EXPECT($L73, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
3744
+ var Semicolon$0 = $TV($EXPECT($L72, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
3676
3745
  return { $loc, token: $1 };
3677
3746
  });
3678
3747
  function Semicolon(state) {
@@ -3684,10 +3753,34 @@ var Civet = (() => {
3684
3753
  return Semicolon$0(state);
3685
3754
  }
3686
3755
  }
3687
- var Static$0 = $TV($EXPECT($L118, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3756
+ var SingleQuote$0 = $TV($EXPECT($L115, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
3757
+ return { $loc, token: $1 };
3758
+ });
3759
+ function SingleQuote(state) {
3760
+ if (state.verbose)
3761
+ console.log("ENTER:", "SingleQuote");
3762
+ if (state.tokenize) {
3763
+ return $TOKEN("SingleQuote", state, SingleQuote$0(state));
3764
+ } else {
3765
+ return SingleQuote$0(state);
3766
+ }
3767
+ }
3768
+ var Star$0 = $TV($EXPECT($L43, fail, 'Star "*"'), function($skip, $loc, $0, $1) {
3769
+ return { $loc, token: $1 };
3770
+ });
3771
+ function Star(state) {
3772
+ if (state.verbose)
3773
+ console.log("ENTER:", "Star");
3774
+ if (state.tokenize) {
3775
+ return $TOKEN("Star", state, Star$0(state));
3776
+ } else {
3777
+ return Star$0(state);
3778
+ }
3779
+ }
3780
+ var Static$0 = $TV($EXPECT($L116, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3688
3781
  return { $loc, token: $1 };
3689
3782
  });
3690
- var Static$1 = $TS($S($EXPECT($L11, fail, 'Static "@"'), $N($EXPECT($L115, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
3783
+ var Static$1 = $TS($S($EXPECT($L9, fail, 'Static "@"'), $N($EXPECT($L112, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
3691
3784
  return { $loc, token: "static " };
3692
3785
  });
3693
3786
  function Static(state) {
@@ -3697,7 +3790,19 @@ var Civet = (() => {
3697
3790
  return Static$0(state) || Static$1(state);
3698
3791
  }
3699
3792
  }
3700
- var Switch$0 = $TV($EXPECT($L119, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3793
+ var SubstitutionStart$0 = $TV($EXPECT($L117, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
3794
+ return { $loc, token: $1 };
3795
+ });
3796
+ function SubstitutionStart(state) {
3797
+ if (state.verbose)
3798
+ console.log("ENTER:", "SubstitutionStart");
3799
+ if (state.tokenize) {
3800
+ return $TOKEN("SubstitutionStart", state, SubstitutionStart$0(state));
3801
+ } else {
3802
+ return SubstitutionStart$0(state);
3803
+ }
3804
+ }
3805
+ var Switch$0 = $TS($S($EXPECT($L118, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3701
3806
  return { $loc, token: $1 };
3702
3807
  });
3703
3808
  function Switch(state) {
@@ -3709,7 +3814,7 @@ var Civet = (() => {
3709
3814
  return Switch$0(state);
3710
3815
  }
3711
3816
  }
3712
- var Target$0 = $TV($EXPECT($L120, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3817
+ var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3713
3818
  return { $loc, token: $1 };
3714
3819
  });
3715
3820
  function Target(state) {
@@ -3721,7 +3826,7 @@ var Civet = (() => {
3721
3826
  return Target$0(state);
3722
3827
  }
3723
3828
  }
3724
- var TripleDoubleQuote$0 = $TV($EXPECT($L121, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3829
+ var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3725
3830
  return { $loc, token: "`" };
3726
3831
  });
3727
3832
  function TripleDoubleQuote(state) {
@@ -3733,7 +3838,7 @@ var Civet = (() => {
3733
3838
  return TripleDoubleQuote$0(state);
3734
3839
  }
3735
3840
  }
3736
- var TripleSingleQuote$0 = $TV($EXPECT($L122, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3841
+ var TripleSingleQuote$0 = $TV($EXPECT($L121, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3737
3842
  return { $loc, token: "`" };
3738
3843
  });
3739
3844
  function TripleSingleQuote(state) {
@@ -3745,7 +3850,7 @@ var Civet = (() => {
3745
3850
  return TripleSingleQuote$0(state);
3746
3851
  }
3747
3852
  }
3748
- var TripleTick$0 = $TV($EXPECT($L123, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
3853
+ var TripleTick$0 = $TV($EXPECT($L122, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
3749
3854
  return { $loc, token: "`" };
3750
3855
  });
3751
3856
  function TripleTick(state) {
@@ -3757,7 +3862,7 @@ var Civet = (() => {
3757
3862
  return TripleTick$0(state);
3758
3863
  }
3759
3864
  }
3760
- var Try$0 = $TV($EXPECT($L124, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3865
+ var Try$0 = $TV($EXPECT($L123, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3761
3866
  return { $loc, token: $1 };
3762
3867
  });
3763
3868
  function Try(state) {
@@ -3769,7 +3874,7 @@ var Civet = (() => {
3769
3874
  return Try$0(state);
3770
3875
  }
3771
3876
  }
3772
- var Unless$0 = $TV($EXPECT($L125, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3877
+ var Unless$0 = $TV($EXPECT($L124, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3773
3878
  return { $loc, token: $1 };
3774
3879
  });
3775
3880
  function Unless(state) {
@@ -3781,7 +3886,7 @@ var Civet = (() => {
3781
3886
  return Unless$0(state);
3782
3887
  }
3783
3888
  }
3784
- var Var$0 = $TV($EXPECT($L126, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3889
+ var Var$0 = $TV($EXPECT($L125, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3785
3890
  return { $loc, token: $1 };
3786
3891
  });
3787
3892
  function Var(state) {
@@ -3793,7 +3898,7 @@ var Civet = (() => {
3793
3898
  return Var$0(state);
3794
3899
  }
3795
3900
  }
3796
- var When$0 = $TS($S($EXPECT($L127, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3901
+ var When$0 = $TS($S($EXPECT($L126, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3797
3902
  return { $loc, token: "case" };
3798
3903
  });
3799
3904
  function When(state) {
@@ -3805,6 +3910,18 @@ var Civet = (() => {
3805
3910
  return When$0(state);
3806
3911
  }
3807
3912
  }
3913
+ var Yield$0 = $TS($S($EXPECT($L127, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3914
+ return { $loc, token: $1 };
3915
+ });
3916
+ function Yield(state) {
3917
+ if (state.verbose)
3918
+ console.log("ENTER:", "Yield");
3919
+ if (state.tokenize) {
3920
+ return $TOKEN("Yield", state, Yield$0(state));
3921
+ } else {
3922
+ return Yield$0(state);
3923
+ }
3924
+ }
3808
3925
  var JSXElement$0 = JSXSelfClosingElement;
3809
3926
  var JSXElement$1 = $TS($S(JSXOpeningElement, $Q(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
3810
3927
  if ($1[1] !== $4[2]) {
@@ -3819,7 +3936,7 @@ var Civet = (() => {
3819
3936
  return JSXElement$0(state) || JSXElement$1(state);
3820
3937
  }
3821
3938
  }
3822
- var JSXSelfClosingElement$0 = $S($EXPECT($L7, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L128, fail, 'JSXSelfClosingElement "/>"'));
3939
+ var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L128, fail, 'JSXSelfClosingElement "/>"'));
3823
3940
  function JSXSelfClosingElement(state) {
3824
3941
  if (state.verbose)
3825
3942
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -3829,7 +3946,7 @@ var Civet = (() => {
3829
3946
  return JSXSelfClosingElement$0(state);
3830
3947
  }
3831
3948
  }
3832
- var JSXOpeningElement$0 = $S($EXPECT($L7, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L54, fail, 'JSXOpeningElement ">"'));
3949
+ var JSXOpeningElement$0 = $S($EXPECT($L5, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L53, fail, 'JSXOpeningElement ">"'));
3833
3950
  function JSXOpeningElement(state) {
3834
3951
  if (state.verbose)
3835
3952
  console.log("ENTER:", "JSXOpeningElement");
@@ -3839,7 +3956,7 @@ var Civet = (() => {
3839
3956
  return JSXOpeningElement$0(state);
3840
3957
  }
3841
3958
  }
3842
- var JSXClosingElement$0 = $S($EXPECT($L129, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3959
+ var JSXClosingElement$0 = $S($EXPECT($L129, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L53, fail, 'JSXClosingElement ">"'));
3843
3960
  function JSXClosingElement(state) {
3844
3961
  if (state.verbose)
3845
3962
  console.log("ENTER:", "JSXClosingElement");
@@ -3889,7 +4006,7 @@ var Civet = (() => {
3889
4006
  return JSXAttributes$0(state);
3890
4007
  }
3891
4008
  }
3892
- var JSXAttribute$0 = $S(OpenBrace, __, $EXPECT($L19, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, CloseBrace);
4009
+ var JSXAttribute$0 = $S(OpenBrace, __, $EXPECT($L17, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, CloseBrace);
3893
4010
  var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
3894
4011
  function JSXAttribute(state) {
3895
4012
  if (state.tokenize) {
@@ -3961,7 +4078,7 @@ var Civet = (() => {
3961
4078
  return JSXText$0(state);
3962
4079
  }
3963
4080
  }
3964
- var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L19, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
4081
+ var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L17, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
3965
4082
  function JSXChildExpression(state) {
3966
4083
  if (state.verbose)
3967
4084
  console.log("ENTER:", "JSXChildExpression");
@@ -4169,7 +4286,7 @@ var Civet = (() => {
4169
4286
  return ReturnTypeSuffix$0(state);
4170
4287
  }
4171
4288
  }
4172
- var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L57, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
4289
+ var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L56, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
4173
4290
  function TypePredicate(state) {
4174
4291
  if (state.verbose)
4175
4292
  console.log("ENTER:", "TypePredicate");
@@ -4220,7 +4337,7 @@ var Civet = (() => {
4220
4337
  }
4221
4338
  }
4222
4339
  var TypeUnaryOp$0 = $EXPECT($L138, fail, 'TypeUnaryOp "keyof"');
4223
- var TypeUnaryOp$1 = $EXPECT($L72, fail, 'TypeUnaryOp "typeof"');
4340
+ var TypeUnaryOp$1 = $EXPECT($L71, fail, 'TypeUnaryOp "typeof"');
4224
4341
  var TypeUnaryOp$2 = $EXPECT($L139, fail, 'TypeUnaryOp "infer"');
4225
4342
  function TypeUnaryOp(state) {
4226
4343
  if (state.tokenize) {
@@ -4251,7 +4368,7 @@ var Civet = (() => {
4251
4368
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
4252
4369
  }
4253
4370
  }
4254
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L8, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4371
+ var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
4255
4372
  function TypeConditional(state) {
4256
4373
  if (state.verbose)
4257
4374
  console.log("ENTER:", "TypeConditional");
@@ -4262,7 +4379,7 @@ var Civet = (() => {
4262
4379
  }
4263
4380
  }
4264
4381
  var TypeLiteral$0 = Literal;
4265
- var TypeLiteral$1 = $EXPECT($L71, fail, 'TypeLiteral "void"');
4382
+ var TypeLiteral$1 = $EXPECT($L70, fail, 'TypeLiteral "void"');
4266
4383
  var TypeLiteral$2 = $EXPECT($L140, fail, 'TypeLiteral "[]"');
4267
4384
  function TypeLiteral(state) {
4268
4385
  if (state.tokenize) {
@@ -4271,8 +4388,8 @@ var Civet = (() => {
4271
4388
  return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
4272
4389
  }
4273
4390
  }
4274
- var TypeBinaryOp$0 = $EXPECT($L69, fail, 'TypeBinaryOp "|"');
4275
- var TypeBinaryOp$1 = $EXPECT($L67, fail, 'TypeBinaryOp "&"');
4391
+ var TypeBinaryOp$0 = $EXPECT($L68, fail, 'TypeBinaryOp "|"');
4392
+ var TypeBinaryOp$1 = $EXPECT($L66, fail, 'TypeBinaryOp "&"');
4276
4393
  function TypeBinaryOp(state) {
4277
4394
  if (state.tokenize) {
4278
4395
  return $TOKEN("TypeBinaryOp", state, TypeBinaryOp$0(state) || TypeBinaryOp$1(state));
@@ -4280,7 +4397,7 @@ var Civet = (() => {
4280
4397
  return TypeBinaryOp$0(state) || TypeBinaryOp$1(state);
4281
4398
  }
4282
4399
  }
4283
- var FunctionType$0 = $S(Parameters, __, $EXPECT($L6, fail, 'FunctionType "=>"'), Type);
4400
+ var FunctionType$0 = $S(Parameters, __, $EXPECT($L4, fail, 'FunctionType "=>"'), Type);
4284
4401
  function FunctionType(state) {
4285
4402
  if (state.verbose)
4286
4403
  console.log("ENTER:", "FunctionType");
@@ -4290,7 +4407,7 @@ var Civet = (() => {
4290
4407
  return FunctionType$0(state);
4291
4408
  }
4292
4409
  }
4293
- var TypeArguments$0 = $S(__, $EXPECT($L7, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeArguments ">"'));
4410
+ var TypeArguments$0 = $S(__, $EXPECT($L5, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L53, fail, 'TypeArguments ">"'));
4294
4411
  function TypeArguments(state) {
4295
4412
  if (state.verbose)
4296
4413
  console.log("ENTER:", "TypeArguments");
@@ -4300,7 +4417,7 @@ var Civet = (() => {
4300
4417
  return TypeArguments$0(state);
4301
4418
  }
4302
4419
  }
4303
- 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) {
4420
+ var TypeParameters$0 = $TS($S(__, $EXPECT($L5, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L53, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
4304
4421
  return { ts: true, children: $0 };
4305
4422
  });
4306
4423
  function TypeParameters(state) {
@@ -4322,7 +4439,7 @@ var Civet = (() => {
4322
4439
  return TypeParameter$0(state);
4323
4440
  }
4324
4441
  }
4325
- var TypeConstraint$0 = $S(__, $EXPECT($L8, fail, 'TypeConstraint "extends"'), Type);
4442
+ var TypeConstraint$0 = $S(__, $EXPECT($L6, fail, 'TypeConstraint "extends"'), Type);
4326
4443
  function TypeConstraint(state) {
4327
4444
  if (state.verbose)
4328
4445
  console.log("ENTER:", "TypeConstraint");
@@ -4333,8 +4450,8 @@ var Civet = (() => {
4333
4450
  }
4334
4451
  }
4335
4452
  var TypeParameterDelimiter$0 = $S($Q(_), Comma);
4336
- var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L54, fail, 'TypeParameterDelimiter ">"')));
4337
- var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L54, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
4453
+ var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L53, fail, 'TypeParameterDelimiter ">"')));
4454
+ var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L53, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
4338
4455
  return { $loc, token: "," };
4339
4456
  });
4340
4457
  var TypeParameterDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
@@ -4550,6 +4667,57 @@ var Civet = (() => {
4550
4667
  const compatRe = /use coffee-compat/;
4551
4668
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
4552
4669
  }
4670
+ module.parsePosition = function() {
4671
+ let s = Error().stack.split(/\n at /);
4672
+ s.shift();
4673
+ s = s.filter((e) => !e.match(/^eval/)).map((e) => e.split(" ")[0]);
4674
+ s = s.slice(1, s.indexOf("Program") + 1);
4675
+ return s;
4676
+ };
4677
+ module.insertTrimmingSpace = function(spacing, c) {
4678
+ let target = spacing;
4679
+ while (Array.isArray(target)) {
4680
+ target = target[0];
4681
+ }
4682
+ if (target.token) {
4683
+ target.token = target.token.replace(/^ ?/, c);
4684
+ }
4685
+ return spacing;
4686
+ };
4687
+ module.modifyString = function(str) {
4688
+ return str.replace(/(?<!\\)(\\\\)*\n/g, "$1\\n");
4689
+ };
4690
+ module.dedentBlockSubstitutions = function($02) {
4691
+ const [s, strWithSubstitutions, e] = $02;
4692
+ if (strWithSubstitutions.length === 0) {
4693
+ return $02;
4694
+ }
4695
+ let initialSpacing, i = 0, l = strWithSubstitutions.length, results = [s];
4696
+ const { token } = strWithSubstitutions[0];
4697
+ if (token) {
4698
+ initialSpacing = token.match(/^(\r?\n|\n)\s+/);
4699
+ } else {
4700
+ initialSpacing = false;
4701
+ }
4702
+ while (i < l) {
4703
+ let segment = strWithSubstitutions[i];
4704
+ if (segment.token) {
4705
+ segment = module.dedentBlockString(segment, initialSpacing, false);
4706
+ if (i === 0) {
4707
+ segment.token = segment.token.replace(/^(\r?\n|\n)/, "");
4708
+ }
4709
+ if (i === l - 1) {
4710
+ segment.token = segment.token.replace(/(\r?\n|\n)[ \t]*$/, "");
4711
+ }
4712
+ results.push(segment);
4713
+ } else {
4714
+ results.push(segment);
4715
+ }
4716
+ i++;
4717
+ }
4718
+ results.push(e);
4719
+ return results;
4720
+ };
4553
4721
  module.dedentBlockString = function({ $loc: $loc2, token: str }, spacing, trim = true) {
4554
4722
  if (spacing == null)
4555
4723
  spacing = str.match(/^(\r?\n|\n)[ \t]+/);