@danielx/civet 0.3.15 → 0.4.0

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
@@ -430,14 +430,12 @@ var Civet = (() => {
430
430
  PrimaryExpression,
431
431
  ClassDeclaration,
432
432
  ClassExpression,
433
- Class,
434
433
  ClassHeritage,
435
434
  ExtendsToken,
436
435
  ClassBody,
437
436
  NestedClassElements,
438
437
  NestedClassElement,
439
438
  ClassElement,
440
- Static,
441
439
  FieldDefinition,
442
440
  This,
443
441
  AtAccessor,
@@ -528,7 +526,6 @@ var Civet = (() => {
528
526
  WhileClause,
529
527
  ForStatement,
530
528
  ForInOfStatement,
531
- For,
532
529
  ForDeclaration,
533
530
  LetOrConst,
534
531
  ForBinding,
@@ -537,10 +534,9 @@ var Civet = (() => {
537
534
  NestedCaseClauses,
538
535
  NestedCaseClause,
539
536
  CaseClause,
540
- When,
541
537
  ImpliedColon,
542
538
  TryStatement,
543
- Catch,
539
+ CatchClause,
544
540
  CatchBind,
545
541
  Finally,
546
542
  CatchParameter,
@@ -548,15 +544,12 @@ var Civet = (() => {
548
544
  ExpressionStatement,
549
545
  KeywordStatement,
550
546
  MaybeNestedExpression,
551
- Return,
552
547
  ImportDeclaration,
553
548
  ImpliedImport,
554
- Import,
555
549
  ImportClause,
556
550
  NameSpaceImport,
557
551
  NamedImports,
558
552
  FromClause,
559
- From,
560
553
  ImportSpecifier,
561
554
  ModuleExportName,
562
555
  ModuleSpecifier,
@@ -564,8 +557,6 @@ var Civet = (() => {
564
557
  UnquotedSpecifier,
565
558
  ImportedBinding,
566
559
  ExportDeclaration,
567
- As,
568
- Export,
569
560
  ExportFromClause,
570
561
  NamedExports,
571
562
  ExportSpecifier,
@@ -588,8 +579,8 @@ var Civet = (() => {
588
579
  StringLiteral,
589
580
  DoubleStringCharacter,
590
581
  SingleStringCharacter,
591
- TripleDoubleStringCharacter,
592
- TripleSingleStringCharacter,
582
+ TripleDoubleStringCharacters,
583
+ TripleSingleStringCharacters,
593
584
  RegularExpressionLiteral,
594
585
  RegularExpressionBody,
595
586
  RegExpCharacter,
@@ -608,9 +599,49 @@ var Civet = (() => {
608
599
  RestOfLine,
609
600
  TrailingComment,
610
601
  _,
602
+ NonNewlineWhitespace,
611
603
  __,
604
+ Whitespace,
612
605
  StatementDelimiter,
613
606
  NonIdContinue,
607
+ Loc,
608
+ As,
609
+ Async,
610
+ Await,
611
+ Catch,
612
+ Class,
613
+ CloseBrace,
614
+ CloseBracket,
615
+ CloseParen,
616
+ Colon,
617
+ Dot,
618
+ Else,
619
+ Equals,
620
+ Export,
621
+ For,
622
+ From,
623
+ Function,
624
+ If,
625
+ Import,
626
+ In,
627
+ Loop,
628
+ New,
629
+ Of,
630
+ OpenBrace,
631
+ OpenBracket,
632
+ OpenParen,
633
+ QuestionMark,
634
+ Return,
635
+ Semicolon,
636
+ Static,
637
+ Switch,
638
+ Target,
639
+ TripleDoubleQuote,
640
+ TripleSingleQuote,
641
+ Try,
642
+ Unless,
643
+ Var,
644
+ When,
614
645
  JSXElement,
615
646
  JSXSelfClosingElement,
616
647
  JSXOpeningElement,
@@ -672,6 +703,8 @@ var Civet = (() => {
672
703
  InsertCloseParen,
673
704
  InsertOpenBrace,
674
705
  InsertCloseBrace,
706
+ InsertConst,
707
+ InsertReadonly,
675
708
  InsertNewline,
676
709
  InsertIndent,
677
710
  InsertSpace,
@@ -684,132 +717,132 @@ var Civet = (() => {
684
717
  Nested,
685
718
  NestedFurther
686
719
  });
687
- var $L0 = $L(",");
688
- var $L1 = $L("(");
689
- var $L2 = $L(")");
690
- var $L3 = $L("?");
691
- var $L4 = $L("as");
692
- var $L5 = $L("++");
693
- var $L6 = $L("--");
694
- var $L7 = $L("async");
695
- var $L8 = $L("await");
696
- var $L9 = $L("yield");
697
- var $L10 = $L("*");
698
- var $L11 = $L("=>");
699
- var $L12 = $L("{");
700
- var $L13 = $L("}");
701
- var $L14 = $L(":");
702
- var $L15 = $L("class");
703
- var $L16 = $L("<");
704
- var $L17 = $L("extends");
705
- var $L18 = $L("static");
706
- var $L19 = $L("this");
707
- var $L20 = $L("#");
708
- var $L21 = $L("@");
709
- var $L22 = $L("new");
710
- var $L23 = $L("super");
711
- var $L24 = $L("import");
712
- var $L25 = $L(".");
713
- var $L26 = $L("!");
714
- var $L27 = $L("[");
715
- var $L28 = $L("]");
716
- var $L29 = $L("::");
717
- var $L30 = $L("super[");
718
- var $L31 = $L("new.target");
719
- var $L32 = $L("import.meta");
720
- var $L33 = $L("");
721
- var $L34 = $L("...");
722
- var $L35 = $L("function");
723
- var $L36 = $L("->");
724
- var $L37 = $L("null");
725
- var $L38 = $L("true");
726
- var $L39 = $L("false");
727
- var $L40 = $L("get");
728
- var $L41 = $L("set");
729
- var $L42 = $L("**=");
730
- var $L43 = $L("*=");
731
- var $L44 = $L("/=");
732
- var $L45 = $L("%=");
733
- var $L46 = $L("+=");
734
- var $L47 = $L("-=");
735
- var $L48 = $L("<<=");
736
- var $L49 = $L(">>>=");
737
- var $L50 = $L(">>=");
738
- var $L51 = $L("&&=");
739
- var $L52 = $L("&=");
740
- var $L53 = $L("^=");
741
- var $L54 = $L("||=");
742
- var $L55 = $L("|=");
743
- var $L56 = $L("??=");
744
- var $L57 = $L("?=");
745
- var $L58 = $L("=");
746
- var $L59 = $L("**");
747
- var $L60 = $L("/");
748
- var $L61 = $L("%");
749
- var $L62 = $L("+");
750
- var $L63 = $L("-");
751
- var $L64 = $L("<=");
752
- var $L65 = $L(">=");
753
- var $L66 = $L("<<");
754
- var $L67 = $L(">>>");
755
- var $L68 = $L(">>");
756
- var $L69 = $L(">");
757
- var $L70 = $L("!==");
758
- var $L71 = $L("!=");
759
- var $L72 = $L("is");
760
- var $L73 = $L("===");
761
- var $L74 = $L("==");
762
- var $L75 = $L("and");
763
- var $L76 = $L("&&");
764
- var $L77 = $L("or");
765
- var $L78 = $L("||");
766
- var $L79 = $L("??");
767
- var $L80 = $L("instanceof");
768
- var $L81 = $L("in");
769
- var $L82 = $L("&");
770
- var $L83 = $L("^");
771
- var $L84 = $L("|");
772
- var $L85 = $L("delete");
773
- var $L86 = $L("void");
774
- var $L87 = $L("typeof");
775
- var $L88 = $L("if");
776
- var $L89 = $L("unless");
777
- var $L90 = $L(";");
778
- var $L91 = $L("else");
779
- var $L92 = $L("loop");
780
- var $L93 = $L("do");
781
- var $L94 = $L("while");
782
- var $L95 = $L("until");
783
- var $L96 = $L("var");
784
- var $L97 = $L("of");
785
- var $L98 = $L("for");
786
- var $L99 = $L("let");
787
- var $L100 = $L("const");
788
- var $L101 = $L("switch");
789
- var $L102 = $L("case");
790
- var $L103 = $L("default");
791
- var $L104 = $L("when");
792
- var $L105 = $L("try");
793
- var $L106 = $L("catch");
794
- var $L107 = $L("finally");
795
- var $L108 = $L("break");
796
- var $L109 = $L("continue");
797
- var $L110 = $L("debugger");
798
- var $L111 = $L("throw");
799
- var $L112 = $L("return");
800
- var $L113 = $L("import type");
801
- var $L114 = $L("from");
802
- var $L115 = $L("export");
803
- var $L116 = $L(":=");
804
- var $L117 = $L('"""');
805
- var $L118 = $L("'''");
806
- var $L119 = $L('"');
807
- var $L120 = $L("'");
808
- var $L121 = $L("`");
809
- var $L122 = $L("${");
810
- var $L123 = $L("/*");
811
- var $L124 = $L("*/");
812
- var $L125 = $L("###");
720
+ var $L0 = $L("++");
721
+ var $L1 = $L("--");
722
+ var $L2 = $L("yield");
723
+ var $L3 = $L("*");
724
+ var $L4 = $L("=>");
725
+ var $L5 = $L("<");
726
+ var $L6 = $L("extends");
727
+ var $L7 = $L("this");
728
+ var $L8 = $L("#");
729
+ var $L9 = $L("@");
730
+ var $L10 = $L("super");
731
+ var $L11 = $L("import");
732
+ var $L12 = $L("!");
733
+ var $L13 = $L("::");
734
+ var $L14 = $L("super[");
735
+ var $L15 = $L("import.meta");
736
+ var $L16 = $L("");
737
+ var $L17 = $L(")");
738
+ var $L18 = $L("...");
739
+ var $L19 = $L("->");
740
+ var $L20 = $L("null");
741
+ var $L21 = $L("true");
742
+ var $L22 = $L("false");
743
+ var $L23 = $L(",");
744
+ var $L24 = $L("]");
745
+ var $L25 = $L("get");
746
+ var $L26 = $L("set");
747
+ var $L27 = $L("**=");
748
+ var $L28 = $L("*=");
749
+ var $L29 = $L("/=");
750
+ var $L30 = $L("%=");
751
+ var $L31 = $L("+=");
752
+ var $L32 = $L("-=");
753
+ var $L33 = $L("<<=");
754
+ var $L34 = $L(">>>=");
755
+ var $L35 = $L(">>=");
756
+ var $L36 = $L("&&=");
757
+ var $L37 = $L("&=");
758
+ var $L38 = $L("^=");
759
+ var $L39 = $L("||=");
760
+ var $L40 = $L("|=");
761
+ var $L41 = $L("??=");
762
+ var $L42 = $L("?=");
763
+ var $L43 = $L("=");
764
+ var $L44 = $L("**");
765
+ var $L45 = $L("/");
766
+ var $L46 = $L("%");
767
+ var $L47 = $L("+");
768
+ var $L48 = $L("-");
769
+ var $L49 = $L("<=");
770
+ var $L50 = $L(">=");
771
+ var $L51 = $L("<<");
772
+ var $L52 = $L(">>>");
773
+ var $L53 = $L(">>");
774
+ var $L54 = $L(">");
775
+ var $L55 = $L("!==");
776
+ var $L56 = $L("!=");
777
+ var $L57 = $L("is");
778
+ var $L58 = $L("===");
779
+ var $L59 = $L("==");
780
+ var $L60 = $L("and");
781
+ var $L61 = $L("&&");
782
+ var $L62 = $L("or");
783
+ var $L63 = $L("||");
784
+ var $L64 = $L("??");
785
+ var $L65 = $L("instanceof");
786
+ var $L66 = $L("in");
787
+ var $L67 = $L("&");
788
+ var $L68 = $L("^");
789
+ var $L69 = $L("|");
790
+ var $L70 = $L("delete");
791
+ var $L71 = $L("void");
792
+ var $L72 = $L("typeof");
793
+ var $L73 = $L(";");
794
+ var $L74 = $L("do");
795
+ var $L75 = $L("while");
796
+ var $L76 = $L("until");
797
+ var $L77 = $L("let");
798
+ var $L78 = $L("const");
799
+ var $L79 = $L("case");
800
+ var $L80 = $L("default");
801
+ var $L81 = $L("finally");
802
+ var $L82 = $L("break");
803
+ var $L83 = $L("continue");
804
+ var $L84 = $L("debugger");
805
+ var $L85 = $L("throw");
806
+ var $L86 = $L("import type");
807
+ var $L87 = $L(":=");
808
+ var $L88 = $L('"');
809
+ var $L89 = $L("'");
810
+ var $L90 = $L("`");
811
+ var $L91 = $L("${");
812
+ var $L92 = $L("/*");
813
+ var $L93 = $L("*/");
814
+ var $L94 = $L("###");
815
+ var $L95 = $L("as");
816
+ var $L96 = $L("async");
817
+ var $L97 = $L("await");
818
+ var $L98 = $L("catch");
819
+ var $L99 = $L("class");
820
+ var $L100 = $L("}");
821
+ var $L101 = $L(":");
822
+ var $L102 = $L(".");
823
+ var $L103 = $L("else");
824
+ var $L104 = $L("export");
825
+ var $L105 = $L("for");
826
+ var $L106 = $L("from");
827
+ var $L107 = $L("function");
828
+ var $L108 = $L("if");
829
+ var $L109 = $L("loop");
830
+ var $L110 = $L("new");
831
+ var $L111 = $L("of");
832
+ var $L112 = $L("{");
833
+ var $L113 = $L("[");
834
+ var $L114 = $L("(");
835
+ var $L115 = $L("?");
836
+ var $L116 = $L("return");
837
+ var $L117 = $L("static");
838
+ var $L118 = $L("switch");
839
+ var $L119 = $L("target");
840
+ var $L120 = $L('"""');
841
+ var $L121 = $L("'''");
842
+ var $L122 = $L("try");
843
+ var $L123 = $L("unless");
844
+ var $L124 = $L("var");
845
+ var $L125 = $L("when");
813
846
  var $L126 = $L("/>");
814
847
  var $L127 = $L("</");
815
848
  var $L128 = $L("<>");
@@ -828,30 +861,30 @@ var Civet = (() => {
828
861
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
829
862
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
830
863
  var $R2 = $R(new RegExp("[!~+-]", "suy"));
831
- var $R3 = $R(new RegExp("\\s", "suy"));
832
- var $R4 = $R(new RegExp('[^;"\\s]+', "suy"));
833
- var $R5 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
834
- var $R6 = $R(new RegExp("\\d+(?:\\.\\d*)?", "suy"));
835
- var $R7 = $R(new RegExp("0[bB][01](?:[01]|_[01])*", "suy"));
836
- var $R8 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*", "suy"));
837
- var $R9 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
838
- var $R10 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
839
- var $R11 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
840
- var $R12 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])+', "suy"));
841
- var $R13 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])+", "suy"));
842
- var $R14 = $R(new RegExp("[^*\\/\\r\\n]", "suy"));
843
- var $R15 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
844
- var $R16 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
845
- var $R17 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
846
- 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"));
847
- var $R19 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
848
- var $R20 = $R(new RegExp(".", "suy"));
849
- var $R21 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
850
- var $R22 = $R(new RegExp("[^\\r\\n]", "suy"));
851
- var $R23 = $R(new RegExp("[ \\t]+", "suy"));
852
- var $R24 = $R(new RegExp("[\\t ]+", "suy"));
853
- var $R25 = $R(new RegExp("[\\s]+", "suy"));
854
- var $R26 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
864
+ var $R3 = $R(new RegExp('[^;"\\s]+', "suy"));
865
+ var $R4 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
866
+ var $R5 = $R(new RegExp("\\d+(?:\\.\\d*)?", "suy"));
867
+ var $R6 = $R(new RegExp("0[bB][01](?:[01]|_[01])*", "suy"));
868
+ var $R7 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*", "suy"));
869
+ var $R8 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
870
+ var $R9 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
871
+ var $R10 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
872
+ var $R11 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])*', "suy"));
873
+ var $R12 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
874
+ var $R13 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
875
+ var $R14 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
876
+ var $R15 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
877
+ var $R16 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
878
+ 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"));
879
+ var $R18 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
880
+ var $R19 = $R(new RegExp(".", "suy"));
881
+ var $R20 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
882
+ var $R21 = $R(new RegExp("[^\\r\\n]", "suy"));
883
+ var $R22 = $R(new RegExp("[ \\t]+", "suy"));
884
+ var $R23 = $R(new RegExp("[\\t ]+", "suy"));
885
+ var $R24 = $R(new RegExp("[\\s]+", "suy"));
886
+ var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
887
+ var $R26 = $R(new RegExp("\\s", "suy"));
855
888
  var $R27 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
856
889
  var $R28 = $R(new RegExp('"[^"]*"', "suy"));
857
890
  var $R29 = $R(new RegExp("'[^']*'", "suy"));
@@ -882,7 +915,7 @@ var Civet = (() => {
882
915
  return TopLevelStatement$0(state);
883
916
  }
884
917
  }
885
- var Expression$0 = $S(AssignmentExpression, $Q($S(__, $EXPECT($L0, fail, 'Expression ","'), AssignmentExpression)));
918
+ var Expression$0 = $S(AssignmentExpression, $Q($S(__, Comma, AssignmentExpression)));
886
919
  function Expression(state) {
887
920
  if (state.verbose)
888
921
  console.log("ENTER:", "Expression");
@@ -892,7 +925,7 @@ var Civet = (() => {
892
925
  return Expression$0(state);
893
926
  }
894
927
  }
895
- var Arguments$0 = $S($EXPECT($L1, fail, 'Arguments "("'), $E(ArgumentList), $E($S(__, $EXPECT($L0, fail, 'Arguments ","'))), __, $EXPECT($L2, fail, 'Arguments ")"'));
928
+ var Arguments$0 = $S(OpenParen, $E(ArgumentList), $E($S(__, Comma)), __, CloseParen);
896
929
  function Arguments(state) {
897
930
  if (state.verbose)
898
931
  console.log("ENTER:", "Arguments");
@@ -936,7 +969,7 @@ var Civet = (() => {
936
969
  return NestedArgument$0(state);
937
970
  }
938
971
  }
939
- var CommaExpression$0 = $S(__, $EXPECT($L0, fail, 'CommaExpression ","'), __, Expression);
972
+ var CommaExpression$0 = $S(__, Comma, __, Expression);
940
973
  function CommaExpression(state) {
941
974
  if (state.verbose)
942
975
  console.log("ENTER:", "CommaExpression");
@@ -960,7 +993,7 @@ var Civet = (() => {
960
993
  var pre = $1;
961
994
  var exp = $2;
962
995
  var post = $3;
963
- if (post === "?") {
996
+ if (post?.token === "?") {
964
997
  return ["(", pre, , "(", exp, ") != null)"];
965
998
  }
966
999
  return [pre, exp, post];
@@ -974,8 +1007,8 @@ var Civet = (() => {
974
1007
  return UnaryExpression$0(state);
975
1008
  }
976
1009
  }
977
- var UnaryPostfix$0 = $EXPECT($L3, fail, 'UnaryPostfix "?"');
978
- var UnaryPostfix$1 = $T($S(__, $EXPECT($L4, fail, 'UnaryPostfix "as"'), NonIdContinue, Type), function(value) {
1010
+ var UnaryPostfix$0 = QuestionMark;
1011
+ var UnaryPostfix$1 = $T($S(__, As, NonIdContinue, Type), function(value) {
979
1012
  return { "ts": true, "children": value };
980
1013
  });
981
1014
  function UnaryPostfix(state) {
@@ -994,7 +1027,7 @@ var Civet = (() => {
994
1027
  return UpdateExpression$0(state) || UpdateExpression$1(state);
995
1028
  }
996
1029
  }
997
- var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L5, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L6, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
1030
+ var UpdateExpressionSymbol$0 = $TV($C($EXPECT($L0, fail, 'UpdateExpressionSymbol "++"'), $EXPECT($L1, fail, 'UpdateExpressionSymbol "--"')), function($skip, $loc, $0, $1) {
998
1031
  return { $loc, token: $1 };
999
1032
  });
1000
1033
  function UpdateExpressionSymbol(state) {
@@ -1017,7 +1050,7 @@ var Civet = (() => {
1017
1050
  }
1018
1051
  var AssignmentExpressionRest$0 = AwaitExpression;
1019
1052
  var AssignmentExpressionRest$1 = YieldExpression;
1020
- var AssignmentExpressionRest$2 = $S($E($S($EXPECT($L7, fail, 'AssignmentExpressionRest "async"'), __)), ArrowFunction);
1053
+ var AssignmentExpressionRest$2 = $S($E($S(Async, __)), ArrowFunction);
1021
1054
  var AssignmentExpressionRest$3 = $S($P($S(__, LeftHandSideExpression, __, AssignmentOp)), Expression);
1022
1055
  var AssignmentExpressionRest$4 = ConditionalExpression;
1023
1056
  function AssignmentExpressionRest(state) {
@@ -1027,7 +1060,7 @@ var Civet = (() => {
1027
1060
  return AssignmentExpressionRest$0(state) || AssignmentExpressionRest$1(state) || AssignmentExpressionRest$2(state) || AssignmentExpressionRest$3(state) || AssignmentExpressionRest$4(state);
1028
1061
  }
1029
1062
  }
1030
- var AwaitExpression$0 = $S($EXPECT($L8, fail, 'AwaitExpression "await"'), NonIdContinue, $Q(TrailingComment), AssignmentExpression);
1063
+ var AwaitExpression$0 = $S(Await, $Q(TrailingComment), AssignmentExpression);
1031
1064
  function AwaitExpression(state) {
1032
1065
  if (state.verbose)
1033
1066
  console.log("ENTER:", "AwaitExpression");
@@ -1037,7 +1070,7 @@ var Civet = (() => {
1037
1070
  return AwaitExpression$0(state);
1038
1071
  }
1039
1072
  }
1040
- var YieldExpression$0 = $S($EXPECT($L9, fail, 'YieldExpression "yield"'), NonIdContinue, $E($S($Q(TrailingComment), $EXPECT($L10, fail, 'YieldExpression "*"'))), AssignmentExpression);
1073
+ var YieldExpression$0 = $S($EXPECT($L2, fail, 'YieldExpression "yield"'), NonIdContinue, $E($S($Q(TrailingComment), $EXPECT($L3, fail, 'YieldExpression "*"'))), AssignmentExpression);
1041
1074
  function YieldExpression(state) {
1042
1075
  if (state.verbose)
1043
1076
  console.log("ENTER:", "YieldExpression");
@@ -1056,7 +1089,7 @@ var Civet = (() => {
1056
1089
  return ArrowFunction$0(state) || ArrowFunction$1(state);
1057
1090
  }
1058
1091
  }
1059
- var FatArrow$0 = $TS($S(__, $EXPECT($L11, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1092
+ var FatArrow$0 = $TS($S(__, $EXPECT($L4, fail, 'FatArrow "=>"')), function($skip, $loc, $0, $1, $2) {
1060
1093
  var ws = $1;
1061
1094
  if (!ws.length)
1062
1095
  return " =>";
@@ -1071,7 +1104,7 @@ var Civet = (() => {
1071
1104
  return FatArrow$0(state);
1072
1105
  }
1073
1106
  }
1074
- var FatArrowBody$0 = $S(__, $EXPECT($L12, fail, 'FatArrowBody "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'FatArrowBody "}"'));
1107
+ var FatArrowBody$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1075
1108
  var FatArrowBody$1 = $TS($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1076
1109
  var eos = $2;
1077
1110
  var exps = $3;
@@ -1091,7 +1124,7 @@ var Civet = (() => {
1091
1124
  return FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state);
1092
1125
  }
1093
1126
  }
1094
- var ConditionalExpression$0 = $S(ShortCircuitExpression, $E($S(__, $EXPECT($L3, fail, 'ConditionalExpression "?"'), AssignmentExpression, __, $EXPECT($L14, fail, 'ConditionalExpression ":"'), AssignmentExpression)));
1127
+ var ConditionalExpression$0 = $S(ShortCircuitExpression, $E($S(__, QuestionMark, AssignmentExpression, __, Colon, AssignmentExpression)));
1095
1128
  function ConditionalExpression(state) {
1096
1129
  if (state.verbose)
1097
1130
  console.log("ENTER:", "ConditionalExpression");
@@ -1120,7 +1153,7 @@ var Civet = (() => {
1120
1153
  var PrimaryExpression$6 = ClassExpression;
1121
1154
  var PrimaryExpression$7 = RegularExpressionLiteral;
1122
1155
  var PrimaryExpression$8 = TemplateLiteral;
1123
- var PrimaryExpression$9 = $S($EXPECT($L1, fail, 'PrimaryExpression "("'), __, Expression, __, $EXPECT($L2, fail, 'PrimaryExpression ")"'));
1156
+ var PrimaryExpression$9 = $S(OpenParen, __, Expression, __, CloseParen);
1124
1157
  var PrimaryExpression$10 = JSXElement;
1125
1158
  var PrimaryExpression$11 = JSXFragment;
1126
1159
  function PrimaryExpression(state) {
@@ -1150,18 +1183,6 @@ var Civet = (() => {
1150
1183
  return ClassExpression$0(state);
1151
1184
  }
1152
1185
  }
1153
- var Class$0 = $TV($EXPECT($L15, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
1154
- return { $loc, token: $1 };
1155
- });
1156
- function Class(state) {
1157
- if (state.verbose)
1158
- console.log("ENTER:", "Class");
1159
- if (state.tokenize) {
1160
- return $TOKEN("Class", state, Class$0(state));
1161
- } else {
1162
- return Class$0(state);
1163
- }
1164
- }
1165
1186
  var ClassHeritage$0 = $S(ExtendsToken, __, MemberExpression);
1166
1187
  function ClassHeritage(state) {
1167
1188
  if (state.verbose)
@@ -1172,10 +1193,10 @@ var Civet = (() => {
1172
1193
  return ClassHeritage$0(state);
1173
1194
  }
1174
1195
  }
1175
- var ExtendsToken$0 = $TV($EXPECT($L16, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1196
+ var ExtendsToken$0 = $TV($EXPECT($L5, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1176
1197
  return { $loc, token: "extends" };
1177
1198
  });
1178
- var ExtendsToken$1 = $TV($EXPECT($L17, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1199
+ var ExtendsToken$1 = $TV($EXPECT($L6, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1179
1200
  return { $loc, token: $1 };
1180
1201
  });
1181
1202
  function ExtendsToken(state) {
@@ -1185,7 +1206,7 @@ var Civet = (() => {
1185
1206
  return ExtendsToken$0(state) || ExtendsToken$1(state);
1186
1207
  }
1187
1208
  }
1188
- var ClassBody$0 = $S(__, $EXPECT($L12, fail, 'ClassBody "{"'), $E($S(EOS, NestedClassElements)), __, $EXPECT($L13, fail, 'ClassBody "}"'));
1209
+ var ClassBody$0 = $S(__, OpenBrace, $E($S(EOS, NestedClassElements)), __, CloseBrace);
1189
1210
  var ClassBody$1 = $S(InsertOpenBrace, EOS, NestedClassElements, InsertNewline, InsertIndent, InsertCloseBrace);
1190
1211
  function ClassBody(state) {
1191
1212
  if (state.tokenize) {
@@ -1228,32 +1249,14 @@ var Civet = (() => {
1228
1249
  return ClassElement$0(state) || ClassElement$1(state);
1229
1250
  }
1230
1251
  }
1231
- var Static$0 = $TV($EXPECT($L18, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
1232
- return { $loc, token: $1 };
1233
- });
1234
- function Static(state) {
1235
- if (state.verbose)
1236
- console.log("ENTER:", "Static");
1237
- if (state.tokenize) {
1238
- return $TOKEN("Static", state, Static$0(state));
1239
- } else {
1240
- return Static$0(state);
1241
- }
1242
- }
1243
- var FieldDefinition$0 = $TS($S(ClassElementName, $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1244
- var name = $1;
1245
- var suffix = $2;
1246
- var ws = $3;
1247
- var ca = $4;
1248
- var exp = $5;
1249
- return [
1250
- { ts: true, children: ["readonly "] },
1251
- name,
1252
- suffix,
1253
- ws,
1254
- { $loc: ca.$loc, token: "=" },
1255
- exp
1256
- ];
1252
+ var FieldDefinition$0 = $TS($S(InsertReadonly, ClassElementName, $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1253
+ var r = $1;
1254
+ var ca = $5;
1255
+ r.children[0].$loc = {
1256
+ pos: ca.$loc.pos - 1,
1257
+ length: ca.$loc.length + 1
1258
+ };
1259
+ return $0;
1257
1260
  });
1258
1261
  var FieldDefinition$1 = $S(ClassElementName, $E(TypeSuffix), $E(Initializer));
1259
1262
  function FieldDefinition(state) {
@@ -1263,11 +1266,11 @@ var Civet = (() => {
1263
1266
  return FieldDefinition$0(state) || FieldDefinition$1(state);
1264
1267
  }
1265
1268
  }
1266
- var This$0 = $TV($EXPECT($L19, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1269
+ var This$0 = $TV($EXPECT($L7, fail, 'This "this"'), function($skip, $loc, $0, $1) {
1267
1270
  return { $loc, token: $1 };
1268
1271
  });
1269
- var This$1 = $S(AtAccessor, $S($E($EXPECT($L20, fail, 'This "#"')), IdentifierName));
1270
- var This$2 = $TV($EXPECT($L21, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1272
+ var This$1 = $S(AtAccessor, $S($E($EXPECT($L8, fail, 'This "#"')), IdentifierName));
1273
+ var This$2 = $TV($EXPECT($L9, fail, 'This "@"'), function($skip, $loc, $0, $1) {
1271
1274
  return { $loc, token: "this" };
1272
1275
  });
1273
1276
  function This(state) {
@@ -1277,7 +1280,7 @@ var Civet = (() => {
1277
1280
  return This$0(state) || This$1(state) || This$2(state);
1278
1281
  }
1279
1282
  }
1280
- var AtAccessor$0 = $TV($EXPECT($L21, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1283
+ var AtAccessor$0 = $TV($EXPECT($L9, fail, 'AtAccessor "@"'), function($skip, $loc, $0, $1) {
1281
1284
  return { $loc, token: "this." };
1282
1285
  });
1283
1286
  function AtAccessor(state) {
@@ -1298,7 +1301,7 @@ var Civet = (() => {
1298
1301
  return LeftHandSideExpression$0(state) || LeftHandSideExpression$1(state);
1299
1302
  }
1300
1303
  }
1301
- var NewExpression$0 = $S($P($S($EXPECT($L22, fail, 'NewExpression "new"'), __)), CallExpression);
1304
+ var NewExpression$0 = $S($P($S(New, __)), CallExpression);
1302
1305
  function NewExpression(state) {
1303
1306
  if (state.verbose)
1304
1307
  console.log("ENTER:", "NewExpression");
@@ -1308,8 +1311,8 @@ var Civet = (() => {
1308
1311
  return NewExpression$0(state);
1309
1312
  }
1310
1313
  }
1311
- var CallExpression$0 = $S($EXPECT($L23, fail, 'CallExpression "super"'), __, Arguments);
1312
- var CallExpression$1 = $S($EXPECT($L24, fail, 'CallExpression "import"'), __, $EXPECT($L1, fail, 'CallExpression "("'), AssignmentExpression, __, $EXPECT($L2, fail, 'CallExpression ")"'));
1314
+ var CallExpression$0 = $S($EXPECT($L10, fail, 'CallExpression "super"'), __, Arguments);
1315
+ var CallExpression$1 = $S($EXPECT($L11, fail, 'CallExpression "import"'), __, OpenParen, AssignmentExpression, __, CloseParen);
1313
1316
  var CallExpression$2 = $S(MemberExpression, $Q(CallExpressionRest));
1314
1317
  function CallExpression(state) {
1315
1318
  if (state.tokenize) {
@@ -1329,7 +1332,7 @@ var Civet = (() => {
1329
1332
  return CallExpressionRest$0(state) || CallExpressionRest$1(state) || CallExpressionRest$2(state) || CallExpressionRest$3(state);
1330
1333
  }
1331
1334
  }
1332
- var OptionalShorthand$0 = $S($EXPECT($L3, fail, 'OptionalShorthand "?"'), $C($EXPECT($L25, fail, 'OptionalShorthand "."'), InsertDot));
1335
+ var OptionalShorthand$0 = $S(QuestionMark, $C(Dot, InsertDot));
1333
1336
  function OptionalShorthand(state) {
1334
1337
  if (state.verbose)
1335
1338
  console.log("ENTER:", "OptionalShorthand");
@@ -1339,7 +1342,7 @@ var Civet = (() => {
1339
1342
  return OptionalShorthand$0(state);
1340
1343
  }
1341
1344
  }
1342
- var NonNullAssertion$0 = $T($EXPECT($L26, fail, 'NonNullAssertion "!"'), function(value) {
1345
+ var NonNullAssertion$0 = $T($EXPECT($L12, fail, 'NonNullAssertion "!"'), function(value) {
1343
1346
  return { "ts": true, "children": value };
1344
1347
  });
1345
1348
  function NonNullAssertion(state) {
@@ -1361,10 +1364,11 @@ var Civet = (() => {
1361
1364
  return SpacedApplication$0(state);
1362
1365
  }
1363
1366
  }
1364
- var ApplicationStart$0 = $TS($S($E(OptionalShorthand), $N(EOS), $TEXT($P(_)), $N(AdditionalReservedWords)), function($skip, $loc, $0, $1, $2, $3, $4) {
1367
+ var ApplicationStart$0 = $TS($S($E(OptionalShorthand), $N(EOS), _, $N(AdditionalReservedWords)), function($skip, $loc, $0, $1, $2, $3, $4) {
1365
1368
  var opt = $1;
1366
1369
  var spacing = $3;
1367
- return [opt, "(", spacing.replace(/^ /, "")];
1370
+ spacing[0].token = spacing[0].token.replace(/^ ?/, "(");
1371
+ return [opt, spacing];
1368
1372
  });
1369
1373
  function ApplicationStart(state) {
1370
1374
  if (state.verbose)
@@ -1395,9 +1399,9 @@ var Civet = (() => {
1395
1399
  return MemberExpression$0(state) || MemberExpression$1(state) || MemberExpression$2(state);
1396
1400
  }
1397
1401
  }
1398
- var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), $EXPECT($L27, fail, 'MemberExpressionRest "["'), __, Expression, __, $EXPECT($L28, fail, 'MemberExpressionRest "]"'));
1402
+ var MemberExpressionRest$0 = $S($E($C(OptionalShorthand, NonNullAssertion)), OpenBracket, __, Expression, __, CloseBracket);
1399
1403
  var MemberExpressionRest$1 = $S($E($S(EOS, NestedFurther)), PropertyAccess);
1400
- var MemberExpressionRest$2 = $TS($S($EXPECT($L29, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2) {
1404
+ var MemberExpressionRest$2 = $TS($S($EXPECT($L13, fail, 'MemberExpressionRest "::"'), $E(IdentifierName)), function($skip, $loc, $0, $1, $2) {
1401
1405
  var id = $2;
1402
1406
  if (id)
1403
1407
  return [".prototype.", id];
@@ -1411,7 +1415,7 @@ var Civet = (() => {
1411
1415
  return MemberExpressionRest$0(state) || MemberExpressionRest$1(state) || MemberExpressionRest$2(state) || MemberExpressionRest$3(state);
1412
1416
  }
1413
1417
  }
1414
- var PropertyAccess$0 = $S($E($C($EXPECT($L3, fail, 'PropertyAccess "?"'), NonNullAssertion)), $EXPECT($L25, fail, 'PropertyAccess "."'), $C(IdentifierName, PrivateIdentifier));
1418
+ var PropertyAccess$0 = $S($E($C(QuestionMark, NonNullAssertion)), Dot, $C(IdentifierName, PrivateIdentifier));
1415
1419
  function PropertyAccess(state) {
1416
1420
  if (state.verbose)
1417
1421
  console.log("ENTER:", "PropertyAccess");
@@ -1421,7 +1425,7 @@ var Civet = (() => {
1421
1425
  return PropertyAccess$0(state);
1422
1426
  }
1423
1427
  }
1424
- var SuperProperty$0 = $S($EXPECT($L30, fail, 'SuperProperty "super["'), __, Expression, __, $EXPECT($L28, fail, 'SuperProperty "]"'));
1428
+ var SuperProperty$0 = $S($EXPECT($L14, fail, 'SuperProperty "super["'), __, Expression, __, CloseBracket);
1425
1429
  function SuperProperty(state) {
1426
1430
  if (state.verbose)
1427
1431
  console.log("ENTER:", "SuperProperty");
@@ -1431,8 +1435,10 @@ var Civet = (() => {
1431
1435
  return SuperProperty$0(state);
1432
1436
  }
1433
1437
  }
1434
- var MetaProperty$0 = $EXPECT($L31, fail, 'MetaProperty "new.target"');
1435
- var MetaProperty$1 = $EXPECT($L32, fail, 'MetaProperty "import.meta"');
1438
+ var MetaProperty$0 = $S(New, Dot, Target);
1439
+ var MetaProperty$1 = $TV($EXPECT($L15, fail, 'MetaProperty "import.meta"'), function($skip, $loc, $0, $1) {
1440
+ return { $loc, token: $1 };
1441
+ });
1436
1442
  function MetaProperty(state) {
1437
1443
  if (state.tokenize) {
1438
1444
  return $TOKEN("MetaProperty", state, MetaProperty$0(state) || MetaProperty$1(state));
@@ -1440,9 +1446,9 @@ var Civet = (() => {
1440
1446
  return MetaProperty$0(state) || MetaProperty$1(state);
1441
1447
  }
1442
1448
  }
1443
- var Parameters$0 = $S($E(TypeParameters), $EXPECT($L1, fail, 'Parameters "("'), $Q(ParameterElement), __, $EXPECT($L2, fail, 'Parameters ")"'));
1444
- var Parameters$1 = $T($EXPECT($L33, fail, 'Parameters ""'), function(value) {
1445
- return "()";
1449
+ var Parameters$0 = $S($E(TypeParameters), OpenParen, $Q(ParameterElement), __, CloseParen);
1450
+ var Parameters$1 = $TV($EXPECT($L16, fail, 'Parameters ""'), function($skip, $loc, $0, $1) {
1451
+ return { $loc, token: "()" };
1446
1452
  });
1447
1453
  function Parameters(state) {
1448
1454
  if (state.tokenize) {
@@ -1461,13 +1467,13 @@ var Civet = (() => {
1461
1467
  return ParameterElement$0(state);
1462
1468
  }
1463
1469
  }
1464
- var ParameterElementDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'ParameterElementDelimiter ","'));
1465
- var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L2, fail, 'ParameterElementDelimiter ")"')));
1466
- var ParameterElementDelimiter$2 = $T($Y($S(__, $EXPECT($L2, fail, 'ParameterElementDelimiter ")"'))), function(value) {
1467
- return ",";
1470
+ var ParameterElementDelimiter$0 = $S($Q(_), Comma);
1471
+ var ParameterElementDelimiter$1 = $Y($S($Q(_), $EXPECT($L17, fail, 'ParameterElementDelimiter ")"')));
1472
+ var ParameterElementDelimiter$2 = $TV($Y($S(__, $EXPECT($L17, fail, 'ParameterElementDelimiter ")"'))), function($skip, $loc, $0, $1) {
1473
+ return { $loc, token: "," };
1468
1474
  });
1469
- var ParameterElementDelimiter$3 = $T($Y(EOS), function(value) {
1470
- return ",";
1475
+ var ParameterElementDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1476
+ return { $loc, token: "," };
1471
1477
  });
1472
1478
  function ParameterElementDelimiter(state) {
1473
1479
  if (state.tokenize) {
@@ -1495,7 +1501,7 @@ var Civet = (() => {
1495
1501
  return BindingPattern$0(state) || BindingPattern$1(state);
1496
1502
  }
1497
1503
  }
1498
- var ObjectBindingPattern$0 = $S($EXPECT($L12, fail, 'ObjectBindingPattern "{"'), $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, $EXPECT($L13, fail, 'ObjectBindingPattern "}"'));
1504
+ var ObjectBindingPattern$0 = $S(OpenBrace, $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, CloseBrace);
1499
1505
  function ObjectBindingPattern(state) {
1500
1506
  if (state.verbose)
1501
1507
  console.log("ENTER:", "ObjectBindingPattern");
@@ -1505,7 +1511,7 @@ var Civet = (() => {
1505
1511
  return ObjectBindingPattern$0(state);
1506
1512
  }
1507
1513
  }
1508
- var ArrayBindingPattern$0 = $S($EXPECT($L27, fail, 'ArrayBindingPattern "["'), $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, $EXPECT($L28, fail, 'ArrayBindingPattern "]"'));
1514
+ var ArrayBindingPattern$0 = $S(OpenBracket, $Q($C(BindingElement, Elision)), $E($S(__, BindingRestElement)), __, CloseBracket);
1509
1515
  function ArrayBindingPattern(state) {
1510
1516
  if (state.verbose)
1511
1517
  console.log("ENTER:", "ArrayBindingPattern");
@@ -1515,7 +1521,7 @@ var Civet = (() => {
1515
1521
  return ArrayBindingPattern$0(state);
1516
1522
  }
1517
1523
  }
1518
- var BindingProperty$0 = $S(__, PropertyName, __, $EXPECT($L14, fail, 'BindingProperty ":"'), __, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1524
+ var BindingProperty$0 = $S(__, PropertyName, __, Colon, __, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1519
1525
  var BindingProperty$1 = $S(__, BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter);
1520
1526
  function BindingProperty(state) {
1521
1527
  if (state.tokenize) {
@@ -1524,7 +1530,7 @@ var Civet = (() => {
1524
1530
  return BindingProperty$0(state) || BindingProperty$1(state);
1525
1531
  }
1526
1532
  }
1527
- var BindingRestProperty$0 = $S($EXPECT($L34, fail, 'BindingRestProperty "..."'), __, BindingIdentifier);
1533
+ var BindingRestProperty$0 = $S($EXPECT($L18, fail, 'BindingRestProperty "..."'), __, BindingIdentifier);
1528
1534
  function BindingRestProperty(state) {
1529
1535
  if (state.verbose)
1530
1536
  console.log("ENTER:", "BindingRestProperty");
@@ -1544,7 +1550,7 @@ var Civet = (() => {
1544
1550
  return BindingElement$0(state);
1545
1551
  }
1546
1552
  }
1547
- var BindingRestElement$0 = $S($EXPECT($L34, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1553
+ var BindingRestElement$0 = $S($EXPECT($L18, fail, 'BindingRestElement "..."'), __, $C(BindingIdentifier, BindingPattern));
1548
1554
  function BindingRestElement(state) {
1549
1555
  if (state.verbose)
1550
1556
  console.log("ENTER:", "BindingRestElement");
@@ -1565,7 +1571,7 @@ var Civet = (() => {
1565
1571
  }
1566
1572
  }
1567
1573
  var FunctionExpression$0 = ThinArrowFunction;
1568
- var FunctionExpression$1 = $S($E($S($EXPECT($L7, fail, 'FunctionExpression "async"'), __)), $EXPECT($L35, fail, 'FunctionExpression "function"'), $E($S($EXPECT($L10, fail, 'FunctionExpression "*"'), __)), $E($S(__, BindingIdentifier)), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1574
+ var FunctionExpression$1 = $S($E($S(Async, __)), Function, $E($S($EXPECT($L3, fail, 'FunctionExpression "*"'), __)), $E($S(__, BindingIdentifier)), __, Parameters, $E(ReturnTypeSuffix), BracedBlock);
1569
1575
  function FunctionExpression(state) {
1570
1576
  if (state.tokenize) {
1571
1577
  return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state));
@@ -1594,7 +1600,7 @@ var Civet = (() => {
1594
1600
  return ThinArrowFunction$0(state);
1595
1601
  }
1596
1602
  }
1597
- var Arrow$0 = $TV($EXPECT($L36, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1603
+ var Arrow$0 = $TV($EXPECT($L19, fail, 'Arrow "->"'), function($skip, $loc, $0, $1) {
1598
1604
  return { $loc, token: $1 };
1599
1605
  });
1600
1606
  function Arrow(state) {
@@ -1606,7 +1612,7 @@ var Civet = (() => {
1606
1612
  return Arrow$0(state);
1607
1613
  }
1608
1614
  }
1609
- var Block$0 = $S(__, $EXPECT($L12, fail, 'Block "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'Block "}"'));
1615
+ var Block$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1610
1616
  var Block$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1611
1617
  var Block$2 = Statement;
1612
1618
  var Block$3 = $S(__, Statement);
@@ -1626,7 +1632,7 @@ var Civet = (() => {
1626
1632
  return BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state);
1627
1633
  }
1628
1634
  }
1629
- var BracedBlock$0 = $S(__, $EXPECT($L12, fail, 'BracedBlock "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'BracedBlock "}"'));
1635
+ var BracedBlock$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
1630
1636
  var BracedBlock$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1631
1637
  var BracedBlock$2 = $S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace);
1632
1638
  function BracedBlock(state) {
@@ -1687,7 +1693,7 @@ var Civet = (() => {
1687
1693
  return Literal$0(state) || Literal$1(state) || Literal$2(state) || Literal$3(state);
1688
1694
  }
1689
1695
  }
1690
- var NullLiteral$0 = $TV($EXPECT($L37, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1696
+ var NullLiteral$0 = $TV($EXPECT($L20, fail, 'NullLiteral "null"'), function($skip, $loc, $0, $1) {
1691
1697
  return { $loc, token: $1 };
1692
1698
  });
1693
1699
  function NullLiteral(state) {
@@ -1699,7 +1705,7 @@ var Civet = (() => {
1699
1705
  return NullLiteral$0(state);
1700
1706
  }
1701
1707
  }
1702
- var BooleanLiteral$0 = $TV($C($EXPECT($L38, fail, 'BooleanLiteral "true"'), $EXPECT($L39, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1708
+ var BooleanLiteral$0 = $TV($C($EXPECT($L21, fail, 'BooleanLiteral "true"'), $EXPECT($L22, fail, 'BooleanLiteral "false"')), function($skip, $loc, $0, $1) {
1703
1709
  return { $loc, token: $1 };
1704
1710
  });
1705
1711
  function BooleanLiteral(state) {
@@ -1711,7 +1717,9 @@ var Civet = (() => {
1711
1717
  return BooleanLiteral$0(state);
1712
1718
  }
1713
1719
  }
1714
- var Comma$0 = $S($Q(_), $EXPECT($L0, fail, 'Comma ","'), $Q(_));
1720
+ var Comma$0 = $TV($EXPECT($L23, fail, 'Comma ","'), function($skip, $loc, $0, $1) {
1721
+ return { $loc, token: $1 };
1722
+ });
1715
1723
  function Comma(state) {
1716
1724
  if (state.verbose)
1717
1725
  console.log("ENTER:", "Comma");
@@ -1756,8 +1764,8 @@ var Civet = (() => {
1756
1764
  return IdentifierReference$0(state);
1757
1765
  }
1758
1766
  }
1759
- var ArrayLiteral$0 = $S($EXPECT($L27, fail, 'ArrayLiteral "["'), NestedElementList, __, $EXPECT($L28, fail, 'ArrayLiteral "]"'));
1760
- var ArrayLiteral$1 = $S($EXPECT($L27, fail, 'ArrayLiteral "["'), ElementList, __, $EXPECT($L28, fail, 'ArrayLiteral "]"'));
1767
+ var ArrayLiteral$0 = $S(OpenBracket, NestedElementList, __, CloseBracket);
1768
+ var ArrayLiteral$1 = $S(OpenBracket, ElementList, __, CloseBracket);
1761
1769
  function ArrayLiteral(state) {
1762
1770
  if (state.tokenize) {
1763
1771
  return $TOKEN("ArrayLiteral", state, ArrayLiteral$0(state) || ArrayLiteral$1(state));
@@ -1790,10 +1798,10 @@ var Civet = (() => {
1790
1798
  return NestedElement$0(state);
1791
1799
  }
1792
1800
  }
1793
- var ArrayElementDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'ArrayElementDelimiter ","'));
1794
- var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L28, fail, 'ArrayElementDelimiter "]"')));
1795
- var ArrayElementDelimiter$2 = $T($Y(EOS), function(value) {
1796
- return ",";
1801
+ var ArrayElementDelimiter$0 = $S($Q(_), Comma);
1802
+ var ArrayElementDelimiter$1 = $Y($S(__, $EXPECT($L24, fail, 'ArrayElementDelimiter "]"')));
1803
+ var ArrayElementDelimiter$2 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1804
+ return { $loc, token: "," };
1797
1805
  });
1798
1806
  function ArrayElementDelimiter(state) {
1799
1807
  if (state.tokenize) {
@@ -1802,7 +1810,7 @@ var Civet = (() => {
1802
1810
  return ArrayElementDelimiter$0(state) || ArrayElementDelimiter$1(state) || ArrayElementDelimiter$2(state);
1803
1811
  }
1804
1812
  }
1805
- var ElementList$0 = $S(ArrayElementExpression, $Q($S(__, $EXPECT($L0, fail, 'ElementList ","'), __, ArrayElementExpression)));
1813
+ var ElementList$0 = $S(ArrayElementExpression, $Q($S(__, Comma, __, ArrayElementExpression)));
1806
1814
  function ElementList(state) {
1807
1815
  if (state.verbose)
1808
1816
  console.log("ENTER:", "ElementList");
@@ -1812,7 +1820,7 @@ var Civet = (() => {
1812
1820
  return ElementList$0(state);
1813
1821
  }
1814
1822
  }
1815
- var InlineElementList$0 = $S(ArrayElementExpression, $Q($S($Q(_), $EXPECT($L0, fail, 'InlineElementList ","'), $Q(_), ArrayElementExpression)));
1823
+ var InlineElementList$0 = $S(ArrayElementExpression, $Q($S($Q(_), Comma, $Q(_), ArrayElementExpression)));
1816
1824
  function InlineElementList(state) {
1817
1825
  if (state.verbose)
1818
1826
  console.log("ENTER:", "InlineElementList");
@@ -1822,7 +1830,7 @@ var Civet = (() => {
1822
1830
  return InlineElementList$0(state);
1823
1831
  }
1824
1832
  }
1825
- var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L34, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1833
+ var ArrayElementExpression$0 = $E($S($E($S($EXPECT($L18, fail, 'ArrayElementExpression "..."'), __)), AssignmentExpression));
1826
1834
  function ArrayElementExpression(state) {
1827
1835
  if (state.verbose)
1828
1836
  console.log("ENTER:", "ArrayElementExpression");
@@ -1832,7 +1840,7 @@ var Civet = (() => {
1832
1840
  return ArrayElementExpression$0(state);
1833
1841
  }
1834
1842
  }
1835
- var Elision$0 = $S(__, $EXPECT($L0, fail, 'Elision ","'));
1843
+ var Elision$0 = $S(__, Comma);
1836
1844
  function Elision(state) {
1837
1845
  if (state.verbose)
1838
1846
  console.log("ENTER:", "Elision");
@@ -1842,9 +1850,9 @@ var Civet = (() => {
1842
1850
  return Elision$0(state);
1843
1851
  }
1844
1852
  }
1845
- var ObjectLiteral$0 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), $Y(EOS), NestedPropertyDefinitions, __, $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1846
- var ObjectLiteral$1 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, PropertyDefinitionList, __, $E($S($EXPECT($L0, fail, 'ObjectLiteral ","'), __)), $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1847
- var ObjectLiteral$2 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1853
+ var ObjectLiteral$0 = $S(OpenBrace, $Y(EOS), NestedPropertyDefinitions, __, CloseBrace);
1854
+ var ObjectLiteral$1 = $S(OpenBrace, __, PropertyDefinitionList, __, $E($S(Comma, __)), CloseBrace);
1855
+ var ObjectLiteral$2 = $S(OpenBrace, __, CloseBrace);
1848
1856
  var ObjectLiteral$3 = $S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace);
1849
1857
  function ObjectLiteral(state) {
1850
1858
  if (state.tokenize) {
@@ -1878,13 +1886,13 @@ var Civet = (() => {
1878
1886
  return NestedPropertyDefinition$0(state);
1879
1887
  }
1880
1888
  }
1881
- var ObjectPropertyDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'ObjectPropertyDelimiter ","'));
1882
- var ObjectPropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L13, fail, 'ObjectPropertyDelimiter "}"')));
1883
- var ObjectPropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L13, fail, 'ObjectPropertyDelimiter "}"'))), function(value) {
1884
- return ",";
1889
+ var ObjectPropertyDelimiter$0 = $S($Q(_), Comma);
1890
+ var ObjectPropertyDelimiter$1 = $Y($S($Q(_), CloseBrace));
1891
+ var ObjectPropertyDelimiter$2 = $TV($Y($S(__, CloseBrace)), function($skip, $loc, $0, $1) {
1892
+ return { $loc, token: "," };
1885
1893
  });
1886
- var ObjectPropertyDelimiter$3 = $T($Y(EOS), function(value) {
1887
- return ",";
1894
+ var ObjectPropertyDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
1895
+ return { $loc, token: "," };
1888
1896
  });
1889
1897
  function ObjectPropertyDelimiter(state) {
1890
1898
  if (state.tokenize) {
@@ -1893,7 +1901,7 @@ var Civet = (() => {
1893
1901
  return ObjectPropertyDelimiter$0(state) || ObjectPropertyDelimiter$1(state) || ObjectPropertyDelimiter$2(state) || ObjectPropertyDelimiter$3(state);
1894
1902
  }
1895
1903
  }
1896
- var PropertyDefinitionList$0 = $S(PropertyDefinition, $Q($S(__, $EXPECT($L0, fail, 'PropertyDefinitionList ","'), __, PropertyDefinition)));
1904
+ var PropertyDefinitionList$0 = $S(PropertyDefinition, $Q($S(__, Comma, __, PropertyDefinition)));
1897
1905
  function PropertyDefinitionList(state) {
1898
1906
  if (state.verbose)
1899
1907
  console.log("ENTER:", "PropertyDefinitionList");
@@ -1903,9 +1911,9 @@ var Civet = (() => {
1903
1911
  return PropertyDefinitionList$0(state);
1904
1912
  }
1905
1913
  }
1906
- var PropertyDefinition$0 = $S(PropertyName, __, $EXPECT($L14, fail, 'PropertyDefinition ":"'), AssignmentExpression);
1914
+ var PropertyDefinition$0 = $S(PropertyName, __, Colon, AssignmentExpression);
1907
1915
  var PropertyDefinition$1 = MethodDefinition;
1908
- var PropertyDefinition$2 = $S($EXPECT($L34, fail, 'PropertyDefinition "..."'), AssignmentExpression);
1916
+ var PropertyDefinition$2 = $S($EXPECT($L18, fail, 'PropertyDefinition "..."'), AssignmentExpression);
1909
1917
  var PropertyDefinition$3 = IdentifierReference;
1910
1918
  function PropertyDefinition(state) {
1911
1919
  if (state.tokenize) {
@@ -1917,7 +1925,7 @@ var Civet = (() => {
1917
1925
  var PropertyName$0 = NumericLiteral;
1918
1926
  var PropertyName$1 = StringLiteral;
1919
1927
  var PropertyName$2 = IdentifierName;
1920
- var PropertyName$3 = $S($EXPECT($L27, fail, 'PropertyName "["'), AssignmentExpression, __, $EXPECT($L28, fail, 'PropertyName "]"'));
1928
+ var PropertyName$3 = $S(OpenBracket, AssignmentExpression, __, $EXPECT($L24, fail, 'PropertyName "]"'));
1921
1929
  function PropertyName(state) {
1922
1930
  if (state.tokenize) {
1923
1931
  return $TOKEN("PropertyName", state, PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state));
@@ -1925,8 +1933,8 @@ var Civet = (() => {
1925
1933
  return PropertyName$0(state) || PropertyName$1(state) || PropertyName$2(state) || PropertyName$3(state);
1926
1934
  }
1927
1935
  }
1928
- var MethodDefinition$0 = $S($EXPECT($L40, fail, 'MethodDefinition "get"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1929
- var MethodDefinition$1 = $S($EXPECT($L41, fail, 'MethodDefinition "set"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1936
+ var MethodDefinition$0 = $S($EXPECT($L25, fail, 'MethodDefinition "get"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1937
+ var MethodDefinition$1 = $S($EXPECT($L26, fail, 'MethodDefinition "set"'), NonIdContinue, $Q(TrailingComment), ClassElementName, __, Parameters, BracedBlock);
1930
1938
  var MethodDefinition$2 = AsyncGeneratorMethod;
1931
1939
  var MethodDefinition$3 = AsyncMethod;
1932
1940
  var MethodDefinition$4 = GeneratorMethod;
@@ -1938,7 +1946,7 @@ var Civet = (() => {
1938
1946
  return MethodDefinition$0(state) || MethodDefinition$1(state) || MethodDefinition$2(state) || MethodDefinition$3(state) || MethodDefinition$4(state) || MethodDefinition$5(state);
1939
1947
  }
1940
1948
  }
1941
- var MethodModifier$0 = $S($C($EXPECT($L40, fail, 'MethodModifier "get"'), $EXPECT($L41, fail, 'MethodModifier "set"')), NonIdContinue, $Q(TrailingComment));
1949
+ var MethodModifier$0 = $S($C($EXPECT($L25, fail, 'MethodModifier "get"'), $EXPECT($L26, fail, 'MethodModifier "set"')), NonIdContinue, $Q(TrailingComment));
1942
1950
  function MethodModifier(state) {
1943
1951
  if (state.verbose)
1944
1952
  console.log("ENTER:", "MethodModifier");
@@ -1967,7 +1975,7 @@ var Civet = (() => {
1967
1975
  return ClassElementName$0(state) || ClassElementName$1(state);
1968
1976
  }
1969
1977
  }
1970
- var PrivateIdentifier$0 = $S($EXPECT($L20, fail, 'PrivateIdentifier "#"'), IdentifierName);
1978
+ var PrivateIdentifier$0 = $S($EXPECT($L8, fail, 'PrivateIdentifier "#"'), IdentifierName);
1971
1979
  function PrivateIdentifier(state) {
1972
1980
  if (state.verbose)
1973
1981
  console.log("ENTER:", "PrivateIdentifier");
@@ -1977,7 +1985,7 @@ var Civet = (() => {
1977
1985
  return PrivateIdentifier$0(state);
1978
1986
  }
1979
1987
  }
1980
- var GeneratorMethod$0 = $S($EXPECT($L10, fail, 'GeneratorMethod "*"'), __, ClassElementName, __, Parameters, GeneratorBody);
1988
+ var GeneratorMethod$0 = $S($EXPECT($L3, fail, 'GeneratorMethod "*"'), __, ClassElementName, __, Parameters, GeneratorBody);
1981
1989
  function GeneratorMethod(state) {
1982
1990
  if (state.verbose)
1983
1991
  console.log("ENTER:", "GeneratorMethod");
@@ -1997,7 +2005,7 @@ var Civet = (() => {
1997
2005
  return GeneratorBody$0(state);
1998
2006
  }
1999
2007
  }
2000
- var AsyncMethod$0 = $S($EXPECT($L7, fail, 'AsyncMethod "async"'), $N(EOS), __, ClassElementName, __, Parameters, AsyncFunctionBody);
2008
+ var AsyncMethod$0 = $S(Async, $N(EOS), __, ClassElementName, __, Parameters, AsyncFunctionBody);
2001
2009
  function AsyncMethod(state) {
2002
2010
  if (state.verbose)
2003
2011
  console.log("ENTER:", "AsyncMethod");
@@ -2017,7 +2025,7 @@ var Civet = (() => {
2017
2025
  return AsyncFunctionBody$0(state);
2018
2026
  }
2019
2027
  }
2020
- var AsyncGeneratorMethod$0 = $S($EXPECT($L7, fail, 'AsyncGeneratorMethod "async"'), $N(EOS), __, $EXPECT($L10, fail, 'AsyncGeneratorMethod "*"'), __, ClassElementName, __, Parameters, AsyncGeneratorBody);
2028
+ var AsyncGeneratorMethod$0 = $S(Async, $N(EOS), __, $EXPECT($L3, fail, 'AsyncGeneratorMethod "*"'), __, ClassElementName, __, Parameters, AsyncGeneratorBody);
2021
2029
  function AsyncGeneratorMethod(state) {
2022
2030
  if (state.verbose)
2023
2031
  console.log("ENTER:", "AsyncGeneratorMethod");
@@ -2049,25 +2057,25 @@ var Civet = (() => {
2049
2057
  return AssignmentOp$0(state);
2050
2058
  }
2051
2059
  }
2052
- var AssignmentOpSymbol$0 = $EXPECT($L42, fail, 'AssignmentOpSymbol "**="');
2053
- var AssignmentOpSymbol$1 = $EXPECT($L43, fail, 'AssignmentOpSymbol "*="');
2054
- var AssignmentOpSymbol$2 = $EXPECT($L44, fail, 'AssignmentOpSymbol "/="');
2055
- var AssignmentOpSymbol$3 = $EXPECT($L45, fail, 'AssignmentOpSymbol "%="');
2056
- var AssignmentOpSymbol$4 = $EXPECT($L46, fail, 'AssignmentOpSymbol "+="');
2057
- var AssignmentOpSymbol$5 = $EXPECT($L47, fail, 'AssignmentOpSymbol "-="');
2058
- var AssignmentOpSymbol$6 = $EXPECT($L48, fail, 'AssignmentOpSymbol "<<="');
2059
- var AssignmentOpSymbol$7 = $EXPECT($L49, fail, 'AssignmentOpSymbol ">>>="');
2060
- var AssignmentOpSymbol$8 = $EXPECT($L50, fail, 'AssignmentOpSymbol ">>="');
2061
- var AssignmentOpSymbol$9 = $EXPECT($L51, fail, 'AssignmentOpSymbol "&&="');
2062
- var AssignmentOpSymbol$10 = $EXPECT($L52, fail, 'AssignmentOpSymbol "&="');
2063
- var AssignmentOpSymbol$11 = $EXPECT($L53, fail, 'AssignmentOpSymbol "^="');
2064
- var AssignmentOpSymbol$12 = $EXPECT($L54, fail, 'AssignmentOpSymbol "||="');
2065
- var AssignmentOpSymbol$13 = $EXPECT($L55, fail, 'AssignmentOpSymbol "|="');
2066
- var AssignmentOpSymbol$14 = $EXPECT($L56, fail, 'AssignmentOpSymbol "??="');
2067
- var AssignmentOpSymbol$15 = $T($EXPECT($L57, fail, 'AssignmentOpSymbol "?="'), function(value) {
2060
+ var AssignmentOpSymbol$0 = $EXPECT($L27, fail, 'AssignmentOpSymbol "**="');
2061
+ var AssignmentOpSymbol$1 = $EXPECT($L28, fail, 'AssignmentOpSymbol "*="');
2062
+ var AssignmentOpSymbol$2 = $EXPECT($L29, fail, 'AssignmentOpSymbol "/="');
2063
+ var AssignmentOpSymbol$3 = $EXPECT($L30, fail, 'AssignmentOpSymbol "%="');
2064
+ var AssignmentOpSymbol$4 = $EXPECT($L31, fail, 'AssignmentOpSymbol "+="');
2065
+ var AssignmentOpSymbol$5 = $EXPECT($L32, fail, 'AssignmentOpSymbol "-="');
2066
+ var AssignmentOpSymbol$6 = $EXPECT($L33, fail, 'AssignmentOpSymbol "<<="');
2067
+ var AssignmentOpSymbol$7 = $EXPECT($L34, fail, 'AssignmentOpSymbol ">>>="');
2068
+ var AssignmentOpSymbol$8 = $EXPECT($L35, fail, 'AssignmentOpSymbol ">>="');
2069
+ var AssignmentOpSymbol$9 = $EXPECT($L36, fail, 'AssignmentOpSymbol "&&="');
2070
+ var AssignmentOpSymbol$10 = $EXPECT($L37, fail, 'AssignmentOpSymbol "&="');
2071
+ var AssignmentOpSymbol$11 = $EXPECT($L38, fail, 'AssignmentOpSymbol "^="');
2072
+ var AssignmentOpSymbol$12 = $EXPECT($L39, fail, 'AssignmentOpSymbol "||="');
2073
+ var AssignmentOpSymbol$13 = $EXPECT($L40, fail, 'AssignmentOpSymbol "|="');
2074
+ var AssignmentOpSymbol$14 = $EXPECT($L41, fail, 'AssignmentOpSymbol "??="');
2075
+ var AssignmentOpSymbol$15 = $T($EXPECT($L42, fail, 'AssignmentOpSymbol "?="'), function(value) {
2068
2076
  return "??=";
2069
2077
  });
2070
- var AssignmentOpSymbol$16 = $EXPECT($L58, fail, 'AssignmentOpSymbol "="');
2078
+ var AssignmentOpSymbol$16 = $EXPECT($L43, fail, 'AssignmentOpSymbol "="');
2071
2079
  function AssignmentOpSymbol(state) {
2072
2080
  if (state.tokenize) {
2073
2081
  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));
@@ -2087,52 +2095,52 @@ var Civet = (() => {
2087
2095
  return BinaryOp$0(state);
2088
2096
  }
2089
2097
  }
2090
- var BinaryOpSymbol$0 = $EXPECT($L59, fail, 'BinaryOpSymbol "**"');
2091
- var BinaryOpSymbol$1 = $EXPECT($L10, fail, 'BinaryOpSymbol "*"');
2092
- var BinaryOpSymbol$2 = $EXPECT($L60, fail, 'BinaryOpSymbol "/"');
2093
- var BinaryOpSymbol$3 = $EXPECT($L61, fail, 'BinaryOpSymbol "%"');
2094
- var BinaryOpSymbol$4 = $EXPECT($L62, fail, 'BinaryOpSymbol "+"');
2095
- var BinaryOpSymbol$5 = $EXPECT($L63, fail, 'BinaryOpSymbol "-"');
2096
- var BinaryOpSymbol$6 = $EXPECT($L64, fail, 'BinaryOpSymbol "<="');
2097
- var BinaryOpSymbol$7 = $EXPECT($L65, fail, 'BinaryOpSymbol ">="');
2098
- var BinaryOpSymbol$8 = $EXPECT($L66, fail, 'BinaryOpSymbol "<<"');
2099
- var BinaryOpSymbol$9 = $EXPECT($L16, fail, 'BinaryOpSymbol "<"');
2100
- var BinaryOpSymbol$10 = $EXPECT($L67, fail, 'BinaryOpSymbol ">>>"');
2101
- var BinaryOpSymbol$11 = $EXPECT($L68, fail, 'BinaryOpSymbol ">>"');
2102
- var BinaryOpSymbol$12 = $EXPECT($L69, fail, 'BinaryOpSymbol ">"');
2103
- var BinaryOpSymbol$13 = $EXPECT($L70, fail, 'BinaryOpSymbol "!=="');
2104
- var BinaryOpSymbol$14 = $TV($EXPECT($L71, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2098
+ var BinaryOpSymbol$0 = $EXPECT($L44, fail, 'BinaryOpSymbol "**"');
2099
+ var BinaryOpSymbol$1 = $EXPECT($L3, fail, 'BinaryOpSymbol "*"');
2100
+ var BinaryOpSymbol$2 = $EXPECT($L45, fail, 'BinaryOpSymbol "/"');
2101
+ var BinaryOpSymbol$3 = $EXPECT($L46, fail, 'BinaryOpSymbol "%"');
2102
+ var BinaryOpSymbol$4 = $EXPECT($L47, fail, 'BinaryOpSymbol "+"');
2103
+ var BinaryOpSymbol$5 = $EXPECT($L48, fail, 'BinaryOpSymbol "-"');
2104
+ var BinaryOpSymbol$6 = $EXPECT($L49, fail, 'BinaryOpSymbol "<="');
2105
+ var BinaryOpSymbol$7 = $EXPECT($L50, fail, 'BinaryOpSymbol ">="');
2106
+ var BinaryOpSymbol$8 = $EXPECT($L51, fail, 'BinaryOpSymbol "<<"');
2107
+ var BinaryOpSymbol$9 = $EXPECT($L5, fail, 'BinaryOpSymbol "<"');
2108
+ var BinaryOpSymbol$10 = $EXPECT($L52, fail, 'BinaryOpSymbol ">>>"');
2109
+ var BinaryOpSymbol$11 = $EXPECT($L53, fail, 'BinaryOpSymbol ">>"');
2110
+ var BinaryOpSymbol$12 = $EXPECT($L54, fail, 'BinaryOpSymbol ">"');
2111
+ var BinaryOpSymbol$13 = $EXPECT($L55, fail, 'BinaryOpSymbol "!=="');
2112
+ var BinaryOpSymbol$14 = $TV($EXPECT($L56, fail, 'BinaryOpSymbol "!="'), function($skip, $loc, $0, $1) {
2105
2113
  if (module.coffeeCompat)
2106
2114
  return "!==";
2107
2115
  return $1;
2108
2116
  });
2109
- var BinaryOpSymbol$15 = $T($S($EXPECT($L72, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2117
+ var BinaryOpSymbol$15 = $T($S($EXPECT($L57, fail, 'BinaryOpSymbol "is"'), NonIdContinue), function(value) {
2110
2118
  return "===";
2111
2119
  });
2112
- var BinaryOpSymbol$16 = $EXPECT($L73, fail, 'BinaryOpSymbol "==="');
2113
- var BinaryOpSymbol$17 = $TV($EXPECT($L74, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2120
+ var BinaryOpSymbol$16 = $EXPECT($L58, fail, 'BinaryOpSymbol "==="');
2121
+ var BinaryOpSymbol$17 = $TV($EXPECT($L59, fail, 'BinaryOpSymbol "=="'), function($skip, $loc, $0, $1) {
2114
2122
  if (module.coffeeCompat)
2115
2123
  return "===";
2116
2124
  return $1;
2117
2125
  });
2118
- var BinaryOpSymbol$18 = $T($S($EXPECT($L75, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2126
+ var BinaryOpSymbol$18 = $T($S($EXPECT($L60, fail, 'BinaryOpSymbol "and"'), NonIdContinue), function(value) {
2119
2127
  return "&&";
2120
2128
  });
2121
- var BinaryOpSymbol$19 = $EXPECT($L76, fail, 'BinaryOpSymbol "&&"');
2122
- var BinaryOpSymbol$20 = $T($S($EXPECT($L77, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2129
+ var BinaryOpSymbol$19 = $EXPECT($L61, fail, 'BinaryOpSymbol "&&"');
2130
+ var BinaryOpSymbol$20 = $T($S($EXPECT($L62, fail, 'BinaryOpSymbol "or"'), NonIdContinue), function(value) {
2123
2131
  return "||";
2124
2132
  });
2125
- var BinaryOpSymbol$21 = $EXPECT($L78, fail, 'BinaryOpSymbol "||"');
2126
- var BinaryOpSymbol$22 = $EXPECT($L79, fail, 'BinaryOpSymbol "??"');
2127
- var BinaryOpSymbol$23 = $TS($S($EXPECT($L80, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2133
+ var BinaryOpSymbol$21 = $EXPECT($L63, fail, 'BinaryOpSymbol "||"');
2134
+ var BinaryOpSymbol$22 = $EXPECT($L64, fail, 'BinaryOpSymbol "??"');
2135
+ var BinaryOpSymbol$23 = $TS($S($EXPECT($L65, fail, 'BinaryOpSymbol "instanceof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2128
2136
  return $1;
2129
2137
  });
2130
- var BinaryOpSymbol$24 = $TS($S($EXPECT($L81, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2138
+ var BinaryOpSymbol$24 = $TS($S($EXPECT($L66, fail, 'BinaryOpSymbol "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2131
2139
  return $1;
2132
2140
  });
2133
- var BinaryOpSymbol$25 = $EXPECT($L82, fail, 'BinaryOpSymbol "&"');
2134
- var BinaryOpSymbol$26 = $EXPECT($L83, fail, 'BinaryOpSymbol "^"');
2135
- var BinaryOpSymbol$27 = $EXPECT($L84, fail, 'BinaryOpSymbol "|"');
2141
+ var BinaryOpSymbol$25 = $EXPECT($L67, fail, 'BinaryOpSymbol "&"');
2142
+ var BinaryOpSymbol$26 = $EXPECT($L68, fail, 'BinaryOpSymbol "^"');
2143
+ var BinaryOpSymbol$27 = $EXPECT($L69, fail, 'BinaryOpSymbol "|"');
2136
2144
  function BinaryOpSymbol(state) {
2137
2145
  if (state.tokenize) {
2138
2146
  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));
@@ -2141,7 +2149,7 @@ var Civet = (() => {
2141
2149
  }
2142
2150
  }
2143
2151
  var UnaryOp$0 = $R$0($EXPECT($R2, fail, "UnaryOp /[!~+-]/"));
2144
- var UnaryOp$1 = $S($C($EXPECT($L85, fail, 'UnaryOp "delete"'), $EXPECT($L86, fail, 'UnaryOp "void"'), $EXPECT($L87, fail, 'UnaryOp "typeof"')), NonIdContinue, __);
2152
+ var UnaryOp$1 = $S($C($EXPECT($L70, fail, 'UnaryOp "delete"'), $EXPECT($L71, fail, 'UnaryOp "void"'), $EXPECT($L72, fail, 'UnaryOp "typeof"')), NonIdContinue, __);
2145
2153
  function UnaryOp(state) {
2146
2154
  if (state.tokenize) {
2147
2155
  return $TOKEN("UnaryOp", state, UnaryOp$0(state) || UnaryOp$1(state));
@@ -2159,11 +2167,13 @@ var Civet = (() => {
2159
2167
  return ModuleItem$0(state) || ModuleItem$1(state) || ModuleItem$2(state);
2160
2168
  }
2161
2169
  }
2162
- var StatementListItem$0 = $TS($S($C(Declaration, Statement), $E(PostfixConditional)), function($skip, $loc, $0, $1, $2) {
2170
+ var StatementListItem$0 = $TS($S($C(Declaration, Statement), $E(PostfixConditional), Loc), function($skip, $loc, $0, $1, $2, $3) {
2163
2171
  var statement = $1;
2164
2172
  var cond = $2;
2173
+ var l = $3;
2165
2174
  if (cond)
2166
- return [cond, statement, "}"];
2175
+ return [cond, statement, { $loc: l.$loc, token: "}" }];
2176
+ $0.pop();
2167
2177
  return $0;
2168
2178
  });
2169
2179
  function StatementListItem(state) {
@@ -2175,13 +2185,24 @@ var Civet = (() => {
2175
2185
  return StatementListItem$0(state);
2176
2186
  }
2177
2187
  }
2178
- var PostfixConditional$0 = $TS($S($Q(TrailingComment), $C($EXPECT($L88, fail, 'PostfixConditional "if"'), $EXPECT($L89, fail, 'PostfixConditional "unless"')), NonIdContinue, Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
2188
+ var PostfixConditional$0 = $TS($S($Q(TrailingComment), $C(If, Unless), NonIdContinue, Loc, Expression, Loc), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2179
2189
  var ws = $1;
2180
2190
  var cond = $2;
2181
- var exp = $4;
2182
- if (cond === "if")
2183
- return [ws, "if(", exp, ") {"];
2184
- return [ws, "if(!(", exp, ")) {"];
2191
+ var l1 = $4;
2192
+ var exp = $5;
2193
+ var l2 = $6;
2194
+ let openParens = { $loc: l1.$loc, token: "(!(" };
2195
+ let closingParens = { $loc: l2.$loc, token: "))" };
2196
+ let space = { $loc: l2.$loc, token: " " };
2197
+ let openingBrace = { $loc: l2.$loc, token: "{" };
2198
+ if (cond.token === "if") {
2199
+ cond.token = "if";
2200
+ closingParens.token = ")";
2201
+ openParens.token = "(";
2202
+ } else {
2203
+ cond.token = "if";
2204
+ }
2205
+ return [ws, cond, openParens, exp, closingParens, space, openingBrace];
2185
2206
  });
2186
2207
  function PostfixConditional(state) {
2187
2208
  if (state.verbose)
@@ -2208,7 +2229,7 @@ var Civet = (() => {
2208
2229
  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);
2209
2230
  }
2210
2231
  }
2211
- var EmptyStatement$0 = $S($Q(TrailingComment), $Y($EXPECT($L90, fail, 'EmptyStatement ";"')));
2232
+ var EmptyStatement$0 = $S($Q(TrailingComment), $Y($EXPECT($L73, fail, 'EmptyStatement ";"')));
2212
2233
  function EmptyStatement(state) {
2213
2234
  if (state.verbose)
2214
2235
  console.log("ENTER:", "EmptyStatement");
@@ -2218,7 +2239,7 @@ var Civet = (() => {
2218
2239
  return EmptyStatement$0(state);
2219
2240
  }
2220
2241
  }
2221
- var BlockStatement$0 = $S(__, $EXPECT($L12, fail, 'BlockStatement "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'BlockStatement "}"'));
2242
+ var BlockStatement$0 = $S(__, OpenBrace, EOS, NestedBlockExpressions, __, CloseBrace);
2222
2243
  function BlockStatement(state) {
2223
2244
  if (state.verbose)
2224
2245
  console.log("ENTER:", "BlockStatement");
@@ -2228,17 +2249,21 @@ var Civet = (() => {
2228
2249
  return BlockStatement$0(state);
2229
2250
  }
2230
2251
  }
2231
- var IfStatement$0 = $S($EXPECT($L88, fail, 'IfStatement "if"'), Condition, Block, $E($S(__, $EXPECT($L91, fail, 'IfStatement "else"'), Block)));
2232
- var IfStatement$1 = $TS($S($EXPECT($L89, fail, 'IfStatement "unless"'), Condition, Block), function($skip, $loc, $0, $1, $2, $3) {
2252
+ var IfStatement$0 = $S(If, Condition, Block, $E($S(__, Else, Block)));
2253
+ var IfStatement$1 = $TS($S(Unless, Condition, Block), function($skip, $loc, $0, $1, $2, $3) {
2254
+ var kind = $1;
2233
2255
  var condition = $2;
2234
2256
  var block = $3;
2235
- return ["if", condition.map((c) => {
2236
- if (c === "(")
2237
- return "(!(";
2238
- if (c === ")")
2239
- return "))";
2240
- return c;
2241
- }), block];
2257
+ condition.forEach((c) => {
2258
+ if (!c)
2259
+ return;
2260
+ if (c.token === "(")
2261
+ c.token = "(!(";
2262
+ if (c.token === ")")
2263
+ c.token = "))";
2264
+ });
2265
+ kind.token = "if";
2266
+ return [kind, condition, block];
2242
2267
  });
2243
2268
  function IfStatement(state) {
2244
2269
  if (state.tokenize) {
@@ -2259,10 +2284,7 @@ var Civet = (() => {
2259
2284
  return IterationStatement$0(state) || IterationStatement$1(state) || IterationStatement$2(state) || IterationStatement$3(state) || IterationStatement$4(state);
2260
2285
  }
2261
2286
  }
2262
- var LoopStatement$0 = $TS($S($EXPECT($L92, fail, 'LoopStatement "loop"'), NonIdContinue, Block), function($skip, $loc, $0, $1, $2, $3) {
2263
- var b = $3;
2264
- return ["while(true)", b];
2265
- });
2287
+ var LoopStatement$0 = $S(Loop, Block);
2266
2288
  function LoopStatement(state) {
2267
2289
  if (state.verbose)
2268
2290
  console.log("ENTER:", "LoopStatement");
@@ -2272,7 +2294,7 @@ var Civet = (() => {
2272
2294
  return LoopStatement$0(state);
2273
2295
  }
2274
2296
  }
2275
- var DoWhileStatement$0 = $S($EXPECT($L93, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause);
2297
+ var DoWhileStatement$0 = $S($EXPECT($L74, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause);
2276
2298
  function DoWhileStatement(state) {
2277
2299
  if (state.verbose)
2278
2300
  console.log("ENTER:", "DoWhileStatement");
@@ -2292,7 +2314,7 @@ var Civet = (() => {
2292
2314
  return WhileStatement$0(state);
2293
2315
  }
2294
2316
  }
2295
- var WhileClause$0 = $TS($S($C($EXPECT($L94, fail, 'WhileClause "while"'), $EXPECT($L95, fail, 'WhileClause "until"')), NonIdContinue, Condition), function($skip, $loc, $0, $1, $2, $3) {
2317
+ 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) {
2296
2318
  var kind = $1;
2297
2319
  var cond = $3;
2298
2320
  if (kind === "until") {
@@ -2311,7 +2333,7 @@ var Civet = (() => {
2311
2333
  return WhileClause$0(state);
2312
2334
  }
2313
2335
  }
2314
- var ForStatement$0 = $S(For, __, $EXPECT($L1, fail, 'ForStatement "("'), __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, $EXPECT($L90, fail, 'ForStatement ";"'), __, $E(Expression), $EXPECT($L90, fail, 'ForStatement ";"'), __, $E(Expression), $EXPECT($L2, fail, 'ForStatement ")"'), Block);
2336
+ var ForStatement$0 = $S(For, __, OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, __, $E(Expression), Semicolon, __, $E(Expression), CloseParen, Block);
2315
2337
  function ForStatement(state) {
2316
2338
  if (state.verbose)
2317
2339
  console.log("ENTER:", "ForStatement");
@@ -2321,10 +2343,10 @@ var Civet = (() => {
2321
2343
  return ForStatement$0(state);
2322
2344
  }
2323
2345
  }
2324
- var ForInOfStatement$0 = $S(For, __, $EXPECT($L1, fail, 'ForInOfStatement "("'), __, $C($S($EXPECT($L96, fail, 'ForInOfStatement "var"'), __, ForBinding), ForDeclaration, LeftHandSideExpression), __, $EXPECT($L81, fail, 'ForInOfStatement "in"'), __, Expression, __, $EXPECT($L2, fail, 'ForInOfStatement ")"'), Block);
2325
- var ForInOfStatement$1 = $S(For, __, InsertOpenParen, $C($S($EXPECT($L96, fail, 'ForInOfStatement "var"'), __, ForBinding), ForDeclaration, LeftHandSideExpression), __, $EXPECT($L81, fail, 'ForInOfStatement "in"'), __, Expression, InsertCloseParen, Block);
2326
- var ForInOfStatement$2 = $S(For, $E($S(__, $EXPECT($L8, fail, 'ForInOfStatement "await"'))), __, $EXPECT($L1, fail, 'ForInOfStatement "("'), __, $C($S($EXPECT($L96, fail, 'ForInOfStatement "var"'), __, ForBinding), ForDeclaration, LeftHandSideExpression), __, $EXPECT($L97, fail, 'ForInOfStatement "of"'), AssignmentExpression, __, $EXPECT($L2, fail, 'ForInOfStatement ")"'), Block);
2327
- var ForInOfStatement$3 = $S(For, $E($S(__, $EXPECT($L8, fail, 'ForInOfStatement "await"'))), __, InsertOpenParen, $C($S($EXPECT($L96, fail, 'ForInOfStatement "var"'), __, ForBinding), ForDeclaration, LeftHandSideExpression), __, $EXPECT($L97, fail, 'ForInOfStatement "of"'), AssignmentExpression, InsertCloseParen, Block);
2346
+ var ForInOfStatement$0 = $S(For, __, OpenParen, __, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, __, Expression, __, CloseParen, Block);
2347
+ var ForInOfStatement$1 = $S(For, __, InsertOpenParen, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, In, __, Expression, InsertCloseParen, Block);
2348
+ var ForInOfStatement$2 = $S(For, $E($S(__, Await)), __, OpenParen, __, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, Of, AssignmentExpression, __, CloseParen, Block);
2349
+ var ForInOfStatement$3 = $S(For, $E($S(__, Await)), __, InsertOpenParen, $C($S(Var, __, ForBinding), ForDeclaration, LeftHandSideExpression), __, Of, AssignmentExpression, InsertCloseParen, Block);
2328
2350
  function ForInOfStatement(state) {
2329
2351
  if (state.tokenize) {
2330
2352
  return $TOKEN("ForInOfStatement", state, ForInOfStatement$0(state) || ForInOfStatement$1(state) || ForInOfStatement$2(state) || ForInOfStatement$3(state));
@@ -2332,18 +2354,6 @@ var Civet = (() => {
2332
2354
  return ForInOfStatement$0(state) || ForInOfStatement$1(state) || ForInOfStatement$2(state) || ForInOfStatement$3(state);
2333
2355
  }
2334
2356
  }
2335
- var For$0 = $TS($S($EXPECT($L98, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2336
- return { $loc, token: $1 };
2337
- });
2338
- function For(state) {
2339
- if (state.verbose)
2340
- console.log("ENTER:", "For");
2341
- if (state.tokenize) {
2342
- return $TOKEN("For", state, For$0(state));
2343
- } else {
2344
- return For$0(state);
2345
- }
2346
- }
2347
2357
  var ForDeclaration$0 = $S(LetOrConst, NonIdContinue, __, ForBinding);
2348
2358
  function ForDeclaration(state) {
2349
2359
  if (state.verbose)
@@ -2354,7 +2364,7 @@ var Civet = (() => {
2354
2364
  return ForDeclaration$0(state);
2355
2365
  }
2356
2366
  }
2357
- var LetOrConst$0 = $TV($C($EXPECT($L99, fail, 'LetOrConst "let"'), $EXPECT($L100, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
2367
+ var LetOrConst$0 = $TV($C($EXPECT($L77, fail, 'LetOrConst "let"'), $EXPECT($L78, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
2358
2368
  return { $loc, token: $1 };
2359
2369
  });
2360
2370
  function LetOrConst(state) {
@@ -2375,7 +2385,7 @@ var Civet = (() => {
2375
2385
  return ForBinding$0(state) || ForBinding$1(state);
2376
2386
  }
2377
2387
  }
2378
- var SwitchStatement$0 = $S($EXPECT($L101, fail, 'SwitchStatement "switch"'), NonIdContinue, Condition, CaseBlock);
2388
+ var SwitchStatement$0 = $S(Switch, NonIdContinue, Condition, CaseBlock);
2379
2389
  function SwitchStatement(state) {
2380
2390
  if (state.verbose)
2381
2391
  console.log("ENTER:", "SwitchStatement");
@@ -2385,7 +2395,7 @@ var Civet = (() => {
2385
2395
  return SwitchStatement$0(state);
2386
2396
  }
2387
2397
  }
2388
- var CaseBlock$0 = $S(__, $EXPECT($L12, fail, 'CaseBlock "{"'), $Y(EOS), NestedCaseClauses, __, $EXPECT($L13, fail, 'CaseBlock "}"'));
2398
+ var CaseBlock$0 = $S(__, OpenBrace, $Y(EOS), NestedCaseClauses, __, CloseBrace);
2389
2399
  var CaseBlock$1 = $S($Y(EOS), InsertOpenBrace, NestedCaseClauses, InsertNewline, InsertCloseBrace);
2390
2400
  function CaseBlock(state) {
2391
2401
  if (state.tokenize) {
@@ -2419,9 +2429,9 @@ var Civet = (() => {
2419
2429
  return NestedCaseClause$0(state);
2420
2430
  }
2421
2431
  }
2422
- var CaseClause$0 = $S($EXPECT($L102, fail, 'CaseClause "case"'), NonIdContinue, $Q(_), Expression, ImpliedColon, NestedBlockExpressions);
2432
+ var CaseClause$0 = $S($EXPECT($L79, fail, 'CaseClause "case"'), NonIdContinue, $Q(_), Expression, ImpliedColon, NestedBlockExpressions);
2423
2433
  var CaseClause$1 = $S(When, $Q(_), Expression, ImpliedColon, NestedBlockExpressions, InsertBreak);
2424
- var CaseClause$2 = $S($EXPECT($L103, fail, 'CaseClause "default"'), NonIdContinue, ImpliedColon, NestedBlockExpressions);
2434
+ var CaseClause$2 = $S($EXPECT($L80, fail, 'CaseClause "default"'), NonIdContinue, ImpliedColon, NestedBlockExpressions);
2425
2435
  function CaseClause(state) {
2426
2436
  if (state.tokenize) {
2427
2437
  return $TOKEN("CaseClause", state, CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state));
@@ -2429,21 +2439,9 @@ var Civet = (() => {
2429
2439
  return CaseClause$0(state) || CaseClause$1(state) || CaseClause$2(state);
2430
2440
  }
2431
2441
  }
2432
- var When$0 = $T($S($EXPECT($L104, fail, 'When "when"'), NonIdContinue), function(value) {
2433
- return "case";
2434
- });
2435
- function When(state) {
2436
- if (state.verbose)
2437
- console.log("ENTER:", "When");
2438
- if (state.tokenize) {
2439
- return $TOKEN("When", state, When$0(state));
2440
- } else {
2441
- return When$0(state);
2442
- }
2443
- }
2444
- var ImpliedColon$0 = $S(__, $EXPECT($L14, fail, 'ImpliedColon ":"'));
2445
- var ImpliedColon$1 = $T($EXPECT($L33, fail, 'ImpliedColon ""'), function(value) {
2446
- return ":";
2442
+ var ImpliedColon$0 = $S(__, Colon);
2443
+ var ImpliedColon$1 = $TV($EXPECT($L16, fail, 'ImpliedColon ""'), function($skip, $loc, $0, $1) {
2444
+ return { $loc, token: ":" };
2447
2445
  });
2448
2446
  function ImpliedColon(state) {
2449
2447
  if (state.tokenize) {
@@ -2452,7 +2450,7 @@ var Civet = (() => {
2452
2450
  return ImpliedColon$0(state) || ImpliedColon$1(state);
2453
2451
  }
2454
2452
  }
2455
- var TryStatement$0 = $TS($S($EXPECT($L105, fail, 'TryStatement "try"'), BracedBlock, $E(Catch), $E(Finally)), function($skip, $loc, $0, $1, $2, $3, $4) {
2453
+ var TryStatement$0 = $TS($S(Try, BracedBlock, $E(CatchClause), $E(Finally)), function($skip, $loc, $0, $1, $2, $3, $4) {
2456
2454
  var c = $3;
2457
2455
  var f = $4;
2458
2456
  if (!c && !f) {
@@ -2469,17 +2467,17 @@ var Civet = (() => {
2469
2467
  return TryStatement$0(state);
2470
2468
  }
2471
2469
  }
2472
- var Catch$0 = $S(__, $EXPECT($L106, fail, 'Catch "catch"'), $E(CatchBind), BracedBlock);
2473
- function Catch(state) {
2470
+ var CatchClause$0 = $S(__, Catch, $E(CatchBind), BracedBlock);
2471
+ function CatchClause(state) {
2474
2472
  if (state.verbose)
2475
- console.log("ENTER:", "Catch");
2473
+ console.log("ENTER:", "CatchClause");
2476
2474
  if (state.tokenize) {
2477
- return $TOKEN("Catch", state, Catch$0(state));
2475
+ return $TOKEN("CatchClause", state, CatchClause$0(state));
2478
2476
  } else {
2479
- return Catch$0(state);
2477
+ return CatchClause$0(state);
2480
2478
  }
2481
2479
  }
2482
- var CatchBind$0 = $S(__, $EXPECT($L1, fail, 'CatchBind "("'), __, CatchParameter, __, $EXPECT($L2, fail, 'CatchBind ")"'));
2480
+ var CatchBind$0 = $S(__, OpenParen, __, CatchParameter, __, CloseParen);
2483
2481
  var CatchBind$1 = $S(__, InsertOpenParen, CatchParameter, InsertCloseParen);
2484
2482
  function CatchBind(state) {
2485
2483
  if (state.tokenize) {
@@ -2488,7 +2486,7 @@ var Civet = (() => {
2488
2486
  return CatchBind$0(state) || CatchBind$1(state);
2489
2487
  }
2490
2488
  }
2491
- var Finally$0 = $S(__, $EXPECT($L107, fail, 'Finally "finally"'), BracedBlock);
2489
+ var Finally$0 = $S(__, $EXPECT($L81, fail, 'Finally "finally"'), BracedBlock);
2492
2490
  function Finally(state) {
2493
2491
  if (state.verbose)
2494
2492
  console.log("ENTER:", "Finally");
@@ -2507,7 +2505,7 @@ var Civet = (() => {
2507
2505
  return CatchParameter$0(state) || CatchParameter$1(state);
2508
2506
  }
2509
2507
  }
2510
- var Condition$0 = $S(__, $EXPECT($L1, fail, 'Condition "("'), __, Expression, __, $EXPECT($L2, fail, 'Condition ")"'));
2508
+ var Condition$0 = $S(__, OpenParen, __, Expression, __, CloseParen);
2511
2509
  var Condition$1 = $S($N(EOS), __, InsertOpenParen, Expression, InsertCloseParen);
2512
2510
  function Condition(state) {
2513
2511
  if (state.tokenize) {
@@ -2526,11 +2524,11 @@ var Civet = (() => {
2526
2524
  return ExpressionStatement$0(state);
2527
2525
  }
2528
2526
  }
2529
- var KeywordStatement$0 = $S($EXPECT($L108, fail, 'KeywordStatement "break"'), NonIdContinue);
2530
- var KeywordStatement$1 = $S($EXPECT($L109, fail, 'KeywordStatement "continue"'), NonIdContinue);
2531
- var KeywordStatement$2 = $S($EXPECT($L110, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2527
+ var KeywordStatement$0 = $S($EXPECT($L82, fail, 'KeywordStatement "break"'), NonIdContinue);
2528
+ var KeywordStatement$1 = $S($EXPECT($L83, fail, 'KeywordStatement "continue"'), NonIdContinue);
2529
+ var KeywordStatement$2 = $S($EXPECT($L84, fail, 'KeywordStatement "debugger"'), NonIdContinue);
2532
2530
  var KeywordStatement$3 = $S(Return, $E(MaybeNestedExpression));
2533
- var KeywordStatement$4 = $S($EXPECT($L111, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2531
+ var KeywordStatement$4 = $S($EXPECT($L85, fail, 'KeywordStatement "throw"'), NonIdContinue, Expression);
2534
2532
  function KeywordStatement(state) {
2535
2533
  if (state.tokenize) {
2536
2534
  return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state));
@@ -2547,24 +2545,22 @@ var Civet = (() => {
2547
2545
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2548
2546
  }
2549
2547
  }
2550
- var Return$0 = $TS($S($EXPECT($L112, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2551
- return { $loc, token: $1 };
2552
- });
2553
- function Return(state) {
2554
- if (state.verbose)
2555
- console.log("ENTER:", "Return");
2556
- if (state.tokenize) {
2557
- return $TOKEN("Return", state, Return$0(state));
2558
- } else {
2559
- return Return$0(state);
2560
- }
2561
- }
2562
- var ImportDeclaration$0 = $T($S($EXPECT($L113, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2548
+ var ImportDeclaration$0 = $T($S($EXPECT($L86, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2563
2549
  return { "ts": true, "children": value };
2564
2550
  });
2565
2551
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
2566
2552
  var ImportDeclaration$2 = $S(Import, __, ModuleSpecifier);
2567
- var ImportDeclaration$3 = $S(ImpliedImport, ImportClause, __, FromClause);
2553
+ var ImportDeclaration$3 = $TS($S(ImpliedImport, ImportClause, __, FromClause), function($skip, $loc, $0, $1, $2, $3, $4) {
2554
+ var i = $1;
2555
+ var c = $2;
2556
+ var w = $3;
2557
+ var f = $4;
2558
+ i.$loc = {
2559
+ pos: f[0].$loc.pos - 1,
2560
+ length: f[0].$loc.length + 1
2561
+ };
2562
+ return [i, c, w, f];
2563
+ });
2568
2564
  function ImportDeclaration(state) {
2569
2565
  if (state.tokenize) {
2570
2566
  return $TOKEN("ImportDeclaration", state, ImportDeclaration$0(state) || ImportDeclaration$1(state) || ImportDeclaration$2(state) || ImportDeclaration$3(state));
@@ -2572,8 +2568,8 @@ var Civet = (() => {
2572
2568
  return ImportDeclaration$0(state) || ImportDeclaration$1(state) || ImportDeclaration$2(state) || ImportDeclaration$3(state);
2573
2569
  }
2574
2570
  }
2575
- var ImpliedImport$0 = $T($EXPECT($L33, fail, 'ImpliedImport ""'), function(value) {
2576
- return "import ";
2571
+ var ImpliedImport$0 = $TV($EXPECT($L16, fail, 'ImpliedImport ""'), function($skip, $loc, $0, $1) {
2572
+ return { $loc, token: "import " };
2577
2573
  });
2578
2574
  function ImpliedImport(state) {
2579
2575
  if (state.verbose)
@@ -2584,19 +2580,7 @@ var Civet = (() => {
2584
2580
  return ImpliedImport$0(state);
2585
2581
  }
2586
2582
  }
2587
- var Import$0 = $TS($S($EXPECT($L24, fail, 'Import "import"'), $Y($EXPECT($R3, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
2588
- return { $loc, token: $1 };
2589
- });
2590
- function Import(state) {
2591
- if (state.verbose)
2592
- console.log("ENTER:", "Import");
2593
- if (state.tokenize) {
2594
- return $TOKEN("Import", state, Import$0(state));
2595
- } else {
2596
- return Import$0(state);
2597
- }
2598
- }
2599
- var ImportClause$0 = $S(ImportedBinding, $E($S(__, $EXPECT($L0, fail, 'ImportClause ","'), __, $C(NameSpaceImport, NamedImports))));
2583
+ var ImportClause$0 = $S(ImportedBinding, $E($S(__, Comma, __, $C(NameSpaceImport, NamedImports))));
2600
2584
  var ImportClause$1 = NameSpaceImport;
2601
2585
  var ImportClause$2 = NamedImports;
2602
2586
  function ImportClause(state) {
@@ -2606,7 +2590,7 @@ var Civet = (() => {
2606
2590
  return ImportClause$0(state) || ImportClause$1(state) || ImportClause$2(state);
2607
2591
  }
2608
2592
  }
2609
- var NameSpaceImport$0 = $S($EXPECT($L10, fail, 'NameSpaceImport "*"'), __, $EXPECT($L4, fail, 'NameSpaceImport "as"'), NonIdContinue, __, ImportedBinding);
2593
+ var NameSpaceImport$0 = $S($EXPECT($L3, fail, 'NameSpaceImport "*"'), __, As, NonIdContinue, __, ImportedBinding);
2610
2594
  function NameSpaceImport(state) {
2611
2595
  if (state.verbose)
2612
2596
  console.log("ENTER:", "NameSpaceImport");
@@ -2616,7 +2600,7 @@ var Civet = (() => {
2616
2600
  return NameSpaceImport$0(state);
2617
2601
  }
2618
2602
  }
2619
- var NamedImports$0 = $S($EXPECT($L12, fail, 'NamedImports "{"'), $Q(ImportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedImports ","'))), __, $EXPECT($L13, fail, 'NamedImports "}"'));
2603
+ var NamedImports$0 = $S(OpenBrace, $Q(ImportSpecifier), $E($S(__, Comma)), __, CloseBrace);
2620
2604
  function NamedImports(state) {
2621
2605
  if (state.verbose)
2622
2606
  console.log("ENTER:", "NamedImports");
@@ -2636,19 +2620,7 @@ var Civet = (() => {
2636
2620
  return FromClause$0(state);
2637
2621
  }
2638
2622
  }
2639
- var From$0 = $TS($S($EXPECT($L114, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2640
- return { $loc, token: $1 };
2641
- });
2642
- function From(state) {
2643
- if (state.verbose)
2644
- console.log("ENTER:", "From");
2645
- if (state.tokenize) {
2646
- return $TOKEN("From", state, From$0(state));
2647
- } else {
2648
- return From$0(state);
2649
- }
2650
- }
2651
- var ImportSpecifier$0 = $S(__, ModuleExportName, __, $EXPECT($L4, fail, 'ImportSpecifier "as"'), NonIdContinue, __, ImportedBinding, ObjectPropertyDelimiter);
2623
+ var ImportSpecifier$0 = $S(__, ModuleExportName, __, As, NonIdContinue, __, ImportedBinding, ObjectPropertyDelimiter);
2652
2624
  var ImportSpecifier$1 = $S(__, ImportedBinding, ObjectPropertyDelimiter);
2653
2625
  function ImportSpecifier(state) {
2654
2626
  if (state.tokenize) {
@@ -2688,7 +2660,7 @@ var Civet = (() => {
2688
2660
  return UnprocessedModuleSpecifier$0(state) || UnprocessedModuleSpecifier$1(state);
2689
2661
  }
2690
2662
  }
2691
- var UnquotedSpecifier$0 = $TV($EXPECT($R4, fail, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
2663
+ var UnquotedSpecifier$0 = $TV($EXPECT($R3, fail, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
2692
2664
  var spec = $0;
2693
2665
  return { $loc, token: `"${spec}"` };
2694
2666
  });
@@ -2711,7 +2683,7 @@ var Civet = (() => {
2711
2683
  return ImportedBinding$0(state);
2712
2684
  }
2713
2685
  }
2714
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L103, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2686
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L80, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
2715
2687
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
2716
2688
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
2717
2689
  function ExportDeclaration(state) {
@@ -2721,27 +2693,7 @@ var Civet = (() => {
2721
2693
  return ExportDeclaration$0(state) || ExportDeclaration$1(state) || ExportDeclaration$2(state);
2722
2694
  }
2723
2695
  }
2724
- var As$0 = $S($EXPECT($L4, fail, 'As "as"'), NonIdContinue);
2725
- function As(state) {
2726
- if (state.verbose)
2727
- console.log("ENTER:", "As");
2728
- if (state.tokenize) {
2729
- return $TOKEN("As", state, As$0(state));
2730
- } else {
2731
- return As$0(state);
2732
- }
2733
- }
2734
- var Export$0 = $S($EXPECT($L115, fail, 'Export "export"'), NonIdContinue);
2735
- function Export(state) {
2736
- if (state.verbose)
2737
- console.log("ENTER:", "Export");
2738
- if (state.tokenize) {
2739
- return $TOKEN("Export", state, Export$0(state));
2740
- } else {
2741
- return Export$0(state);
2742
- }
2743
- }
2744
- var ExportFromClause$0 = $S($EXPECT($L10, fail, 'ExportFromClause "*"'), $E($S(__, $EXPECT($L4, fail, 'ExportFromClause "as"'), NonIdContinue, __, ModuleExportName)));
2696
+ var ExportFromClause$0 = $S($EXPECT($L3, fail, 'ExportFromClause "*"'), $E($S(__, As, NonIdContinue, __, ModuleExportName)));
2745
2697
  var ExportFromClause$1 = NamedExports;
2746
2698
  function ExportFromClause(state) {
2747
2699
  if (state.tokenize) {
@@ -2750,7 +2702,7 @@ var Civet = (() => {
2750
2702
  return ExportFromClause$0(state) || ExportFromClause$1(state);
2751
2703
  }
2752
2704
  }
2753
- var NamedExports$0 = $S($EXPECT($L12, fail, 'NamedExports "{"'), $Q(ExportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedExports ","'))), __, $EXPECT($L13, fail, 'NamedExports "}"'));
2705
+ var NamedExports$0 = $S(OpenBrace, $Q(ExportSpecifier), $E($S(__, Comma)), __, CloseBrace);
2754
2706
  function NamedExports(state) {
2755
2707
  if (state.verbose)
2756
2708
  console.log("ENTER:", "NamedExports");
@@ -2760,7 +2712,7 @@ var Civet = (() => {
2760
2712
  return NamedExports$0(state);
2761
2713
  }
2762
2714
  }
2763
- var ExportSpecifier$0 = $S(__, ModuleExportName, $E($S(__, $EXPECT($L4, fail, 'ExportSpecifier "as"'), __, ModuleExportName)), ObjectPropertyDelimiter);
2715
+ var ExportSpecifier$0 = $S(__, ModuleExportName, $E($S(__, As, __, ModuleExportName)), ObjectPropertyDelimiter);
2764
2716
  function ExportSpecifier(state) {
2765
2717
  if (state.verbose)
2766
2718
  console.log("ENTER:", "ExportSpecifier");
@@ -2791,21 +2743,15 @@ var Civet = (() => {
2791
2743
  return HoistableDeclaration$0(state);
2792
2744
  }
2793
2745
  }
2794
- var LexicalDeclaration$0 = $S(LetOrConst, __, LexicalBinding, $Q($S(__, $EXPECT($L0, fail, 'LexicalDeclaration ","'), __, LexicalBinding)));
2795
- var LexicalDeclaration$1 = $TS($S($C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2796
- var bind = $1;
2797
- var suffix = $2;
2798
- var ws = $3;
2799
- var ca = $4;
2800
- var exp = $5;
2801
- return [
2802
- "const ",
2803
- bind,
2804
- suffix,
2805
- ws,
2806
- { $loc: ca.$loc, token: "=" },
2807
- exp
2808
- ];
2746
+ var LexicalDeclaration$0 = $S(LetOrConst, __, LexicalBinding, $Q($S(__, Comma, __, LexicalBinding)));
2747
+ var LexicalDeclaration$1 = $TS($S(InsertConst, $C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, ConstAssignment, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2748
+ var c = $1;
2749
+ var ca = $5;
2750
+ c.$loc = {
2751
+ pos: ca.$loc.pos - 1,
2752
+ length: ca.$loc.length + 1
2753
+ };
2754
+ return $0;
2809
2755
  });
2810
2756
  function LexicalDeclaration(state) {
2811
2757
  if (state.tokenize) {
@@ -2814,8 +2760,8 @@ var Civet = (() => {
2814
2760
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2815
2761
  }
2816
2762
  }
2817
- var ConstAssignment$0 = $TV($EXPECT($L116, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2818
- return { $loc, token: $1 };
2763
+ var ConstAssignment$0 = $TV($EXPECT($L87, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
2764
+ return { $loc, token: "=" };
2819
2765
  });
2820
2766
  function ConstAssignment(state) {
2821
2767
  if (state.verbose)
@@ -2835,7 +2781,7 @@ var Civet = (() => {
2835
2781
  return LexicalBinding$0(state) || LexicalBinding$1(state);
2836
2782
  }
2837
2783
  }
2838
- var Initializer$0 = $S(__, $EXPECT($L58, fail, 'Initializer "="'), AssignmentExpression);
2784
+ var Initializer$0 = $S(__, Equals, AssignmentExpression);
2839
2785
  function Initializer(state) {
2840
2786
  if (state.verbose)
2841
2787
  console.log("ENTER:", "Initializer");
@@ -2845,7 +2791,7 @@ var Civet = (() => {
2845
2791
  return Initializer$0(state);
2846
2792
  }
2847
2793
  }
2848
- var VariableStatement$0 = $S($EXPECT($L96, fail, 'VariableStatement "var"'), __, VariableDeclarationList);
2794
+ var VariableStatement$0 = $S(Var, __, VariableDeclarationList);
2849
2795
  function VariableStatement(state) {
2850
2796
  if (state.verbose)
2851
2797
  console.log("ENTER:", "VariableStatement");
@@ -2855,7 +2801,7 @@ var Civet = (() => {
2855
2801
  return VariableStatement$0(state);
2856
2802
  }
2857
2803
  }
2858
- var VariableDeclarationList$0 = $S(VariableDeclaration, $Q($S(__, $EXPECT($L0, fail, 'VariableDeclarationList ","'), __, VariableDeclaration)));
2804
+ var VariableDeclarationList$0 = $S(VariableDeclaration, $Q($S(__, Comma, __, VariableDeclaration)));
2859
2805
  function VariableDeclarationList(state) {
2860
2806
  if (state.verbose)
2861
2807
  console.log("ENTER:", "VariableDeclarationList");
@@ -2898,7 +2844,7 @@ var Civet = (() => {
2898
2844
  return NumericLiteralKind$0(state) || NumericLiteralKind$1(state) || NumericLiteralKind$2(state) || NumericLiteralKind$3(state) || NumericLiteralKind$4(state);
2899
2845
  }
2900
2846
  }
2901
- var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R5, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
2847
+ var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R4, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
2902
2848
  function DecimalBigIntegerLiteral(state) {
2903
2849
  if (state.verbose)
2904
2850
  console.log("ENTER:", "DecimalBigIntegerLiteral");
@@ -2908,7 +2854,7 @@ var Civet = (() => {
2908
2854
  return DecimalBigIntegerLiteral$0(state);
2909
2855
  }
2910
2856
  }
2911
- var DecimalLiteral$0 = $R$0($EXPECT($R6, fail, "DecimalLiteral /\\d+(?:\\.\\d*)?/"));
2857
+ var DecimalLiteral$0 = $R$0($EXPECT($R5, fail, "DecimalLiteral /\\d+(?:\\.\\d*)?/"));
2912
2858
  function DecimalLiteral(state) {
2913
2859
  if (state.verbose)
2914
2860
  console.log("ENTER:", "DecimalLiteral");
@@ -2918,7 +2864,7 @@ var Civet = (() => {
2918
2864
  return DecimalLiteral$0(state);
2919
2865
  }
2920
2866
  }
2921
- var BinaryIntegerLiteral$0 = $R$0($EXPECT($R7, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*/"));
2867
+ var BinaryIntegerLiteral$0 = $R$0($EXPECT($R6, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*/"));
2922
2868
  function BinaryIntegerLiteral(state) {
2923
2869
  if (state.verbose)
2924
2870
  console.log("ENTER:", "BinaryIntegerLiteral");
@@ -2928,7 +2874,7 @@ var Civet = (() => {
2928
2874
  return BinaryIntegerLiteral$0(state);
2929
2875
  }
2930
2876
  }
2931
- var OctalIntegerLiteral$0 = $R$0($EXPECT($R8, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*/"));
2877
+ var OctalIntegerLiteral$0 = $R$0($EXPECT($R7, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*/"));
2932
2878
  function OctalIntegerLiteral(state) {
2933
2879
  if (state.verbose)
2934
2880
  console.log("ENTER:", "OctalIntegerLiteral");
@@ -2938,7 +2884,7 @@ var Civet = (() => {
2938
2884
  return OctalIntegerLiteral$0(state);
2939
2885
  }
2940
2886
  }
2941
- var HexLiteral$0 = $R$0($EXPECT($R9, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*/"));
2887
+ var HexLiteral$0 = $R$0($EXPECT($R8, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*/"));
2942
2888
  function HexLiteral(state) {
2943
2889
  if (state.verbose)
2944
2890
  console.log("ENTER:", "HexLiteral");
@@ -2948,18 +2894,22 @@ var Civet = (() => {
2948
2894
  return HexLiteral$0(state);
2949
2895
  }
2950
2896
  }
2951
- var StringLiteral$0 = $TS($S($EXPECT($L117, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""'), $TEXT($Q(TripleDoubleStringCharacter)), $EXPECT($L117, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""')), function($skip, $loc, $0, $1, $2, $3) {
2897
+ var StringLiteral$0 = $TS($S(TripleDoubleQuote, TripleDoubleStringCharacters, TripleDoubleQuote), function($skip, $loc, $0, $1, $2, $3) {
2898
+ var s = $1;
2952
2899
  var str = $2;
2953
- return { $loc, token: "`" + module.dedentBlockString(str) + "`" };
2900
+ var e = $3;
2901
+ return [s, module.dedentBlockString(str), e];
2954
2902
  });
2955
- var StringLiteral$1 = $TS($S($EXPECT($L118, fail, `StringLiteral "'''"`), $TEXT($Q(TripleSingleStringCharacter)), $EXPECT($L118, fail, `StringLiteral "'''"`)), function($skip, $loc, $0, $1, $2, $3) {
2903
+ var StringLiteral$1 = $TS($S(TripleSingleQuote, TripleSingleStringCharacters, TripleSingleQuote), function($skip, $loc, $0, $1, $2, $3) {
2904
+ var s = $1;
2956
2905
  var str = $2;
2957
- return { $loc, token: "`" + module.dedentBlockString(str) + "`" };
2906
+ var e = $3;
2907
+ return [s, module.dedentBlockString(str), e];
2958
2908
  });
2959
- var StringLiteral$2 = $TV($TEXT($S($EXPECT($L119, fail, 'StringLiteral "\\\\\\""'), $Q(DoubleStringCharacter), $EXPECT($L119, fail, 'StringLiteral "\\\\\\""'))), function($skip, $loc, $0, $1) {
2909
+ var StringLiteral$2 = $TV($TEXT($S($EXPECT($L88, fail, 'StringLiteral "\\\\\\""'), $Q(DoubleStringCharacter), $EXPECT($L88, fail, 'StringLiteral "\\\\\\""'))), function($skip, $loc, $0, $1) {
2960
2910
  return { $loc, token: $1 };
2961
2911
  });
2962
- var StringLiteral$3 = $TV($TEXT($S($EXPECT($L120, fail, `StringLiteral "'"`), $Q(SingleStringCharacter), $EXPECT($L120, fail, `StringLiteral "'"`))), function($skip, $loc, $0, $1) {
2912
+ var StringLiteral$3 = $TV($TEXT($S($EXPECT($L89, fail, `StringLiteral "'"`), $Q(SingleStringCharacter), $EXPECT($L89, fail, `StringLiteral "'"`))), function($skip, $loc, $0, $1) {
2963
2913
  return { $loc, token: $1 };
2964
2914
  });
2965
2915
  function StringLiteral(state) {
@@ -2969,7 +2919,7 @@ var Civet = (() => {
2969
2919
  return StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state) || StringLiteral$3(state);
2970
2920
  }
2971
2921
  }
2972
- var DoubleStringCharacter$0 = $R$0($EXPECT($R10, fail, 'DoubleStringCharacter /(?:\\\\.|[^"])+/'));
2922
+ var DoubleStringCharacter$0 = $R$0($EXPECT($R9, fail, 'DoubleStringCharacter /(?:\\\\.|[^"])+/'));
2973
2923
  function DoubleStringCharacter(state) {
2974
2924
  if (state.verbose)
2975
2925
  console.log("ENTER:", "DoubleStringCharacter");
@@ -2979,7 +2929,7 @@ var Civet = (() => {
2979
2929
  return DoubleStringCharacter$0(state);
2980
2930
  }
2981
2931
  }
2982
- var SingleStringCharacter$0 = $R$0($EXPECT($R11, fail, "SingleStringCharacter /(?:\\\\.|[^'])+/"));
2932
+ var SingleStringCharacter$0 = $R$0($EXPECT($R10, fail, "SingleStringCharacter /(?:\\\\.|[^'])+/"));
2983
2933
  function SingleStringCharacter(state) {
2984
2934
  if (state.verbose)
2985
2935
  console.log("ENTER:", "SingleStringCharacter");
@@ -2989,27 +2939,31 @@ var Civet = (() => {
2989
2939
  return SingleStringCharacter$0(state);
2990
2940
  }
2991
2941
  }
2992
- var TripleDoubleStringCharacter$0 = $R$0($EXPECT($R12, fail, 'TripleDoubleStringCharacter /(?:"(?!"")|\\\\.|[^"])+/'));
2993
- function TripleDoubleStringCharacter(state) {
2942
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R11, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2943
+ return { $loc, token: $0 };
2944
+ });
2945
+ function TripleDoubleStringCharacters(state) {
2994
2946
  if (state.verbose)
2995
- console.log("ENTER:", "TripleDoubleStringCharacter");
2947
+ console.log("ENTER:", "TripleDoubleStringCharacters");
2996
2948
  if (state.tokenize) {
2997
- return $TOKEN("TripleDoubleStringCharacter", state, TripleDoubleStringCharacter$0(state));
2949
+ return $TOKEN("TripleDoubleStringCharacters", state, TripleDoubleStringCharacters$0(state));
2998
2950
  } else {
2999
- return TripleDoubleStringCharacter$0(state);
2951
+ return TripleDoubleStringCharacters$0(state);
3000
2952
  }
3001
2953
  }
3002
- var TripleSingleStringCharacter$0 = $R$0($EXPECT($R13, fail, "TripleSingleStringCharacter /(?:'(?!'')|\\\\.|[^'])+/"));
3003
- function TripleSingleStringCharacter(state) {
2954
+ var TripleSingleStringCharacters$0 = $TR($EXPECT($R12, fail, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2955
+ return { $loc, token: $0 };
2956
+ });
2957
+ function TripleSingleStringCharacters(state) {
3004
2958
  if (state.verbose)
3005
- console.log("ENTER:", "TripleSingleStringCharacter");
2959
+ console.log("ENTER:", "TripleSingleStringCharacters");
3006
2960
  if (state.tokenize) {
3007
- return $TOKEN("TripleSingleStringCharacter", state, TripleSingleStringCharacter$0(state));
2961
+ return $TOKEN("TripleSingleStringCharacters", state, TripleSingleStringCharacters$0(state));
3008
2962
  } else {
3009
- return TripleSingleStringCharacter$0(state);
2963
+ return TripleSingleStringCharacters$0(state);
3010
2964
  }
3011
2965
  }
3012
- var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L60, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L60, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
2966
+ var RegularExpressionLiteral$0 = $TV($TEXT($S($EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionBody, $EXPECT($L45, fail, 'RegularExpressionLiteral "/"'), RegularExpressionFlags)), function($skip, $loc, $0, $1) {
3013
2967
  return { $loc, token: $1 };
3014
2968
  });
3015
2969
  function RegularExpressionLiteral(state) {
@@ -3021,7 +2975,7 @@ var Civet = (() => {
3021
2975
  return RegularExpressionLiteral$0(state);
3022
2976
  }
3023
2977
  }
3024
- var RegularExpressionBody$0 = $S($R$0($EXPECT($R14, fail, "RegularExpressionBody /[^*\\/\\r\\n]/")), $Q(RegExpCharacter));
2978
+ var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R13, fail, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpCharacter));
3025
2979
  function RegularExpressionBody(state) {
3026
2980
  if (state.verbose)
3027
2981
  console.log("ENTER:", "RegularExpressionBody");
@@ -3031,7 +2985,7 @@ var Civet = (() => {
3031
2985
  return RegularExpressionBody$0(state);
3032
2986
  }
3033
2987
  }
3034
- var RegExpCharacter$0 = $R$0($EXPECT($R15, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
2988
+ var RegExpCharacter$0 = $R$0($EXPECT($R14, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
3035
2989
  function RegExpCharacter(state) {
3036
2990
  if (state.verbose)
3037
2991
  console.log("ENTER:", "RegExpCharacter");
@@ -3041,7 +2995,7 @@ var Civet = (() => {
3041
2995
  return RegExpCharacter$0(state);
3042
2996
  }
3043
2997
  }
3044
- var RegularExpressionFlags$0 = $R$0($EXPECT($R16, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
2998
+ var RegularExpressionFlags$0 = $R$0($EXPECT($R15, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
3045
2999
  function RegularExpressionFlags(state) {
3046
3000
  if (state.verbose)
3047
3001
  console.log("ENTER:", "RegularExpressionFlags");
@@ -3051,7 +3005,7 @@ var Civet = (() => {
3051
3005
  return RegularExpressionFlags$0(state);
3052
3006
  }
3053
3007
  }
3054
- var TemplateLiteral$0 = $S($EXPECT($L121, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L121, fail, 'TemplateLiteral "`"'));
3008
+ var TemplateLiteral$0 = $S($EXPECT($L90, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L90, fail, 'TemplateLiteral "`"'));
3055
3009
  function TemplateLiteral(state) {
3056
3010
  if (state.verbose)
3057
3011
  console.log("ENTER:", "TemplateLiteral");
@@ -3061,7 +3015,7 @@ var Civet = (() => {
3061
3015
  return TemplateLiteral$0(state);
3062
3016
  }
3063
3017
  }
3064
- var TemplateSubstitution$0 = $S($EXPECT($L122, fail, 'TemplateSubstitution "${"'), __, Expression, __, $EXPECT($L13, fail, 'TemplateSubstitution "}"'));
3018
+ var TemplateSubstitution$0 = $S($EXPECT($L91, fail, 'TemplateSubstitution "${"'), __, Expression, __, CloseBrace);
3065
3019
  function TemplateSubstitution(state) {
3066
3020
  if (state.verbose)
3067
3021
  console.log("ENTER:", "TemplateSubstitution");
@@ -3071,7 +3025,7 @@ var Civet = (() => {
3071
3025
  return TemplateSubstitution$0(state);
3072
3026
  }
3073
3027
  }
3074
- var TemplateCharacters$0 = $R$0($EXPECT($R17, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3028
+ var TemplateCharacters$0 = $R$0($EXPECT($R16, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3075
3029
  function TemplateCharacters(state) {
3076
3030
  if (state.verbose)
3077
3031
  console.log("ENTER:", "TemplateCharacters");
@@ -3081,7 +3035,7 @@ var Civet = (() => {
3081
3035
  return TemplateCharacters$0(state);
3082
3036
  }
3083
3037
  }
3084
- 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})/"));
3038
+ 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})/"));
3085
3039
  function ReservedWord(state) {
3086
3040
  if (state.verbose)
3087
3041
  console.log("ENTER:", "ReservedWord");
@@ -3100,7 +3054,9 @@ var Civet = (() => {
3100
3054
  return Comment$0(state) || Comment$1(state);
3101
3055
  }
3102
3056
  }
3103
- var SingleLineComment$0 = $R$0($EXPECT($R19, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"));
3057
+ var SingleLineComment$0 = $TR($EXPECT($R18, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3058
+ return { $loc, token: $0 };
3059
+ });
3104
3060
  var SingleLineComment$1 = CoffeeSingleLineComment;
3105
3061
  function SingleLineComment(state) {
3106
3062
  if (state.tokenize) {
@@ -3118,7 +3074,9 @@ var Civet = (() => {
3118
3074
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3119
3075
  }
3120
3076
  }
3121
- var JSMultiLineComment$0 = $S($EXPECT($L123, fail, 'JSMultiLineComment "/*"'), $TEXT($Q($S($N($EXPECT($L124, fail, 'JSMultiLineComment "*/"')), $EXPECT($R20, fail, "JSMultiLineComment /./")))), $EXPECT($L124, fail, 'JSMultiLineComment "*/"'));
3077
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L92, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L93, fail, 'JSMultiLineComment "*/"')), $EXPECT($R19, fail, "JSMultiLineComment /./"))), $EXPECT($L93, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3078
+ return { $loc, token: $1 };
3079
+ });
3122
3080
  function JSMultiLineComment(state) {
3123
3081
  if (state.verbose)
3124
3082
  console.log("ENTER:", "JSMultiLineComment");
@@ -3128,10 +3086,10 @@ var Civet = (() => {
3128
3086
  return JSMultiLineComment$0(state);
3129
3087
  }
3130
3088
  }
3131
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R21, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3089
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R20, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3132
3090
  if (!module.coffeeCompat)
3133
3091
  return $skip;
3134
- return ["//", $1];
3092
+ return { $loc, token: `//${$1}` };
3135
3093
  });
3136
3094
  function CoffeeSingleLineComment(state) {
3137
3095
  if (state.verbose)
@@ -3142,8 +3100,8 @@ var Civet = (() => {
3142
3100
  return CoffeeSingleLineComment$0(state);
3143
3101
  }
3144
3102
  }
3145
- var CoffeeMultiLineComment$0 = $T($S($EXPECT($L125, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($EXPECT($L125, fail, 'CoffeeMultiLineComment "###"')), $EXPECT($R20, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L125, fail, 'CoffeeMultiLineComment "###"')), function(value) {
3146
- return ["/*", value[1], "*/"];
3103
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L94, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L94, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L93, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R19, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L94, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3104
+ return { $loc, token: `/*${$2}*/` };
3147
3105
  });
3148
3106
  function CoffeeMultiLineComment(state) {
3149
3107
  if (state.verbose)
@@ -3154,7 +3112,9 @@ var Civet = (() => {
3154
3112
  return CoffeeMultiLineComment$0(state);
3155
3113
  }
3156
3114
  }
3157
- var InlineComment$0 = $S($EXPECT($L123, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L124, fail, 'InlineComment "*/"')), $EXPECT($R22, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L124, fail, 'InlineComment "*/"'));
3115
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L92, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L93, fail, 'InlineComment "*/"')), $EXPECT($R21, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L93, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3116
+ return { $loc, token: $1 };
3117
+ });
3158
3118
  function InlineComment(state) {
3159
3119
  if (state.verbose)
3160
3120
  console.log("ENTER:", "InlineComment");
@@ -3164,7 +3124,7 @@ var Civet = (() => {
3164
3124
  return InlineComment$0(state);
3165
3125
  }
3166
3126
  }
3167
- var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R23, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3127
+ var RestOfLine$0 = $S($Q($C($R$0($EXPECT($R22, fail, "RestOfLine /[ \\t]+/")), SingleLineComment, MultiLineComment)), EOL);
3168
3128
  function RestOfLine(state) {
3169
3129
  if (state.verbose)
3170
3130
  console.log("ENTER:", "RestOfLine");
@@ -3174,7 +3134,7 @@ var Civet = (() => {
3174
3134
  return RestOfLine$0(state);
3175
3135
  }
3176
3136
  }
3177
- var TrailingComment$0 = $R$0($EXPECT($R24, fail, "TrailingComment /[\\t ]+/"));
3137
+ var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3178
3138
  var TrailingComment$1 = InlineComment;
3179
3139
  var TrailingComment$2 = SingleLineComment;
3180
3140
  function TrailingComment(state) {
@@ -3184,7 +3144,7 @@ var Civet = (() => {
3184
3144
  return TrailingComment$0(state) || TrailingComment$1(state) || TrailingComment$2(state);
3185
3145
  }
3186
3146
  }
3187
- var _$0 = $P($C($R$0($EXPECT($R24, fail, "_ /[\\t ]+/")), Comment));
3147
+ var _$0 = $P($C(NonNewlineWhitespace, Comment));
3188
3148
  function _(state) {
3189
3149
  if (state.verbose)
3190
3150
  console.log("ENTER:", "_");
@@ -3194,7 +3154,19 @@ var Civet = (() => {
3194
3154
  return _$0(state);
3195
3155
  }
3196
3156
  }
3197
- var __$0 = $Q($C($R$0($EXPECT($R25, fail, "__ /[\\s]+/")), Comment));
3157
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R22, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3158
+ return { $loc, token: $0 };
3159
+ });
3160
+ function NonNewlineWhitespace(state) {
3161
+ if (state.verbose)
3162
+ console.log("ENTER:", "NonNewlineWhitespace");
3163
+ if (state.tokenize) {
3164
+ return $TOKEN("NonNewlineWhitespace", state, NonNewlineWhitespace$0(state));
3165
+ } else {
3166
+ return NonNewlineWhitespace$0(state);
3167
+ }
3168
+ }
3169
+ var __$0 = $Q($C(Whitespace, Comment));
3198
3170
  function __(state) {
3199
3171
  if (state.verbose)
3200
3172
  console.log("ENTER:", "__");
@@ -3204,9 +3176,21 @@ var Civet = (() => {
3204
3176
  return __$0(state);
3205
3177
  }
3206
3178
  }
3207
- var StatementDelimiter$0 = $S($Q(TrailingComment), $EXPECT($L90, fail, 'StatementDelimiter ";"'), $Q(TrailingComment));
3208
- var StatementDelimiter$1 = $T($Y(EOS), function(value) {
3209
- return [";", value];
3179
+ var Whitespace$0 = $TR($EXPECT($R24, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3180
+ return { $loc, token: $0 };
3181
+ });
3182
+ function Whitespace(state) {
3183
+ if (state.verbose)
3184
+ console.log("ENTER:", "Whitespace");
3185
+ if (state.tokenize) {
3186
+ return $TOKEN("Whitespace", state, Whitespace$0(state));
3187
+ } else {
3188
+ return Whitespace$0(state);
3189
+ }
3190
+ }
3191
+ var StatementDelimiter$0 = $S($Q(TrailingComment), Semicolon, $Q(TrailingComment));
3192
+ var StatementDelimiter$1 = $TS($S($EXPECT($L16, fail, 'StatementDelimiter ""'), $Y(EOS)), function($skip, $loc, $0, $1, $2) {
3193
+ return { $loc, token: ";" };
3210
3194
  });
3211
3195
  function StatementDelimiter(state) {
3212
3196
  if (state.tokenize) {
@@ -3215,7 +3199,7 @@ var Civet = (() => {
3215
3199
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3216
3200
  }
3217
3201
  }
3218
- var NonIdContinue$0 = $R$0($EXPECT($R26, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3202
+ var NonIdContinue$0 = $R$0($EXPECT($R25, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3219
3203
  function NonIdContinue(state) {
3220
3204
  if (state.verbose)
3221
3205
  console.log("ENTER:", "NonIdContinue");
@@ -3225,122 +3209,578 @@ var Civet = (() => {
3225
3209
  return NonIdContinue$0(state);
3226
3210
  }
3227
3211
  }
3228
- var JSXElement$0 = JSXSelfClosingElement;
3229
- var JSXElement$1 = $TS($S(JSXOpeningElement, $Q(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
3230
- if ($1[1] !== $4[2]) {
3231
- throw new Error(`mismatched closing tags at ${JSON.stringify($loc)}`);
3212
+ var Loc$0 = $TV($EXPECT($L16, fail, 'Loc ""'), function($skip, $loc, $0, $1) {
3213
+ return { $loc, token: "" };
3214
+ });
3215
+ function Loc(state) {
3216
+ if (state.verbose)
3217
+ console.log("ENTER:", "Loc");
3218
+ if (state.tokenize) {
3219
+ return $TOKEN("Loc", state, Loc$0(state));
3220
+ } else {
3221
+ return Loc$0(state);
3232
3222
  }
3233
- return $0;
3223
+ }
3224
+ var As$0 = $TS($S($EXPECT($L95, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3225
+ return { $loc, token: $1 };
3234
3226
  });
3235
- function JSXElement(state) {
3227
+ function As(state) {
3228
+ if (state.verbose)
3229
+ console.log("ENTER:", "As");
3236
3230
  if (state.tokenize) {
3237
- return $TOKEN("JSXElement", state, JSXElement$0(state) || JSXElement$1(state));
3231
+ return $TOKEN("As", state, As$0(state));
3238
3232
  } else {
3239
- return JSXElement$0(state) || JSXElement$1(state);
3233
+ return As$0(state);
3240
3234
  }
3241
3235
  }
3242
- var JSXSelfClosingElement$0 = $S($EXPECT($L16, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3243
- function JSXSelfClosingElement(state) {
3236
+ var Async$0 = $TV($EXPECT($L96, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3237
+ return { $loc, token: $1 };
3238
+ });
3239
+ function Async(state) {
3244
3240
  if (state.verbose)
3245
- console.log("ENTER:", "JSXSelfClosingElement");
3241
+ console.log("ENTER:", "Async");
3246
3242
  if (state.tokenize) {
3247
- return $TOKEN("JSXSelfClosingElement", state, JSXSelfClosingElement$0(state));
3243
+ return $TOKEN("Async", state, Async$0(state));
3248
3244
  } else {
3249
- return JSXSelfClosingElement$0(state);
3245
+ return Async$0(state);
3250
3246
  }
3251
3247
  }
3252
- var JSXOpeningElement$0 = $S($EXPECT($L16, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L69, fail, 'JSXOpeningElement ">"'));
3253
- function JSXOpeningElement(state) {
3248
+ var Await$0 = $TS($S($EXPECT($L97, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3249
+ return { $loc, token: $1 };
3250
+ });
3251
+ function Await(state) {
3254
3252
  if (state.verbose)
3255
- console.log("ENTER:", "JSXOpeningElement");
3253
+ console.log("ENTER:", "Await");
3256
3254
  if (state.tokenize) {
3257
- return $TOKEN("JSXOpeningElement", state, JSXOpeningElement$0(state));
3255
+ return $TOKEN("Await", state, Await$0(state));
3258
3256
  } else {
3259
- return JSXOpeningElement$0(state);
3257
+ return Await$0(state);
3260
3258
  }
3261
3259
  }
3262
- var JSXClosingElement$0 = $S($EXPECT($L127, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L69, fail, 'JSXClosingElement ">"'));
3263
- function JSXClosingElement(state) {
3260
+ var Catch$0 = $TV($EXPECT($L98, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3261
+ return { $loc, token: $1 };
3262
+ });
3263
+ function Catch(state) {
3264
3264
  if (state.verbose)
3265
- console.log("ENTER:", "JSXClosingElement");
3265
+ console.log("ENTER:", "Catch");
3266
3266
  if (state.tokenize) {
3267
- return $TOKEN("JSXClosingElement", state, JSXClosingElement$0(state));
3267
+ return $TOKEN("Catch", state, Catch$0(state));
3268
3268
  } else {
3269
- return JSXClosingElement$0(state);
3269
+ return Catch$0(state);
3270
3270
  }
3271
3271
  }
3272
- var JSXFragment$0 = $S($EXPECT($L128, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L129, fail, 'JSXFragment "</>"'));
3273
- function JSXFragment(state) {
3272
+ var Class$0 = $TV($EXPECT($L99, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3273
+ return { $loc, token: $1 };
3274
+ });
3275
+ function Class(state) {
3274
3276
  if (state.verbose)
3275
- console.log("ENTER:", "JSXFragment");
3277
+ console.log("ENTER:", "Class");
3276
3278
  if (state.tokenize) {
3277
- return $TOKEN("JSXFragment", state, JSXFragment$0(state));
3279
+ return $TOKEN("Class", state, Class$0(state));
3278
3280
  } else {
3279
- return JSXFragment$0(state);
3281
+ return Class$0(state);
3280
3282
  }
3281
3283
  }
3282
- var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L14, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L25, fail, 'JSXElementName "."'), JSXIdentifierName))));
3283
- function JSXElementName(state) {
3284
+ var CloseBrace$0 = $TV($EXPECT($L100, fail, 'CloseBrace "}"'), function($skip, $loc, $0, $1) {
3285
+ return { $loc, token: $1 };
3286
+ });
3287
+ function CloseBrace(state) {
3284
3288
  if (state.verbose)
3285
- console.log("ENTER:", "JSXElementName");
3289
+ console.log("ENTER:", "CloseBrace");
3286
3290
  if (state.tokenize) {
3287
- return $TOKEN("JSXElementName", state, JSXElementName$0(state));
3291
+ return $TOKEN("CloseBrace", state, CloseBrace$0(state));
3288
3292
  } else {
3289
- return JSXElementName$0(state);
3293
+ return CloseBrace$0(state);
3290
3294
  }
3291
3295
  }
3292
- var JSXIdentifierName$0 = $R$0($EXPECT($R27, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3293
- function JSXIdentifierName(state) {
3296
+ var CloseBracket$0 = $TV($EXPECT($L24, fail, 'CloseBracket "]"'), function($skip, $loc, $0, $1) {
3297
+ return { $loc, token: $1 };
3298
+ });
3299
+ function CloseBracket(state) {
3294
3300
  if (state.verbose)
3295
- console.log("ENTER:", "JSXIdentifierName");
3301
+ console.log("ENTER:", "CloseBracket");
3296
3302
  if (state.tokenize) {
3297
- return $TOKEN("JSXIdentifierName", state, JSXIdentifierName$0(state));
3303
+ return $TOKEN("CloseBracket", state, CloseBracket$0(state));
3298
3304
  } else {
3299
- return JSXIdentifierName$0(state);
3305
+ return CloseBracket$0(state);
3300
3306
  }
3301
3307
  }
3302
- var JSXAttributes$0 = $Q($S(__, JSXAttribute));
3303
- function JSXAttributes(state) {
3308
+ var CloseParen$0 = $TV($EXPECT($L17, fail, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
3309
+ return { $loc, token: $1 };
3310
+ });
3311
+ function CloseParen(state) {
3304
3312
  if (state.verbose)
3305
- console.log("ENTER:", "JSXAttributes");
3313
+ console.log("ENTER:", "CloseParen");
3306
3314
  if (state.tokenize) {
3307
- return $TOKEN("JSXAttributes", state, JSXAttributes$0(state));
3315
+ return $TOKEN("CloseParen", state, CloseParen$0(state));
3308
3316
  } else {
3309
- return JSXAttributes$0(state);
3317
+ return CloseParen$0(state);
3310
3318
  }
3311
3319
  }
3312
- var JSXAttribute$0 = $S($EXPECT($L12, fail, 'JSXAttribute "{"'), __, $EXPECT($L34, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, $EXPECT($L13, fail, 'JSXAttribute "}"'));
3313
- var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
3314
- function JSXAttribute(state) {
3320
+ var Colon$0 = $TV($EXPECT($L101, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3321
+ return { $loc, token: $1 };
3322
+ });
3323
+ function Colon(state) {
3324
+ if (state.verbose)
3325
+ console.log("ENTER:", "Colon");
3315
3326
  if (state.tokenize) {
3316
- return $TOKEN("JSXAttribute", state, JSXAttribute$0(state) || JSXAttribute$1(state));
3327
+ return $TOKEN("Colon", state, Colon$0(state));
3317
3328
  } else {
3318
- return JSXAttribute$0(state) || JSXAttribute$1(state);
3329
+ return Colon$0(state);
3319
3330
  }
3320
3331
  }
3321
- var JSXAttributeName$0 = $S(JSXIdentifierName, $E($S($EXPECT($L14, fail, 'JSXAttributeName ":"'), JSXIdentifierName)));
3322
- function JSXAttributeName(state) {
3332
+ var Dot$0 = $TV($EXPECT($L102, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3333
+ return { $loc, token: $1 };
3334
+ });
3335
+ function Dot(state) {
3323
3336
  if (state.verbose)
3324
- console.log("ENTER:", "JSXAttributeName");
3337
+ console.log("ENTER:", "Dot");
3325
3338
  if (state.tokenize) {
3326
- return $TOKEN("JSXAttributeName", state, JSXAttributeName$0(state));
3339
+ return $TOKEN("Dot", state, Dot$0(state));
3327
3340
  } else {
3328
- return JSXAttributeName$0(state);
3341
+ return Dot$0(state);
3329
3342
  }
3330
3343
  }
3331
- var JSXAttributeInitializer$0 = $S(__, $EXPECT($L58, fail, 'JSXAttributeInitializer "="'), __, JSXAttributeValue);
3332
- function JSXAttributeInitializer(state) {
3344
+ var Else$0 = $TV($EXPECT($L103, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3345
+ return { $loc, token: $1 };
3346
+ });
3347
+ function Else(state) {
3333
3348
  if (state.verbose)
3334
- console.log("ENTER:", "JSXAttributeInitializer");
3349
+ console.log("ENTER:", "Else");
3335
3350
  if (state.tokenize) {
3336
- return $TOKEN("JSXAttributeInitializer", state, JSXAttributeInitializer$0(state));
3351
+ return $TOKEN("Else", state, Else$0(state));
3337
3352
  } else {
3338
- return JSXAttributeInitializer$0(state);
3353
+ return Else$0(state);
3339
3354
  }
3340
3355
  }
3341
- var JSXAttributeValue$0 = $R$0($EXPECT($R28, fail, 'JSXAttributeValue /"[^"]*"/'));
3342
- var JSXAttributeValue$1 = $R$0($EXPECT($R29, fail, "JSXAttributeValue /'[^']*'/"));
3343
- var JSXAttributeValue$2 = $S($EXPECT($L12, fail, 'JSXAttributeValue "{"'), __, AssignmentExpression, __, $EXPECT($L13, fail, 'JSXAttributeValue "}"'));
3356
+ var Equals$0 = $TV($EXPECT($L43, fail, 'Equals "="'), function($skip, $loc, $0, $1) {
3357
+ return { $loc, token: $1 };
3358
+ });
3359
+ function Equals(state) {
3360
+ if (state.verbose)
3361
+ console.log("ENTER:", "Equals");
3362
+ if (state.tokenize) {
3363
+ return $TOKEN("Equals", state, Equals$0(state));
3364
+ } else {
3365
+ return Equals$0(state);
3366
+ }
3367
+ }
3368
+ var Export$0 = $TS($S($EXPECT($L104, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3369
+ return { $loc, token: $1 };
3370
+ });
3371
+ function Export(state) {
3372
+ if (state.verbose)
3373
+ console.log("ENTER:", "Export");
3374
+ if (state.tokenize) {
3375
+ return $TOKEN("Export", state, Export$0(state));
3376
+ } else {
3377
+ return Export$0(state);
3378
+ }
3379
+ }
3380
+ var For$0 = $TS($S($EXPECT($L105, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3381
+ return { $loc, token: $1 };
3382
+ });
3383
+ function For(state) {
3384
+ if (state.verbose)
3385
+ console.log("ENTER:", "For");
3386
+ if (state.tokenize) {
3387
+ return $TOKEN("For", state, For$0(state));
3388
+ } else {
3389
+ return For$0(state);
3390
+ }
3391
+ }
3392
+ var From$0 = $TS($S($EXPECT($L106, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3393
+ return { $loc, token: $1 };
3394
+ });
3395
+ function From(state) {
3396
+ if (state.verbose)
3397
+ console.log("ENTER:", "From");
3398
+ if (state.tokenize) {
3399
+ return $TOKEN("From", state, From$0(state));
3400
+ } else {
3401
+ return From$0(state);
3402
+ }
3403
+ }
3404
+ var Function$0 = $TV($EXPECT($L107, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
3405
+ return { $loc, token: $1 };
3406
+ });
3407
+ function Function(state) {
3408
+ if (state.verbose)
3409
+ console.log("ENTER:", "Function");
3410
+ if (state.tokenize) {
3411
+ return $TOKEN("Function", state, Function$0(state));
3412
+ } else {
3413
+ return Function$0(state);
3414
+ }
3415
+ }
3416
+ var If$0 = $TV($EXPECT($L108, fail, 'If "if"'), function($skip, $loc, $0, $1) {
3417
+ return { $loc, token: $1 };
3418
+ });
3419
+ function If(state) {
3420
+ if (state.verbose)
3421
+ console.log("ENTER:", "If");
3422
+ if (state.tokenize) {
3423
+ return $TOKEN("If", state, If$0(state));
3424
+ } else {
3425
+ return If$0(state);
3426
+ }
3427
+ }
3428
+ var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R26, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
3429
+ return { $loc, token: $1 };
3430
+ });
3431
+ function Import(state) {
3432
+ if (state.verbose)
3433
+ console.log("ENTER:", "Import");
3434
+ if (state.tokenize) {
3435
+ return $TOKEN("Import", state, Import$0(state));
3436
+ } else {
3437
+ return Import$0(state);
3438
+ }
3439
+ }
3440
+ var In$0 = $TV($EXPECT($L66, fail, 'In "in"'), function($skip, $loc, $0, $1) {
3441
+ return { $loc, token: $1 };
3442
+ });
3443
+ function In(state) {
3444
+ if (state.verbose)
3445
+ console.log("ENTER:", "In");
3446
+ if (state.tokenize) {
3447
+ return $TOKEN("In", state, In$0(state));
3448
+ } else {
3449
+ return In$0(state);
3450
+ }
3451
+ }
3452
+ var Loop$0 = $TS($S($EXPECT($L109, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3453
+ return { $loc, token: "while(true)" };
3454
+ });
3455
+ function Loop(state) {
3456
+ if (state.verbose)
3457
+ console.log("ENTER:", "Loop");
3458
+ if (state.tokenize) {
3459
+ return $TOKEN("Loop", state, Loop$0(state));
3460
+ } else {
3461
+ return Loop$0(state);
3462
+ }
3463
+ }
3464
+ var New$0 = $TV($EXPECT($L110, fail, 'New "new"'), function($skip, $loc, $0, $1) {
3465
+ return { $loc, token: $1 };
3466
+ });
3467
+ function New(state) {
3468
+ if (state.verbose)
3469
+ console.log("ENTER:", "New");
3470
+ if (state.tokenize) {
3471
+ return $TOKEN("New", state, New$0(state));
3472
+ } else {
3473
+ return New$0(state);
3474
+ }
3475
+ }
3476
+ var Of$0 = $TV($EXPECT($L111, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
3477
+ return { $loc, token: $1 };
3478
+ });
3479
+ function Of(state) {
3480
+ if (state.verbose)
3481
+ console.log("ENTER:", "Of");
3482
+ if (state.tokenize) {
3483
+ return $TOKEN("Of", state, Of$0(state));
3484
+ } else {
3485
+ return Of$0(state);
3486
+ }
3487
+ }
3488
+ var OpenBrace$0 = $TV($EXPECT($L112, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
3489
+ return { $loc, token: $1 };
3490
+ });
3491
+ function OpenBrace(state) {
3492
+ if (state.verbose)
3493
+ console.log("ENTER:", "OpenBrace");
3494
+ if (state.tokenize) {
3495
+ return $TOKEN("OpenBrace", state, OpenBrace$0(state));
3496
+ } else {
3497
+ return OpenBrace$0(state);
3498
+ }
3499
+ }
3500
+ var OpenBracket$0 = $TV($EXPECT($L113, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
3501
+ return { $loc, token: $1 };
3502
+ });
3503
+ function OpenBracket(state) {
3504
+ if (state.verbose)
3505
+ console.log("ENTER:", "OpenBracket");
3506
+ if (state.tokenize) {
3507
+ return $TOKEN("OpenBracket", state, OpenBracket$0(state));
3508
+ } else {
3509
+ return OpenBracket$0(state);
3510
+ }
3511
+ }
3512
+ var OpenParen$0 = $TV($EXPECT($L114, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
3513
+ return { $loc, token: $1 };
3514
+ });
3515
+ function OpenParen(state) {
3516
+ if (state.verbose)
3517
+ console.log("ENTER:", "OpenParen");
3518
+ if (state.tokenize) {
3519
+ return $TOKEN("OpenParen", state, OpenParen$0(state));
3520
+ } else {
3521
+ return OpenParen$0(state);
3522
+ }
3523
+ }
3524
+ var QuestionMark$0 = $TV($EXPECT($L115, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
3525
+ return { $loc, token: $1 };
3526
+ });
3527
+ function QuestionMark(state) {
3528
+ if (state.verbose)
3529
+ console.log("ENTER:", "QuestionMark");
3530
+ if (state.tokenize) {
3531
+ return $TOKEN("QuestionMark", state, QuestionMark$0(state));
3532
+ } else {
3533
+ return QuestionMark$0(state);
3534
+ }
3535
+ }
3536
+ var Return$0 = $TS($S($EXPECT($L116, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3537
+ return { $loc, token: $1 };
3538
+ });
3539
+ function Return(state) {
3540
+ if (state.verbose)
3541
+ console.log("ENTER:", "Return");
3542
+ if (state.tokenize) {
3543
+ return $TOKEN("Return", state, Return$0(state));
3544
+ } else {
3545
+ return Return$0(state);
3546
+ }
3547
+ }
3548
+ var Semicolon$0 = $TV($EXPECT($L73, fail, 'Semicolon ";"'), function($skip, $loc, $0, $1) {
3549
+ return { $loc, token: $1 };
3550
+ });
3551
+ function Semicolon(state) {
3552
+ if (state.verbose)
3553
+ console.log("ENTER:", "Semicolon");
3554
+ if (state.tokenize) {
3555
+ return $TOKEN("Semicolon", state, Semicolon$0(state));
3556
+ } else {
3557
+ return Semicolon$0(state);
3558
+ }
3559
+ }
3560
+ var Static$0 = $TV($EXPECT($L117, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
3561
+ return { $loc, token: $1 };
3562
+ });
3563
+ function Static(state) {
3564
+ if (state.verbose)
3565
+ console.log("ENTER:", "Static");
3566
+ if (state.tokenize) {
3567
+ return $TOKEN("Static", state, Static$0(state));
3568
+ } else {
3569
+ return Static$0(state);
3570
+ }
3571
+ }
3572
+ var Switch$0 = $TV($EXPECT($L118, fail, 'Switch "switch"'), function($skip, $loc, $0, $1) {
3573
+ return { $loc, token: $1 };
3574
+ });
3575
+ function Switch(state) {
3576
+ if (state.verbose)
3577
+ console.log("ENTER:", "Switch");
3578
+ if (state.tokenize) {
3579
+ return $TOKEN("Switch", state, Switch$0(state));
3580
+ } else {
3581
+ return Switch$0(state);
3582
+ }
3583
+ }
3584
+ var Target$0 = $TV($EXPECT($L119, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
3585
+ return { $loc, token: $1 };
3586
+ });
3587
+ function Target(state) {
3588
+ if (state.verbose)
3589
+ console.log("ENTER:", "Target");
3590
+ if (state.tokenize) {
3591
+ return $TOKEN("Target", state, Target$0(state));
3592
+ } else {
3593
+ return Target$0(state);
3594
+ }
3595
+ }
3596
+ var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
3597
+ return { $loc, token: "`" };
3598
+ });
3599
+ function TripleDoubleQuote(state) {
3600
+ if (state.verbose)
3601
+ console.log("ENTER:", "TripleDoubleQuote");
3602
+ if (state.tokenize) {
3603
+ return $TOKEN("TripleDoubleQuote", state, TripleDoubleQuote$0(state));
3604
+ } else {
3605
+ return TripleDoubleQuote$0(state);
3606
+ }
3607
+ }
3608
+ var TripleSingleQuote$0 = $TV($EXPECT($L121, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
3609
+ return { $loc, token: "`" };
3610
+ });
3611
+ function TripleSingleQuote(state) {
3612
+ if (state.verbose)
3613
+ console.log("ENTER:", "TripleSingleQuote");
3614
+ if (state.tokenize) {
3615
+ return $TOKEN("TripleSingleQuote", state, TripleSingleQuote$0(state));
3616
+ } else {
3617
+ return TripleSingleQuote$0(state);
3618
+ }
3619
+ }
3620
+ var Try$0 = $TV($EXPECT($L122, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
3621
+ return { $loc, token: $1 };
3622
+ });
3623
+ function Try(state) {
3624
+ if (state.verbose)
3625
+ console.log("ENTER:", "Try");
3626
+ if (state.tokenize) {
3627
+ return $TOKEN("Try", state, Try$0(state));
3628
+ } else {
3629
+ return Try$0(state);
3630
+ }
3631
+ }
3632
+ var Unless$0 = $TV($EXPECT($L123, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
3633
+ return { $loc, token: $1 };
3634
+ });
3635
+ function Unless(state) {
3636
+ if (state.verbose)
3637
+ console.log("ENTER:", "Unless");
3638
+ if (state.tokenize) {
3639
+ return $TOKEN("Unless", state, Unless$0(state));
3640
+ } else {
3641
+ return Unless$0(state);
3642
+ }
3643
+ }
3644
+ var Var$0 = $TV($EXPECT($L124, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
3645
+ return { $loc, token: $1 };
3646
+ });
3647
+ function Var(state) {
3648
+ if (state.verbose)
3649
+ console.log("ENTER:", "Var");
3650
+ if (state.tokenize) {
3651
+ return $TOKEN("Var", state, Var$0(state));
3652
+ } else {
3653
+ return Var$0(state);
3654
+ }
3655
+ }
3656
+ var When$0 = $TS($S($EXPECT($L125, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3657
+ return { $loc, token: "case" };
3658
+ });
3659
+ function When(state) {
3660
+ if (state.verbose)
3661
+ console.log("ENTER:", "When");
3662
+ if (state.tokenize) {
3663
+ return $TOKEN("When", state, When$0(state));
3664
+ } else {
3665
+ return When$0(state);
3666
+ }
3667
+ }
3668
+ var JSXElement$0 = JSXSelfClosingElement;
3669
+ var JSXElement$1 = $TS($S(JSXOpeningElement, $Q(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
3670
+ if ($1[1] !== $4[2]) {
3671
+ throw new Error(`mismatched closing tags at ${JSON.stringify($loc)}`);
3672
+ }
3673
+ return $0;
3674
+ });
3675
+ function JSXElement(state) {
3676
+ if (state.tokenize) {
3677
+ return $TOKEN("JSXElement", state, JSXElement$0(state) || JSXElement$1(state));
3678
+ } else {
3679
+ return JSXElement$0(state) || JSXElement$1(state);
3680
+ }
3681
+ }
3682
+ var JSXSelfClosingElement$0 = $S($EXPECT($L5, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L126, fail, 'JSXSelfClosingElement "/>"'));
3683
+ function JSXSelfClosingElement(state) {
3684
+ if (state.verbose)
3685
+ console.log("ENTER:", "JSXSelfClosingElement");
3686
+ if (state.tokenize) {
3687
+ return $TOKEN("JSXSelfClosingElement", state, JSXSelfClosingElement$0(state));
3688
+ } else {
3689
+ return JSXSelfClosingElement$0(state);
3690
+ }
3691
+ }
3692
+ var JSXOpeningElement$0 = $S($EXPECT($L5, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L54, fail, 'JSXOpeningElement ">"'));
3693
+ function JSXOpeningElement(state) {
3694
+ if (state.verbose)
3695
+ console.log("ENTER:", "JSXOpeningElement");
3696
+ if (state.tokenize) {
3697
+ return $TOKEN("JSXOpeningElement", state, JSXOpeningElement$0(state));
3698
+ } else {
3699
+ return JSXOpeningElement$0(state);
3700
+ }
3701
+ }
3702
+ var JSXClosingElement$0 = $S($EXPECT($L127, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L54, fail, 'JSXClosingElement ">"'));
3703
+ function JSXClosingElement(state) {
3704
+ if (state.verbose)
3705
+ console.log("ENTER:", "JSXClosingElement");
3706
+ if (state.tokenize) {
3707
+ return $TOKEN("JSXClosingElement", state, JSXClosingElement$0(state));
3708
+ } else {
3709
+ return JSXClosingElement$0(state);
3710
+ }
3711
+ }
3712
+ var JSXFragment$0 = $S($EXPECT($L128, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L129, fail, 'JSXFragment "</>"'));
3713
+ function JSXFragment(state) {
3714
+ if (state.verbose)
3715
+ console.log("ENTER:", "JSXFragment");
3716
+ if (state.tokenize) {
3717
+ return $TOKEN("JSXFragment", state, JSXFragment$0(state));
3718
+ } else {
3719
+ return JSXFragment$0(state);
3720
+ }
3721
+ }
3722
+ var JSXElementName$0 = $S(JSXIdentifierName, $C($S(Colon, JSXIdentifierName), $Q($S(Dot, JSXIdentifierName))));
3723
+ function JSXElementName(state) {
3724
+ if (state.verbose)
3725
+ console.log("ENTER:", "JSXElementName");
3726
+ if (state.tokenize) {
3727
+ return $TOKEN("JSXElementName", state, JSXElementName$0(state));
3728
+ } else {
3729
+ return JSXElementName$0(state);
3730
+ }
3731
+ }
3732
+ var JSXIdentifierName$0 = $R$0($EXPECT($R27, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3733
+ function JSXIdentifierName(state) {
3734
+ if (state.verbose)
3735
+ console.log("ENTER:", "JSXIdentifierName");
3736
+ if (state.tokenize) {
3737
+ return $TOKEN("JSXIdentifierName", state, JSXIdentifierName$0(state));
3738
+ } else {
3739
+ return JSXIdentifierName$0(state);
3740
+ }
3741
+ }
3742
+ var JSXAttributes$0 = $Q($S(__, JSXAttribute));
3743
+ function JSXAttributes(state) {
3744
+ if (state.verbose)
3745
+ console.log("ENTER:", "JSXAttributes");
3746
+ if (state.tokenize) {
3747
+ return $TOKEN("JSXAttributes", state, JSXAttributes$0(state));
3748
+ } else {
3749
+ return JSXAttributes$0(state);
3750
+ }
3751
+ }
3752
+ var JSXAttribute$0 = $S(OpenBrace, __, $EXPECT($L18, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, CloseBrace);
3753
+ var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
3754
+ function JSXAttribute(state) {
3755
+ if (state.tokenize) {
3756
+ return $TOKEN("JSXAttribute", state, JSXAttribute$0(state) || JSXAttribute$1(state));
3757
+ } else {
3758
+ return JSXAttribute$0(state) || JSXAttribute$1(state);
3759
+ }
3760
+ }
3761
+ var JSXAttributeName$0 = $S(JSXIdentifierName, $E($S(Colon, JSXIdentifierName)));
3762
+ function JSXAttributeName(state) {
3763
+ if (state.verbose)
3764
+ console.log("ENTER:", "JSXAttributeName");
3765
+ if (state.tokenize) {
3766
+ return $TOKEN("JSXAttributeName", state, JSXAttributeName$0(state));
3767
+ } else {
3768
+ return JSXAttributeName$0(state);
3769
+ }
3770
+ }
3771
+ var JSXAttributeInitializer$0 = $S(__, Equals, __, JSXAttributeValue);
3772
+ function JSXAttributeInitializer(state) {
3773
+ if (state.verbose)
3774
+ console.log("ENTER:", "JSXAttributeInitializer");
3775
+ if (state.tokenize) {
3776
+ return $TOKEN("JSXAttributeInitializer", state, JSXAttributeInitializer$0(state));
3777
+ } else {
3778
+ return JSXAttributeInitializer$0(state);
3779
+ }
3780
+ }
3781
+ var JSXAttributeValue$0 = $R$0($EXPECT($R28, fail, 'JSXAttributeValue /"[^"]*"/'));
3782
+ var JSXAttributeValue$1 = $R$0($EXPECT($R29, fail, "JSXAttributeValue /'[^']*'/"));
3783
+ var JSXAttributeValue$2 = $S(OpenBrace, __, AssignmentExpression, __, CloseBrace);
3344
3784
  var JSXAttributeValue$3 = JSXElement;
3345
3785
  var JSXAttributeValue$4 = JSXFragment;
3346
3786
  function JSXAttributeValue(state) {
@@ -3363,7 +3803,7 @@ var Civet = (() => {
3363
3803
  var JSXChild$0 = JSXText;
3364
3804
  var JSXChild$1 = JSXElement;
3365
3805
  var JSXChild$2 = JSXFragment;
3366
- var JSXChild$3 = $S($EXPECT($L12, fail, 'JSXChild "{"'), $E(JSXChildExpression), __, $EXPECT($L13, fail, 'JSXChild "}"'));
3806
+ var JSXChild$3 = $S(OpenBrace, $E(JSXChildExpression), __, CloseBrace);
3367
3807
  function JSXChild(state) {
3368
3808
  if (state.tokenize) {
3369
3809
  return $TOKEN("JSXChild", state, JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state));
@@ -3381,7 +3821,7 @@ var Civet = (() => {
3381
3821
  return JSXText$0(state);
3382
3822
  }
3383
3823
  }
3384
- var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L34, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
3824
+ var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L18, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
3385
3825
  function JSXChildExpression(state) {
3386
3826
  if (state.verbose)
3387
3827
  console.log("ENTER:", "JSXChildExpression");
@@ -3404,7 +3844,7 @@ var Civet = (() => {
3404
3844
  }
3405
3845
  }
3406
3846
  var TypeDeclarationModifier$0 = $S($EXPECT($L130, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3407
- var TypeDeclarationModifier$1 = $S($EXPECT($L115, fail, 'TypeDeclarationModifier "export"'), NonIdContinue);
3847
+ var TypeDeclarationModifier$1 = Export;
3408
3848
  function TypeDeclarationModifier(state) {
3409
3849
  if (state.tokenize) {
3410
3850
  return $TOKEN("TypeDeclarationModifier", state, TypeDeclarationModifier$0(state) || TypeDeclarationModifier$1(state));
@@ -3412,7 +3852,7 @@ var Civet = (() => {
3412
3852
  return TypeDeclarationModifier$0(state) || TypeDeclarationModifier$1(state);
3413
3853
  }
3414
3854
  }
3415
- var TypeDeclarationRest$0 = $S(TypeKeyword, $Q(TrailingComment), IdentifierName, $E(TypeParameters), __, $EXPECT($L58, fail, 'TypeDeclarationRest "="'), __, Type);
3855
+ var TypeDeclarationRest$0 = $S(TypeKeyword, $Q(TrailingComment), IdentifierName, $E(TypeParameters), __, Equals, __, Type);
3416
3856
  var TypeDeclarationRest$1 = $S(Interface, $Q(TrailingComment), IdentifierName, InterfaceBlock);
3417
3857
  var TypeDeclarationRest$2 = $S(Namespace, $Q(TrailingComment), IdentifierName, NamespaceBlock);
3418
3858
  function TypeDeclarationRest(state) {
@@ -3452,8 +3892,8 @@ var Civet = (() => {
3452
3892
  return Namespace$0(state);
3453
3893
  }
3454
3894
  }
3455
- var InterfaceBlock$0 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), EOS, NestedInterfaceProperties, __, $EXPECT($L13, fail, 'InterfaceBlock "}"'));
3456
- var InterfaceBlock$1 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), $Q($S(__, InterfaceProperty)), __, $EXPECT($L13, fail, 'InterfaceBlock "}"'));
3895
+ var InterfaceBlock$0 = $S(__, OpenBrace, EOS, NestedInterfaceProperties, __, CloseBrace);
3896
+ var InterfaceBlock$1 = $S(__, OpenBrace, $Q($S(__, InterfaceProperty)), __, CloseBrace);
3457
3897
  var InterfaceBlock$2 = $S(InsertOpenBrace, EOS, NestedInterfaceProperties, InsertNewline, InsertIndent, InsertCloseBrace);
3458
3898
  function InterfaceBlock(state) {
3459
3899
  if (state.tokenize) {
@@ -3496,13 +3936,13 @@ var Civet = (() => {
3496
3936
  return InterfaceProperty$0(state) || InterfaceProperty$1(state);
3497
3937
  }
3498
3938
  }
3499
- var InterfacePropertyDelimiter$0 = $S($Q(_), $EXPECT($L90, fail, 'InterfacePropertyDelimiter ";"'));
3500
- var InterfacePropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L13, fail, 'InterfacePropertyDelimiter "}"')));
3501
- var InterfacePropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L13, fail, 'InterfacePropertyDelimiter "}"'))), function(value) {
3502
- return ";";
3939
+ var InterfacePropertyDelimiter$0 = $S($Q(_), Semicolon);
3940
+ var InterfacePropertyDelimiter$1 = $Y($S($Q(_), CloseBrace));
3941
+ var InterfacePropertyDelimiter$2 = $TV($Y($S(__, CloseBrace)), function($skip, $loc, $0, $1) {
3942
+ return { $loc, token: ";" };
3503
3943
  });
3504
- var InterfacePropertyDelimiter$3 = $T($Y(EOS), function(value) {
3505
- return ";";
3944
+ var InterfacePropertyDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
3945
+ return { $loc, token: ";" };
3506
3946
  });
3507
3947
  function InterfacePropertyDelimiter(state) {
3508
3948
  if (state.tokenize) {
@@ -3511,8 +3951,8 @@ var Civet = (() => {
3511
3951
  return InterfacePropertyDelimiter$0(state) || InterfacePropertyDelimiter$1(state) || InterfacePropertyDelimiter$2(state) || InterfacePropertyDelimiter$3(state);
3512
3952
  }
3513
3953
  }
3514
- var NamespaceBlock$0 = $S(__, $EXPECT($L12, fail, 'NamespaceBlock "{"'), EOS, NestedTypeDeclarations, __, $EXPECT($L13, fail, 'NamespaceBlock "}"'));
3515
- var NamespaceBlock$1 = $S(__, $EXPECT($L12, fail, 'NamespaceBlock "{"'), $Q($S(__, TypeDeclaration, InterfacePropertyDelimiter)), __, $EXPECT($L13, fail, 'NamespaceBlock "}"'));
3954
+ var NamespaceBlock$0 = $S(__, OpenBrace, EOS, NestedTypeDeclarations, __, CloseBrace);
3955
+ var NamespaceBlock$1 = $S(__, OpenBrace, $Q($S(__, TypeDeclaration, InterfacePropertyDelimiter)), __, CloseBrace);
3516
3956
  var NamespaceBlock$2 = $S(InsertOpenBrace, EOS, NestedTypeDeclarations, InsertNewline, InsertIndent, InsertCloseBrace);
3517
3957
  function NamespaceBlock(state) {
3518
3958
  if (state.tokenize) {
@@ -3546,7 +3986,7 @@ var Civet = (() => {
3546
3986
  return NestedTypeDeclaration$0(state);
3547
3987
  }
3548
3988
  }
3549
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L134, fail, 'TypeIndexSignature "readonly"'), __)), $EXPECT($L27, fail, 'TypeIndexSignature "["'), TypeIndex, $EXPECT($L28, fail, 'TypeIndexSignature "]"'), $E($S(__, $R$0($EXPECT($R32, fail, "TypeIndexSignature /[+-]/")), $EXPECT($L3, fail, 'TypeIndexSignature "?"'))));
3989
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L134, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R32, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
3550
3990
  function TypeIndexSignature(state) {
3551
3991
  if (state.verbose)
3552
3992
  console.log("ENTER:", "TypeIndexSignature");
@@ -3557,7 +3997,7 @@ var Civet = (() => {
3557
3997
  }
3558
3998
  }
3559
3999
  var TypeIndex$0 = $S(__, Identifier, TypeSuffix);
3560
- var TypeIndex$1 = $S(__, PropertyName, __, $EXPECT($L81, fail, 'TypeIndex "in"'), Type, $E($S(__, $EXPECT($L4, fail, 'TypeIndex "as"'), Type)));
4000
+ var TypeIndex$1 = $S(__, PropertyName, __, In, Type, $E($S(__, As, Type)));
3561
4001
  function TypeIndex(state) {
3562
4002
  if (state.tokenize) {
3563
4003
  return $TOKEN("TypeIndex", state, TypeIndex$0(state) || TypeIndex$1(state));
@@ -3565,7 +4005,7 @@ var Civet = (() => {
3565
4005
  return TypeIndex$0(state) || TypeIndex$1(state);
3566
4006
  }
3567
4007
  }
3568
- var TypeSuffix$0 = $T($S($E($EXPECT($L3, fail, 'TypeSuffix "?"')), __, $EXPECT($L14, fail, 'TypeSuffix ":"'), Type), function(value) {
4008
+ var TypeSuffix$0 = $T($S($E(QuestionMark), __, Colon, Type), function(value) {
3569
4009
  return { "ts": true, "children": value };
3570
4010
  });
3571
4011
  function TypeSuffix(state) {
@@ -3577,7 +4017,7 @@ var Civet = (() => {
3577
4017
  return TypeSuffix$0(state);
3578
4018
  }
3579
4019
  }
3580
- var ReturnTypeSuffix$0 = $T($S(__, $EXPECT($L14, fail, 'ReturnTypeSuffix ":"'), $E($S(__, $EXPECT($L135, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
4020
+ var ReturnTypeSuffix$0 = $T($S(__, Colon, $E($S(__, $EXPECT($L135, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
3581
4021
  return { "ts": true, "children": value };
3582
4022
  });
3583
4023
  function ReturnTypeSuffix(state) {
@@ -3589,7 +4029,7 @@ var Civet = (() => {
3589
4029
  return ReturnTypeSuffix$0(state);
3590
4030
  }
3591
4031
  }
3592
- var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L72, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
4032
+ var TypePredicate$0 = $S(Type, $E($S(__, $EXPECT($L57, fail, 'TypePredicate "is"'), NonIdContinue, Type)));
3593
4033
  function TypePredicate(state) {
3594
4034
  if (state.verbose)
3595
4035
  console.log("ENTER:", "TypePredicate");
@@ -3609,7 +4049,7 @@ var Civet = (() => {
3609
4049
  return Type$0(state);
3610
4050
  }
3611
4051
  }
3612
- var TypeBinary$0 = $S(TypeUnary, $Q($S(__, TypeBinaryOp, TypeUnary)));
4052
+ var TypeBinary$0 = $S(TypeUnary, $Q($S(__, TypeBinaryOp, __, TypeUnary)));
3613
4053
  function TypeBinary(state) {
3614
4054
  if (state.verbose)
3615
4055
  console.log("ENTER:", "TypeBinary");
@@ -3640,7 +4080,7 @@ var Civet = (() => {
3640
4080
  }
3641
4081
  }
3642
4082
  var TypeUnaryOp$0 = $EXPECT($L136, fail, 'TypeUnaryOp "keyof"');
3643
- var TypeUnaryOp$1 = $EXPECT($L87, fail, 'TypeUnaryOp "typeof"');
4083
+ var TypeUnaryOp$1 = $EXPECT($L72, fail, 'TypeUnaryOp "typeof"');
3644
4084
  var TypeUnaryOp$2 = $EXPECT($L137, fail, 'TypeUnaryOp "infer"');
3645
4085
  function TypeUnaryOp(state) {
3646
4086
  if (state.tokenize) {
@@ -3649,7 +4089,7 @@ var Civet = (() => {
3649
4089
  return TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state);
3650
4090
  }
3651
4091
  }
3652
- var TypeIndexedAccess$0 = $S(__, $EXPECT($L27, fail, 'TypeIndexedAccess "["'), $E(Type), __, $EXPECT($L28, fail, 'TypeIndexedAccess "]"'));
4092
+ var TypeIndexedAccess$0 = $S(__, OpenBracket, $E(Type), __, CloseBracket);
3653
4093
  function TypeIndexedAccess(state) {
3654
4094
  if (state.verbose)
3655
4095
  console.log("ENTER:", "TypeIndexedAccess");
@@ -3660,9 +4100,9 @@ var Civet = (() => {
3660
4100
  }
3661
4101
  }
3662
4102
  var TypePrimary$0 = InterfaceBlock;
3663
- var TypePrimary$1 = $S(__, $EXPECT($L1, fail, 'TypePrimary "("'), Type, __, $EXPECT($L2, fail, 'TypePrimary ")"'));
4103
+ var TypePrimary$1 = $S(__, OpenParen, Type, __, CloseParen);
3664
4104
  var TypePrimary$2 = $S($Q(_), FunctionType);
3665
- var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S($EXPECT($L25, fail, 'TypePrimary "."'), IdentifierName)), $E(TypeArguments));
4105
+ var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S(Dot, IdentifierName)), $E(TypeArguments));
3666
4106
  var TypePrimary$4 = $S($Q(_), TypeLiteral);
3667
4107
  function TypePrimary(state) {
3668
4108
  if (state.tokenize) {
@@ -3671,7 +4111,7 @@ var Civet = (() => {
3671
4111
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
3672
4112
  }
3673
4113
  }
3674
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L17, fail, 'TypeConditional "extends"'), Type, $E($S(__, $EXPECT($L3, fail, 'TypeConditional "?"'), Type, __, $EXPECT($L14, fail, 'TypeConditional ":"'), Type)))));
4114
+ var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L6, fail, 'TypeConditional "extends"'), Type, $E($S(__, QuestionMark, Type, __, Colon, Type)))));
3675
4115
  function TypeConditional(state) {
3676
4116
  if (state.verbose)
3677
4117
  console.log("ENTER:", "TypeConditional");
@@ -3682,7 +4122,7 @@ var Civet = (() => {
3682
4122
  }
3683
4123
  }
3684
4124
  var TypeLiteral$0 = Literal;
3685
- var TypeLiteral$1 = $EXPECT($L86, fail, 'TypeLiteral "void"');
4125
+ var TypeLiteral$1 = $EXPECT($L71, fail, 'TypeLiteral "void"');
3686
4126
  var TypeLiteral$2 = $EXPECT($L138, fail, 'TypeLiteral "[]"');
3687
4127
  function TypeLiteral(state) {
3688
4128
  if (state.tokenize) {
@@ -3691,8 +4131,8 @@ var Civet = (() => {
3691
4131
  return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
3692
4132
  }
3693
4133
  }
3694
- var TypeBinaryOp$0 = $EXPECT($L84, fail, 'TypeBinaryOp "|"');
3695
- var TypeBinaryOp$1 = $EXPECT($L82, fail, 'TypeBinaryOp "&"');
4134
+ var TypeBinaryOp$0 = $EXPECT($L69, fail, 'TypeBinaryOp "|"');
4135
+ var TypeBinaryOp$1 = $EXPECT($L67, fail, 'TypeBinaryOp "&"');
3696
4136
  function TypeBinaryOp(state) {
3697
4137
  if (state.tokenize) {
3698
4138
  return $TOKEN("TypeBinaryOp", state, TypeBinaryOp$0(state) || TypeBinaryOp$1(state));
@@ -3700,7 +4140,7 @@ var Civet = (() => {
3700
4140
  return TypeBinaryOp$0(state) || TypeBinaryOp$1(state);
3701
4141
  }
3702
4142
  }
3703
- var FunctionType$0 = $S(Parameters, __, $EXPECT($L11, fail, 'FunctionType "=>"'), Type);
4143
+ var FunctionType$0 = $S(Parameters, __, $EXPECT($L4, fail, 'FunctionType "=>"'), Type);
3704
4144
  function FunctionType(state) {
3705
4145
  if (state.verbose)
3706
4146
  console.log("ENTER:", "FunctionType");
@@ -3710,7 +4150,7 @@ var Civet = (() => {
3710
4150
  return FunctionType$0(state);
3711
4151
  }
3712
4152
  }
3713
- var TypeArguments$0 = $S(__, $EXPECT($L16, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeArguments ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeArguments ","'))), __, $EXPECT($L69, fail, 'TypeArguments ">"'));
4153
+ var TypeArguments$0 = $S(__, $EXPECT($L5, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeArguments ">"'));
3714
4154
  function TypeArguments(state) {
3715
4155
  if (state.verbose)
3716
4156
  console.log("ENTER:", "TypeArguments");
@@ -3720,7 +4160,7 @@ var Civet = (() => {
3720
4160
  return TypeArguments$0(state);
3721
4161
  }
3722
4162
  }
3723
- var TypeParameters$0 = $TS($S(__, $EXPECT($L16, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeParameters ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeParameters ","'))), __, $EXPECT($L69, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
4163
+ var TypeParameters$0 = $TS($S(__, $EXPECT($L5, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, Comma, __, Type)), $E($S(__, Comma)), __, $EXPECT($L54, fail, 'TypeParameters ">"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
3724
4164
  return { ts: true, children: $0 };
3725
4165
  });
3726
4166
  function TypeParameters(state) {
@@ -3742,7 +4182,7 @@ var Civet = (() => {
3742
4182
  return TypeParameter$0(state);
3743
4183
  }
3744
4184
  }
3745
- var TypeConstraint$0 = $S(__, $EXPECT($L17, fail, 'TypeConstraint "extends"'), Type);
4185
+ var TypeConstraint$0 = $S(__, $EXPECT($L6, fail, 'TypeConstraint "extends"'), Type);
3746
4186
  function TypeConstraint(state) {
3747
4187
  if (state.verbose)
3748
4188
  console.log("ENTER:", "TypeConstraint");
@@ -3752,13 +4192,13 @@ var Civet = (() => {
3752
4192
  return TypeConstraint$0(state);
3753
4193
  }
3754
4194
  }
3755
- var TypeParameterDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'TypeParameterDelimiter ","'));
3756
- var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L69, fail, 'TypeParameterDelimiter ">"')));
3757
- var TypeParameterDelimiter$2 = $T($Y($S(__, $EXPECT($L69, fail, 'TypeParameterDelimiter ">"'))), function(value) {
3758
- return ",";
4195
+ var TypeParameterDelimiter$0 = $S($Q(_), Comma);
4196
+ var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L54, fail, 'TypeParameterDelimiter ">"')));
4197
+ var TypeParameterDelimiter$2 = $TV($Y($S(__, $EXPECT($L54, fail, 'TypeParameterDelimiter ">"'))), function($skip, $loc, $0, $1) {
4198
+ return { $loc, token: "," };
3759
4199
  });
3760
- var TypeParameterDelimiter$3 = $T($Y(EOS), function(value) {
3761
- return ",";
4200
+ var TypeParameterDelimiter$3 = $TV($Y(EOS), function($skip, $loc, $0, $1) {
4201
+ return { $loc, token: "," };
3762
4202
  });
3763
4203
  function TypeParameterDelimiter(state) {
3764
4204
  if (state.tokenize) {
@@ -3817,7 +4257,7 @@ var Civet = (() => {
3817
4257
  return EOF$0(state);
3818
4258
  }
3819
4259
  }
3820
- var Debugger$0 = $TV($EXPECT($L33, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
4260
+ var Debugger$0 = $TV($EXPECT($L16, fail, 'Debugger ""'), function($skip, $loc, $0, $1) {
3821
4261
  debugger;
3822
4262
  });
3823
4263
  function Debugger(state) {
@@ -3829,8 +4269,8 @@ var Civet = (() => {
3829
4269
  return Debugger$0(state);
3830
4270
  }
3831
4271
  }
3832
- var InsertOpenParen$0 = $T($EXPECT($L33, fail, 'InsertOpenParen ""'), function(value) {
3833
- return "(";
4272
+ var InsertOpenParen$0 = $TV($EXPECT($L16, fail, 'InsertOpenParen ""'), function($skip, $loc, $0, $1) {
4273
+ return { $loc, token: "(" };
3834
4274
  });
3835
4275
  function InsertOpenParen(state) {
3836
4276
  if (state.verbose)
@@ -3841,8 +4281,8 @@ var Civet = (() => {
3841
4281
  return InsertOpenParen$0(state);
3842
4282
  }
3843
4283
  }
3844
- var InsertCloseParen$0 = $T($EXPECT($L33, fail, 'InsertCloseParen ""'), function(value) {
3845
- return ")";
4284
+ var InsertCloseParen$0 = $TV($EXPECT($L16, fail, 'InsertCloseParen ""'), function($skip, $loc, $0, $1) {
4285
+ return { $loc, token: ")" };
3846
4286
  });
3847
4287
  function InsertCloseParen(state) {
3848
4288
  if (state.verbose)
@@ -3853,8 +4293,8 @@ var Civet = (() => {
3853
4293
  return InsertCloseParen$0(state);
3854
4294
  }
3855
4295
  }
3856
- var InsertOpenBrace$0 = $T($EXPECT($L33, fail, 'InsertOpenBrace ""'), function(value) {
3857
- return " {";
4296
+ var InsertOpenBrace$0 = $TV($EXPECT($L16, fail, 'InsertOpenBrace ""'), function($skip, $loc, $0, $1) {
4297
+ return [{ $loc, token: " " }, { $loc, token: "{" }];
3858
4298
  });
3859
4299
  function InsertOpenBrace(state) {
3860
4300
  if (state.verbose)
@@ -3865,8 +4305,8 @@ var Civet = (() => {
3865
4305
  return InsertOpenBrace$0(state);
3866
4306
  }
3867
4307
  }
3868
- var InsertCloseBrace$0 = $T($EXPECT($L33, fail, 'InsertCloseBrace ""'), function(value) {
3869
- return "}";
4308
+ var InsertCloseBrace$0 = $TV($EXPECT($L16, fail, 'InsertCloseBrace ""'), function($skip, $loc, $0, $1) {
4309
+ return { $loc, token: "}" };
3870
4310
  });
3871
4311
  function InsertCloseBrace(state) {
3872
4312
  if (state.verbose)
@@ -3877,7 +4317,31 @@ var Civet = (() => {
3877
4317
  return InsertCloseBrace$0(state);
3878
4318
  }
3879
4319
  }
3880
- var InsertNewline$0 = $TV($EXPECT($L33, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
4320
+ var InsertConst$0 = $TV($EXPECT($L16, fail, 'InsertConst ""'), function($skip, $loc, $0, $1) {
4321
+ return { $loc, token: "const " };
4322
+ });
4323
+ function InsertConst(state) {
4324
+ if (state.verbose)
4325
+ console.log("ENTER:", "InsertConst");
4326
+ if (state.tokenize) {
4327
+ return $TOKEN("InsertConst", state, InsertConst$0(state));
4328
+ } else {
4329
+ return InsertConst$0(state);
4330
+ }
4331
+ }
4332
+ var InsertReadonly$0 = $TV($EXPECT($L16, fail, 'InsertReadonly ""'), function($skip, $loc, $0, $1) {
4333
+ return { ts: true, children: [{ $loc, token: "readonly " }] };
4334
+ });
4335
+ function InsertReadonly(state) {
4336
+ if (state.verbose)
4337
+ console.log("ENTER:", "InsertReadonly");
4338
+ if (state.tokenize) {
4339
+ return $TOKEN("InsertReadonly", state, InsertReadonly$0(state));
4340
+ } else {
4341
+ return InsertReadonly$0(state);
4342
+ }
4343
+ }
4344
+ var InsertNewline$0 = $TV($EXPECT($L16, fail, 'InsertNewline ""'), function($skip, $loc, $0, $1) {
3881
4345
  return "\n";
3882
4346
  });
3883
4347
  function InsertNewline(state) {
@@ -3889,7 +4353,7 @@ var Civet = (() => {
3889
4353
  return InsertNewline$0(state);
3890
4354
  }
3891
4355
  }
3892
- var InsertIndent$0 = $TV($EXPECT($L33, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
4356
+ var InsertIndent$0 = $TV($EXPECT($L16, fail, 'InsertIndent ""'), function($skip, $loc, $0, $1) {
3893
4357
  return "".padStart(global.currentIndent * 2);
3894
4358
  });
3895
4359
  function InsertIndent(state) {
@@ -3901,8 +4365,8 @@ var Civet = (() => {
3901
4365
  return InsertIndent$0(state);
3902
4366
  }
3903
4367
  }
3904
- var InsertSpace$0 = $T($EXPECT($L33, fail, 'InsertSpace ""'), function(value) {
3905
- return " ";
4368
+ var InsertSpace$0 = $TV($EXPECT($L16, fail, 'InsertSpace ""'), function($skip, $loc, $0, $1) {
4369
+ return { $loc, token: " " };
3906
4370
  });
3907
4371
  function InsertSpace(state) {
3908
4372
  if (state.verbose)
@@ -3913,8 +4377,8 @@ var Civet = (() => {
3913
4377
  return InsertSpace$0(state);
3914
4378
  }
3915
4379
  }
3916
- var InsertDot$0 = $T($EXPECT($L33, fail, 'InsertDot ""'), function(value) {
3917
- return ".";
4380
+ var InsertDot$0 = $TV($EXPECT($L16, fail, 'InsertDot ""'), function($skip, $loc, $0, $1) {
4381
+ return { $loc, token: "." };
3918
4382
  });
3919
4383
  function InsertDot(state) {
3920
4384
  if (state.verbose)
@@ -3925,8 +4389,8 @@ var Civet = (() => {
3925
4389
  return InsertDot$0(state);
3926
4390
  }
3927
4391
  }
3928
- var InsertBreak$0 = $T($EXPECT($L33, fail, 'InsertBreak ""'), function(value) {
3929
- return "break;";
4392
+ var InsertBreak$0 = $TV($EXPECT($L16, fail, 'InsertBreak ""'), function($skip, $loc, $0, $1) {
4393
+ return { $loc, token: "break;" };
3930
4394
  });
3931
4395
  function InsertBreak(state) {
3932
4396
  if (state.verbose)
@@ -3937,7 +4401,7 @@ var Civet = (() => {
3937
4401
  return InsertBreak$0(state);
3938
4402
  }
3939
4403
  }
3940
- var Init$0 = $TS($S($E(Shebang), DirectivePrologue, $EXPECT($L33, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
4404
+ var Init$0 = $TS($S($E(Shebang), DirectivePrologue, $EXPECT($L16, fail, 'Init ""')), function($skip, $loc, $0, $1, $2, $3) {
3941
4405
  var directives = $2;
3942
4406
  global.currentIndent = 0;
3943
4407
  global.indentLevels = [0];
@@ -3946,13 +4410,19 @@ var Civet = (() => {
3946
4410
  const compatRe = /use coffee-compat/;
3947
4411
  module.coffeeCompat = directives.some((d) => d[1].token?.match(compatRe));
3948
4412
  }
3949
- module.dedentBlockString = function(str) {
4413
+ module.dedentBlockString = function({ $loc: $loc2, token: str }) {
3950
4414
  const spacing = str.match(/^(\r?\n|\n)\s+/);
3951
4415
  if (spacing) {
3952
4416
  str = str.replaceAll(spacing[0], "\n");
4417
+ const l = spacing.length;
4418
+ $loc2.pos += l;
4419
+ $loc2.length -= l;
3953
4420
  }
3954
4421
  str = str.replace(/^(\r?\n|\n)/, "").replace(/(\r?\n|\n)[ \t]*$/, "").replace(/(`|\$)/g, "\\$1");
3955
- return str;
4422
+ return {
4423
+ $loc: $loc2,
4424
+ token: str
4425
+ };
3956
4426
  };
3957
4427
  return $0;
3958
4428
  });
@@ -3977,7 +4447,7 @@ var Civet = (() => {
3977
4447
  return Indent$0(state);
3978
4448
  }
3979
4449
  }
3980
- var PushIndent$0 = $TV($EXPECT($L33, fail, 'PushIndent ""'), function($skip, $loc, $0, $1) {
4450
+ var PushIndent$0 = $TV($EXPECT($L16, fail, 'PushIndent ""'), function($skip, $loc, $0, $1) {
3981
4451
  global.currentIndent++;
3982
4452
  if (global.verbose) {
3983
4453
  console.log("pushing indent", global.currentIndent);
@@ -3994,7 +4464,7 @@ var Civet = (() => {
3994
4464
  return PushIndent$0(state);
3995
4465
  }
3996
4466
  }
3997
- var PopIndent$0 = $TV($EXPECT($L33, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
4467
+ var PopIndent$0 = $TV($EXPECT($L16, fail, 'PopIndent ""'), function($skip, $loc, $0, $1) {
3998
4468
  if (global.verbose) {
3999
4469
  console.log("popping indent", global.indentLevels[global.indentLevels.length - 1], "->", global.indentLevels[global.indentLevels.length - 2]);
4000
4470
  }
@@ -4146,15 +4616,24 @@ var Civet = (() => {
4146
4616
  // source/util.coffee
4147
4617
  var require_util = __commonJS({
4148
4618
  "source/util.coffee"(exports, module) {
4619
+ "use strict";
4149
4620
  var BASE64_CHARS;
4150
4621
  var SourceMap;
4151
4622
  var VLQ_CONTINUATION_BIT;
4152
4623
  var VLQ_SHIFT;
4153
4624
  var VLQ_VALUE_MASK;
4625
+ var base64Encode;
4626
+ var decodeError;
4627
+ var decodeVLQ;
4154
4628
  var encodeBase64;
4155
4629
  var encodeVlq;
4156
4630
  var locationTable;
4157
4631
  var lookupLineColumn;
4632
+ var prettySourceExcerpt;
4633
+ var remapPosition;
4634
+ var smRegexp;
4635
+ var vlqChars;
4636
+ var vlqTable;
4158
4637
  locationTable = function(input) {
4159
4638
  var line, lines, linesRe, pos, result;
4160
4639
  linesRe = /([^\r\n]*)(\r\n|\r|\n|$)/y;
@@ -4191,6 +4670,9 @@ var Civet = (() => {
4191
4670
  EOL = /\r?\n|\r/;
4192
4671
  return {
4193
4672
  data: sm,
4673
+ source: function() {
4674
+ return sourceString;
4675
+ },
4194
4676
  renderMappings: function() {
4195
4677
  var lastSourceColumn, lastSourceLine;
4196
4678
  lastSourceLine = 0;
@@ -4222,20 +4704,23 @@ var Civet = (() => {
4222
4704
  };
4223
4705
  },
4224
4706
  updateSourceMap: function(outputStr, inputPos) {
4225
- var outLines;
4707
+ var outLines, srcCol, srcLine;
4226
4708
  outLines = outputStr.split(EOL);
4709
+ if (inputPos != null) {
4710
+ [srcLine, srcCol] = lookupLineColumn(srcTable, inputPos);
4711
+ }
4227
4712
  outLines.forEach(function(line, i) {
4228
- var l, srcCol, srcLine;
4713
+ var l;
4229
4714
  if (i > 0) {
4230
4715
  sm.lineNum++;
4231
4716
  sm.colOffset = 0;
4232
4717
  sm.lines[sm.lineNum] = [];
4718
+ srcCol = 0;
4233
4719
  }
4234
4720
  l = sm.colOffset;
4235
4721
  sm.colOffset = line.length;
4236
4722
  if (inputPos != null) {
4237
- [srcLine, srcCol] = lookupLineColumn(srcTable, inputPos);
4238
- return sm.lines[sm.lineNum].push([l, 0, srcLine, srcCol]);
4723
+ return sm.lines[sm.lineNum].push([l, 0, srcLine + i, srcCol]);
4239
4724
  } else if (l !== 0) {
4240
4725
  return sm.lines[sm.lineNum].push([l]);
4241
4726
  }
@@ -4243,6 +4728,95 @@ var Civet = (() => {
4243
4728
  }
4244
4729
  };
4245
4730
  };
4731
+ SourceMap.parseWithLines = function(base64encodedJSONstr) {
4732
+ var json, lines, sourceColumn, sourceLine;
4733
+ json = JSON.parse(Buffer.from(base64encodedJSONstr, "base64").toString("utf8"));
4734
+ sourceLine = 0;
4735
+ sourceColumn = 0;
4736
+ lines = json.mappings.split(";").map(function(line) {
4737
+ if (line.length === 0) {
4738
+ return [];
4739
+ }
4740
+ return line.split(",").map(function(entry) {
4741
+ var result;
4742
+ result = decodeVLQ(entry);
4743
+ switch (result.length) {
4744
+ case 1:
4745
+ return [result[0]];
4746
+ case 4:
4747
+ return [result[0], result[1], sourceLine += result[2], sourceColumn += result[3]];
4748
+ case 5:
4749
+ return [result[0], result[1], sourceLine += result[2], sourceColumn += result[3], result[4]];
4750
+ default:
4751
+ throw new Error("Unknown source map entry", result);
4752
+ }
4753
+ });
4754
+ });
4755
+ json.lines = lines;
4756
+ return json;
4757
+ };
4758
+ smRegexp = /\n\/\/# sourceMappingURL=data:application\/json;charset=utf-8;base64,([+a-zA-Z0-9\/]*=?=?)$/;
4759
+ SourceMap.remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
4760
+ var codeWithoutSourceMap, composedLines, newSourceMap, parsed, remappedCodeWithSourceMap, remappedSourceMapJSON, sourceMapText;
4761
+ sourceMapText = codeWithSourceMap.match(smRegexp);
4762
+ if (sourceMapText) {
4763
+ parsed = SourceMap.parseWithLines(sourceMapText[1]);
4764
+ } else {
4765
+ console.warn("No source map found in code");
4766
+ return codeWithSourceMap;
4767
+ }
4768
+ debugger;
4769
+ composedLines = SourceMap.composeLines(upstreamMap.data.lines, parsed.lines);
4770
+ upstreamMap.data.lines = composedLines;
4771
+ remappedSourceMapJSON = upstreamMap.json(sourcePath, targetPath);
4772
+ codeWithoutSourceMap = codeWithSourceMap.replace(smRegexp, "");
4773
+ newSourceMap = `${"sourceMapping"}URL=data:application/json;charset=utf-8;base64,${base64Encode(JSON.stringify(remappedSourceMapJSON))}`;
4774
+ remappedCodeWithSourceMap = `${codeWithoutSourceMap}
4775
+ //# ${newSourceMap}`;
4776
+ return remappedCodeWithSourceMap;
4777
+ };
4778
+ SourceMap.composeLines = function(upstreamMapping, lines) {
4779
+ return lines.map(function(line, l) {
4780
+ return line.map(function(entry) {
4781
+ var colDelta, sourceFileIndex, srcCol, srcLine, srcPos, upstreamCol, upstreamLine;
4782
+ if (entry.length === 1) {
4783
+ return entry;
4784
+ }
4785
+ [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
4786
+ srcPos = remapPosition([srcLine, srcCol], upstreamMapping);
4787
+ if (!srcPos) {
4788
+ return [entry[0]];
4789
+ }
4790
+ [upstreamLine, upstreamCol] = srcPos;
4791
+ if (entry.length === 4) {
4792
+ return [colDelta, sourceFileIndex, upstreamLine, upstreamCol];
4793
+ }
4794
+ return [colDelta, sourceFileIndex, upstreamLine, upstreamCol, entry[4]];
4795
+ });
4796
+ });
4797
+ };
4798
+ prettySourceExcerpt = function(source, location, length) {
4799
+ var colNum, i, j, line, lineNum, lineNumStr, lines, ref, ref1;
4800
+ lines = source.split(/\r?\n|\r/);
4801
+ lineNum = location.line;
4802
+ colNum = location.column;
4803
+ for (i = j = ref = lineNum - 2, ref1 = lineNum + 2; ref <= ref1 ? j <= ref1 : j >= ref1; i = ref <= ref1 ? ++j : --j) {
4804
+ if (i < 0 || i >= lines.length) {
4805
+ continue;
4806
+ }
4807
+ line = lines[i];
4808
+ lineNumStr = (i + 1).toString();
4809
+ while (lineNumStr.length < 4) {
4810
+ lineNumStr = " " + lineNumStr;
4811
+ }
4812
+ if (i === lineNum) {
4813
+ console.log(`${lineNumStr}: ${line}`);
4814
+ console.log(" ".repeat(lineNumStr.length + 2 + colNum) + "^".repeat(length));
4815
+ } else {
4816
+ console.log(`${lineNumStr}: ${line}`);
4817
+ }
4818
+ }
4819
+ };
4246
4820
  VLQ_SHIFT = 5;
4247
4821
  VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
4248
4822
  VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
@@ -4267,7 +4841,101 @@ var Civet = (() => {
4267
4841
  throw new Error(`Cannot Base64 encode value: ${value}`);
4268
4842
  }();
4269
4843
  };
4270
- module.exports = { locationTable, lookupLineColumn, SourceMap };
4844
+ base64Encode = function(src) {
4845
+ return Buffer.from(src).toString("base64");
4846
+ };
4847
+ module.exports = { base64Encode, locationTable, lookupLineColumn, SourceMap };
4848
+ vlqTable = new Uint8Array(128);
4849
+ vlqChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4850
+ (function() {
4851
+ var i, l, results;
4852
+ i = 0;
4853
+ l = vlqTable.length;
4854
+ while (i < l) {
4855
+ vlqTable[i] = 255;
4856
+ i++;
4857
+ }
4858
+ i = 0;
4859
+ l = vlqChars.length;
4860
+ results = [];
4861
+ while (i < l) {
4862
+ vlqTable[vlqChars.charCodeAt(i)] = i;
4863
+ results.push(i++);
4864
+ }
4865
+ return results;
4866
+ })();
4867
+ decodeError = function(message) {
4868
+ throw new Error(message);
4869
+ };
4870
+ decodeVLQ = function(mapping) {
4871
+ var c, i, index, l, result, shift, v, vlq;
4872
+ i = 0;
4873
+ l = mapping.length;
4874
+ result = [];
4875
+ while (i < l) {
4876
+ shift = 0;
4877
+ vlq = 0;
4878
+ while (true) {
4879
+ if (i >= l) {
4880
+ decodeError("Unexpected early end of mapping data");
4881
+ }
4882
+ c = mapping.charCodeAt(i);
4883
+ if ((c & 127) !== c) {
4884
+ decodeError(`Invalid mapping character: ${JSON.stringify(String.fromCharCode(c))}`);
4885
+ }
4886
+ index = vlqTable[c & 127];
4887
+ if (index === 255) {
4888
+ decodeError(`Invalid mapping character: ${JSON.stringify(String.fromCharCode(c))}`);
4889
+ }
4890
+ i++;
4891
+ vlq |= (index & 31) << shift;
4892
+ shift += 5;
4893
+ if ((index & 32) === 0) {
4894
+ break;
4895
+ }
4896
+ }
4897
+ if (vlq & 1) {
4898
+ v = -(vlq >> 1);
4899
+ } else {
4900
+ v = vlq >> 1;
4901
+ }
4902
+ result.push(v);
4903
+ }
4904
+ return result;
4905
+ };
4906
+ remapPosition = function(position, sourcemapLines) {
4907
+ var character, i, l, lastMapping, lastMappingPosition, line, mapping, p, textLine;
4908
+ [line, character] = position;
4909
+ textLine = sourcemapLines[line];
4910
+ if (!(textLine != null ? textLine.length : void 0)) {
4911
+ return void 0;
4912
+ }
4913
+ i = 0;
4914
+ p = 0;
4915
+ l = textLine.length;
4916
+ lastMapping = void 0;
4917
+ lastMappingPosition = 0;
4918
+ while (i < l) {
4919
+ mapping = textLine[i];
4920
+ p += mapping[0];
4921
+ if (mapping.length === 4) {
4922
+ lastMapping = mapping;
4923
+ lastMappingPosition = p;
4924
+ }
4925
+ if (p >= character) {
4926
+ break;
4927
+ }
4928
+ i++;
4929
+ }
4930
+ if (character - lastMappingPosition !== 0) {
4931
+ return void 0;
4932
+ }
4933
+ if (lastMapping) {
4934
+ return [lastMapping[2], lastMapping[3]];
4935
+ } else {
4936
+ return void 0;
4937
+ }
4938
+ };
4271
4939
  }
4272
4940
  });
4273
4941
 
@@ -4275,6 +4943,7 @@ var Civet = (() => {
4275
4943
  var require_main = __commonJS({
4276
4944
  "source/main.coffee"(exports, module) {
4277
4945
  var SourceMap;
4946
+ var base64Encode;
4278
4947
  var defaultOptions;
4279
4948
  var gen;
4280
4949
  var parse;
@@ -4282,23 +4951,34 @@ var Civet = (() => {
4282
4951
  var util;
4283
4952
  ({ parse } = require_parser());
4284
4953
  ({ prune } = gen = require_generate());
4285
- ({ SourceMap } = util = require_util());
4954
+ ({ SourceMap, base64Encode } = util = require_util());
4286
4955
  defaultOptions = {};
4287
4956
  module.exports = {
4288
4957
  parse,
4289
4958
  compile: function(src, options = defaultOptions) {
4290
- var ast, code, sm;
4959
+ var ast, code, filename, sm, srcMapJSON;
4960
+ filename = options.filename || "unknown";
4291
4961
  ast = prune(parse(src, {
4292
- filename: options.filename
4962
+ filename
4293
4963
  }));
4294
- if (options.sourceMap) {
4964
+ if (options.ast) {
4965
+ return ast;
4966
+ }
4967
+ if (options.sourceMap || options.inlineMap) {
4295
4968
  sm = SourceMap(src);
4296
4969
  options.updateSourceMap = sm.updateSourceMap;
4297
4970
  code = gen(ast, options);
4298
- return {
4299
- code,
4300
- sourceMap: sm
4301
- };
4971
+ if (options.inlineMap) {
4972
+ srcMapJSON = sm.json(filename, "");
4973
+ return `${code}
4974
+ ${"//#"} sourceMappingURL=data:application/json;base64,${base64Encode(JSON.stringify(srcMapJSON))}
4975
+ `;
4976
+ } else {
4977
+ return {
4978
+ code,
4979
+ sourceMap: sm
4980
+ };
4981
+ }
4302
4982
  }
4303
4983
  return gen(ast, options);
4304
4984
  },