@danielx/civet 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -410,6 +410,8 @@ var Civet = (() => {
410
410
  Expression,
411
411
  Arguments,
412
412
  ArgumentList,
413
+ NestedArgumentList,
414
+ NestedArgument,
413
415
  CommaExpression,
414
416
  BinaryOpExpression,
415
417
  UnaryExpression,
@@ -580,14 +582,41 @@ var Civet = (() => {
580
582
  _,
581
583
  __,
582
584
  StatementDelimiter,
585
+ JSXElement,
586
+ JSXSelfClosingElement,
587
+ JSXOpeningElement,
588
+ JSXClosingElement,
589
+ JSXFragment,
590
+ JSXElementName,
591
+ JSXIdentifierName,
592
+ JSXAttributes,
593
+ JSXAttribute,
594
+ JSXAttributeName,
595
+ JSXAttributeInitializer,
596
+ JSXAttributeValue,
597
+ JSXChildren,
598
+ JSXChild,
599
+ JSXText,
600
+ JSXChildExpression,
583
601
  TypeDeclaration,
584
602
  InterfaceBlock,
585
603
  NestedInterfaceProperties,
586
604
  NestedInterfaceProperty,
587
605
  TypeSuffix,
588
606
  Type,
607
+ TypeBinary,
608
+ TypeUnary,
609
+ TypeUnaryOp,
610
+ TypePrimary,
611
+ TypeConditional,
612
+ TypeLiteral,
613
+ TypeBinaryOp,
589
614
  FunctionType,
590
615
  TypeArguments,
616
+ TypeParameters,
617
+ TypeParameter,
618
+ TypeConstraint,
619
+ TypeParameterDelimiter,
591
620
  Shebang,
592
621
  DirectivePrologue,
593
622
  EOS,
@@ -721,19 +750,24 @@ var Civet = (() => {
721
750
  var $L110 = $L("as");
722
751
  var $L111 = $L("from");
723
752
  var $L112 = $L("export");
724
- var $L113 = $L('"""');
725
- var $L114 = $L('"');
726
- var $L115 = $L("'");
727
- var $L116 = $L("\\");
728
- var $L117 = $L("`");
729
- var $L118 = $L("${");
730
- var $L119 = $L("/*");
731
- var $L120 = $L("*/");
732
- var $L121 = $L("###");
733
- var $L122 = $L("interface");
734
- var $L123 = $L("[]");
735
- var $L124 = $L(" ");
736
- var $L125 = $L(" ");
753
+ var $L113 = $L(":=");
754
+ var $L114 = $L('"""');
755
+ var $L115 = $L('"');
756
+ var $L116 = $L("'");
757
+ var $L117 = $L("\\");
758
+ var $L118 = $L("`");
759
+ var $L119 = $L("${");
760
+ var $L120 = $L("/*");
761
+ var $L121 = $L("*/");
762
+ var $L122 = $L("###");
763
+ var $L123 = $L("/>");
764
+ var $L124 = $L("</");
765
+ var $L125 = $L("<>");
766
+ var $L126 = $L("</>");
767
+ var $L127 = $L("infer");
768
+ var $L128 = $L("[]");
769
+ var $L129 = $L(" ");
770
+ var $L130 = $L(" ");
737
771
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
738
772
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
739
773
  var $R2 = $R(new RegExp("\\p{ID_Continue}", "suy"));
@@ -757,10 +791,17 @@ var Civet = (() => {
757
791
  var $R20 = $R(new RegExp("[^\\r\\n]", "suy"));
758
792
  var $R21 = $R(new RegExp("[\\t ]+", "suy"));
759
793
  var $R22 = $R(new RegExp("[\\s]+", "suy"));
760
- var $R23 = $R(new RegExp("#![^\\r\\n]*", "suy"));
761
- var $R24 = $R(new RegExp("[\\t ]*", "suy"));
762
- var $R25 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
763
- var $R26 = $R(new RegExp("$", "suy"));
794
+ var $R23 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
795
+ var $R24 = $R(new RegExp('"[^"]*"', "suy"));
796
+ var $R25 = $R(new RegExp("'[^']*'", "suy"));
797
+ var $R26 = $R(new RegExp("[^{}<>]+", "suy"));
798
+ var $R27 = $R(new RegExp("type(?!\\p{ID_Continue})", "suy"));
799
+ var $R28 = $R(new RegExp("interface(?!\\p{ID_Continue})", "suy"));
800
+ var $R29 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
801
+ var $R30 = $R(new RegExp("#![^\\r\\n]*", "suy"));
802
+ var $R31 = $R(new RegExp("[\\t ]*", "suy"));
803
+ var $R32 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
804
+ var $R33 = $R(new RegExp("$", "suy"));
764
805
  var Program$0 = $S(Init, __, $Q(TopLevelStatement), __);
765
806
  function Program(state) {
766
807
  if (state.verbose)
@@ -791,7 +832,7 @@ var Civet = (() => {
791
832
  return Expression$0(state);
792
833
  }
793
834
  }
794
- var Arguments$0 = $S($EXPECT($L1, fail, 'Arguments "("'), $C(ArgumentList, __), $E($S($EXPECT($L0, fail, 'Arguments ","'), __)), $EXPECT($L2, fail, 'Arguments ")"'));
835
+ var Arguments$0 = $S($EXPECT($L1, fail, 'Arguments "("'), $E(ArgumentList), $E($S(__, $EXPECT($L0, fail, 'Arguments ","'))), __, $EXPECT($L2, fail, 'Arguments ")"'));
795
836
  function Arguments(state) {
796
837
  if (state.verbose)
797
838
  console.log("ENTER:", "Arguments");
@@ -801,14 +842,38 @@ var Civet = (() => {
801
842
  return Arguments$0(state);
802
843
  }
803
844
  }
804
- var ArgumentList$0 = $S(Expression, $Q(CommaExpression));
845
+ var ArgumentList$0 = $S($Y(EOS), NestedArgumentList);
846
+ var ArgumentList$1 = $S(__, Expression, $Q(CommaExpression));
805
847
  function ArgumentList(state) {
848
+ if (state.tokenize) {
849
+ return $TOKEN("ArgumentList", state, ArgumentList$0(state) || ArgumentList$1(state));
850
+ } else {
851
+ return ArgumentList$0(state) || ArgumentList$1(state);
852
+ }
853
+ }
854
+ var NestedArgumentList$0 = $TS($S(PushIndent, $Q(NestedArgument), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
855
+ var args = $2;
856
+ if (args.length)
857
+ return args;
858
+ return $skip;
859
+ });
860
+ function NestedArgumentList(state) {
806
861
  if (state.verbose)
807
- console.log("ENTER:", "ArgumentList");
862
+ console.log("ENTER:", "NestedArgumentList");
808
863
  if (state.tokenize) {
809
- return $TOKEN("ArgumentList", state, ArgumentList$0(state));
864
+ return $TOKEN("NestedArgumentList", state, NestedArgumentList$0(state));
810
865
  } else {
811
- return ArgumentList$0(state);
866
+ return NestedArgumentList$0(state);
867
+ }
868
+ }
869
+ var NestedArgument$0 = $S(Nested, Expression, ParameterElementDelimiter);
870
+ function NestedArgument(state) {
871
+ if (state.verbose)
872
+ console.log("ENTER:", "NestedArgument");
873
+ if (state.tokenize) {
874
+ return $TOKEN("NestedArgument", state, NestedArgument$0(state));
875
+ } else {
876
+ return NestedArgument$0(state);
812
877
  }
813
878
  }
814
879
  var CommaExpression$0 = $S(__, $EXPECT($L0, fail, 'CommaExpression ","'), __, Expression);
@@ -947,11 +1012,13 @@ var Civet = (() => {
947
1012
  var PrimaryExpression$7 = RegularExpressionLiteral;
948
1013
  var PrimaryExpression$8 = TemplateLiteral;
949
1014
  var PrimaryExpression$9 = $S($EXPECT($L1, fail, 'PrimaryExpression "("'), __, Expression, __, $EXPECT($L2, fail, 'PrimaryExpression ")"'));
1015
+ var PrimaryExpression$10 = JSXElement;
1016
+ var PrimaryExpression$11 = JSXFragment;
950
1017
  function PrimaryExpression(state) {
951
1018
  if (state.tokenize) {
952
- return $TOKEN("PrimaryExpression", state, PrimaryExpression$0(state) || PrimaryExpression$1(state) || PrimaryExpression$2(state) || PrimaryExpression$3(state) || PrimaryExpression$4(state) || PrimaryExpression$5(state) || PrimaryExpression$6(state) || PrimaryExpression$7(state) || PrimaryExpression$8(state) || PrimaryExpression$9(state));
1019
+ return $TOKEN("PrimaryExpression", state, PrimaryExpression$0(state) || PrimaryExpression$1(state) || PrimaryExpression$2(state) || PrimaryExpression$3(state) || PrimaryExpression$4(state) || PrimaryExpression$5(state) || PrimaryExpression$6(state) || PrimaryExpression$7(state) || PrimaryExpression$8(state) || PrimaryExpression$9(state) || PrimaryExpression$10(state) || PrimaryExpression$11(state));
953
1020
  } else {
954
- return PrimaryExpression$0(state) || PrimaryExpression$1(state) || PrimaryExpression$2(state) || PrimaryExpression$3(state) || PrimaryExpression$4(state) || PrimaryExpression$5(state) || PrimaryExpression$6(state) || PrimaryExpression$7(state) || PrimaryExpression$8(state) || PrimaryExpression$9(state);
1021
+ return PrimaryExpression$0(state) || PrimaryExpression$1(state) || PrimaryExpression$2(state) || PrimaryExpression$3(state) || PrimaryExpression$4(state) || PrimaryExpression$5(state) || PrimaryExpression$6(state) || PrimaryExpression$7(state) || PrimaryExpression$8(state) || PrimaryExpression$9(state) || PrimaryExpression$10(state) || PrimaryExpression$11(state);
955
1022
  }
956
1023
  }
957
1024
  var ClassDeclaration$0 = ClassExpression;
@@ -2138,9 +2205,9 @@ var Civet = (() => {
2138
2205
  var KeywordStatement$0 = $EXPECT($L104, fail, 'KeywordStatement "break"');
2139
2206
  var KeywordStatement$1 = $EXPECT($L105, fail, 'KeywordStatement "continue"');
2140
2207
  var KeywordStatement$2 = $EXPECT($L106, fail, 'KeywordStatement "debugger"');
2141
- var KeywordStatement$3 = $S($EXPECT($L107, fail, 'KeywordStatement "return"'), $P(_), Expression);
2208
+ var KeywordStatement$3 = $S($EXPECT($L107, fail, 'KeywordStatement "return"'), Expression);
2142
2209
  var KeywordStatement$4 = $EXPECT($L107, fail, 'KeywordStatement "return"');
2143
- var KeywordStatement$5 = $S($EXPECT($L108, fail, 'KeywordStatement "throw"'), $P(_), Expression);
2210
+ var KeywordStatement$5 = $S($EXPECT($L108, fail, 'KeywordStatement "throw"'), Expression);
2144
2211
  function KeywordStatement(state) {
2145
2212
  if (state.tokenize) {
2146
2213
  return $TOKEN("KeywordStatement", state, KeywordStatement$0(state) || KeywordStatement$1(state) || KeywordStatement$2(state) || KeywordStatement$3(state) || KeywordStatement$4(state) || KeywordStatement$5(state));
@@ -2300,13 +2367,18 @@ var Civet = (() => {
2300
2367
  }
2301
2368
  }
2302
2369
  var LexicalDeclaration$0 = $S($C($EXPECT($L95, fail, 'LexicalDeclaration "let"'), $EXPECT($L96, fail, 'LexicalDeclaration "const"')), __, LexicalBinding, $Q($S(__, $EXPECT($L0, fail, 'LexicalDeclaration ","'), __, LexicalBinding)));
2370
+ var LexicalDeclaration$1 = $T($S($C(BindingPattern, BindingIdentifier), $E(TypeSuffix), __, $EXPECT($L113, fail, 'LexicalDeclaration ":="'), AssignmentExpression), function(value) {
2371
+ var bind = value[0];
2372
+ var suffix = value[1];
2373
+ var ws = value[2];
2374
+ var exp = value[4];
2375
+ return ["const ", bind, suffix, ws, "=", exp];
2376
+ });
2303
2377
  function LexicalDeclaration(state) {
2304
- if (state.verbose)
2305
- console.log("ENTER:", "LexicalDeclaration");
2306
2378
  if (state.tokenize) {
2307
- return $TOKEN("LexicalDeclaration", state, LexicalDeclaration$0(state));
2379
+ return $TOKEN("LexicalDeclaration", state, LexicalDeclaration$0(state) || LexicalDeclaration$1(state));
2308
2380
  } else {
2309
- return LexicalDeclaration$0(state);
2381
+ return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
2310
2382
  }
2311
2383
  }
2312
2384
  var LexicalBinding$0 = $S(BindingPattern, $E(TypeSuffix), Initializer);
@@ -2419,11 +2491,11 @@ var Civet = (() => {
2419
2491
  return HexLiteral$0(state);
2420
2492
  }
2421
2493
  }
2422
- var StringLiteral$0 = $T($S($EXPECT($L113, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""'), $TEXT($Q(TripleDoubleStringCharacter)), $EXPECT($L113, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""')), function(value) {
2494
+ var StringLiteral$0 = $T($S($EXPECT($L114, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""'), $TEXT($Q(TripleDoubleStringCharacter)), $EXPECT($L114, fail, 'StringLiteral "\\\\\\"\\\\\\"\\\\\\""')), function(value) {
2423
2495
  return ["`", value[1], "`"];
2424
2496
  });
2425
- var StringLiteral$1 = $S($EXPECT($L114, fail, 'StringLiteral "\\\\\\""'), $TEXT($Q(DoubleStringCharacter)), $EXPECT($L114, fail, 'StringLiteral "\\\\\\""'));
2426
- var StringLiteral$2 = $S($EXPECT($L115, fail, `StringLiteral "\\\\'"`), $TEXT($Q(SingleStringCharacter)), $EXPECT($L115, fail, `StringLiteral "\\\\'"`));
2497
+ var StringLiteral$1 = $S($EXPECT($L115, fail, 'StringLiteral "\\\\\\""'), $TEXT($Q(DoubleStringCharacter)), $EXPECT($L115, fail, 'StringLiteral "\\\\\\""'));
2498
+ var StringLiteral$2 = $S($EXPECT($L116, fail, `StringLiteral "\\\\'"`), $TEXT($Q(SingleStringCharacter)), $EXPECT($L116, fail, `StringLiteral "\\\\'"`));
2427
2499
  function StringLiteral(state) {
2428
2500
  if (state.tokenize) {
2429
2501
  return $TOKEN("StringLiteral", state, StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state));
@@ -2459,7 +2531,7 @@ var Civet = (() => {
2459
2531
  return TripleDoubleStringCharacter$0(state);
2460
2532
  }
2461
2533
  }
2462
- var EscapeSequence$0 = $TEXT($S($EXPECT($L116, fail, 'EscapeSequence "\\\\\\\\"'), $EXPECT($R12, fail, "EscapeSequence /./")));
2534
+ var EscapeSequence$0 = $TEXT($S($EXPECT($L117, fail, 'EscapeSequence "\\\\\\\\"'), $EXPECT($R12, fail, "EscapeSequence /./")));
2463
2535
  function EscapeSequence(state) {
2464
2536
  if (state.verbose)
2465
2537
  console.log("ENTER:", "EscapeSequence");
@@ -2508,7 +2580,7 @@ var Civet = (() => {
2508
2580
  return RegularExpressionFlags$0(state);
2509
2581
  }
2510
2582
  }
2511
- var TemplateLiteral$0 = $S($EXPECT($L117, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L117, fail, 'TemplateLiteral "`"'));
2583
+ var TemplateLiteral$0 = $S($EXPECT($L118, fail, 'TemplateLiteral "`"'), $Q($C(TemplateCharacters, TemplateSubstitution)), $EXPECT($L118, fail, 'TemplateLiteral "`"'));
2512
2584
  function TemplateLiteral(state) {
2513
2585
  if (state.verbose)
2514
2586
  console.log("ENTER:", "TemplateLiteral");
@@ -2518,7 +2590,7 @@ var Civet = (() => {
2518
2590
  return TemplateLiteral$0(state);
2519
2591
  }
2520
2592
  }
2521
- var TemplateSubstitution$0 = $S($EXPECT($L118, fail, 'TemplateSubstitution "${"'), __, Expression, __, $EXPECT($L15, fail, 'TemplateSubstitution "}"'));
2593
+ var TemplateSubstitution$0 = $S($EXPECT($L119, fail, 'TemplateSubstitution "${"'), __, Expression, __, $EXPECT($L15, fail, 'TemplateSubstitution "}"'));
2522
2594
  function TemplateSubstitution(state) {
2523
2595
  if (state.verbose)
2524
2596
  console.log("ENTER:", "TemplateSubstitution");
@@ -2575,7 +2647,7 @@ var Civet = (() => {
2575
2647
  return MultiLineComment$0(state) || MultiLineComment$1(state);
2576
2648
  }
2577
2649
  }
2578
- var JSMultiLineComment$0 = $S($EXPECT($L119, fail, 'JSMultiLineComment "/*"'), $TEXT($Q($S($N($EXPECT($L120, fail, 'JSMultiLineComment "*/"')), $EXPECT($R12, fail, "JSMultiLineComment /./")))), $EXPECT($L120, fail, 'JSMultiLineComment "*/"'));
2650
+ var JSMultiLineComment$0 = $S($EXPECT($L120, fail, 'JSMultiLineComment "/*"'), $TEXT($Q($S($N($EXPECT($L121, fail, 'JSMultiLineComment "*/"')), $EXPECT($R12, fail, "JSMultiLineComment /./")))), $EXPECT($L121, fail, 'JSMultiLineComment "*/"'));
2579
2651
  function JSMultiLineComment(state) {
2580
2652
  if (state.verbose)
2581
2653
  console.log("ENTER:", "JSMultiLineComment");
@@ -2599,7 +2671,7 @@ var Civet = (() => {
2599
2671
  return CoffeeSingleLineComment$0(state);
2600
2672
  }
2601
2673
  }
2602
- var CoffeeMultiLineComment$0 = $T($S($EXPECT($L121, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($EXPECT($L121, fail, 'CoffeeMultiLineComment "###"')), $EXPECT($R12, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L121, fail, 'CoffeeMultiLineComment "###"')), function(value) {
2674
+ var CoffeeMultiLineComment$0 = $T($S($EXPECT($L122, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($EXPECT($L122, fail, 'CoffeeMultiLineComment "###"')), $EXPECT($R12, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L122, fail, 'CoffeeMultiLineComment "###"')), function(value) {
2603
2675
  return ["/*", value[1], "*/"];
2604
2676
  });
2605
2677
  function CoffeeMultiLineComment(state) {
@@ -2611,7 +2683,7 @@ var Civet = (() => {
2611
2683
  return CoffeeMultiLineComment$0(state);
2612
2684
  }
2613
2685
  }
2614
- var InlineComment$0 = $S($EXPECT($L119, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L120, fail, 'InlineComment "*/"')), $EXPECT($R20, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L120, fail, 'InlineComment "*/"'));
2686
+ var InlineComment$0 = $S($EXPECT($L120, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L121, fail, 'InlineComment "*/"')), $EXPECT($R20, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L121, fail, 'InlineComment "*/"'));
2615
2687
  function InlineComment(state) {
2616
2688
  if (state.verbose)
2617
2689
  console.log("ENTER:", "InlineComment");
@@ -2672,16 +2744,184 @@ var Civet = (() => {
2672
2744
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
2673
2745
  }
2674
2746
  }
2675
- var TypeDeclaration$0 = $T($S($EXPECT($L122, fail, 'TypeDeclaration "interface"'), $Q(TrailingComment), IdentifierName, InterfaceBlock), function(value) {
2747
+ var JSXElement$0 = JSXSelfClosingElement;
2748
+ var JSXElement$1 = $TS($S(JSXOpeningElement, $Q(JSXChildren), __, JSXClosingElement), function($skip, $loc, $0, $1, $2, $3, $4) {
2749
+ if ($1[1] !== $4[2]) {
2750
+ console.log($1, $4, $loc);
2751
+ throw new Error(`mismatched closing tags at ${JSON.stringify($loc)}`);
2752
+ }
2753
+ return $0;
2754
+ });
2755
+ function JSXElement(state) {
2756
+ if (state.tokenize) {
2757
+ return $TOKEN("JSXElement", state, JSXElement$0(state) || JSXElement$1(state));
2758
+ } else {
2759
+ return JSXElement$0(state) || JSXElement$1(state);
2760
+ }
2761
+ }
2762
+ var JSXSelfClosingElement$0 = $S($EXPECT($L13, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L123, fail, 'JSXSelfClosingElement "/>"'));
2763
+ function JSXSelfClosingElement(state) {
2764
+ if (state.verbose)
2765
+ console.log("ENTER:", "JSXSelfClosingElement");
2766
+ if (state.tokenize) {
2767
+ return $TOKEN("JSXSelfClosingElement", state, JSXSelfClosingElement$0(state));
2768
+ } else {
2769
+ return JSXSelfClosingElement$0(state);
2770
+ }
2771
+ }
2772
+ var JSXOpeningElement$0 = $S($EXPECT($L13, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L65, fail, 'JSXOpeningElement ">"'));
2773
+ function JSXOpeningElement(state) {
2774
+ if (state.verbose)
2775
+ console.log("ENTER:", "JSXOpeningElement");
2776
+ if (state.tokenize) {
2777
+ return $TOKEN("JSXOpeningElement", state, JSXOpeningElement$0(state));
2778
+ } else {
2779
+ return JSXOpeningElement$0(state);
2780
+ }
2781
+ }
2782
+ var JSXClosingElement$0 = $S($EXPECT($L124, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L65, fail, 'JSXClosingElement ">"'));
2783
+ function JSXClosingElement(state) {
2784
+ if (state.verbose)
2785
+ console.log("ENTER:", "JSXClosingElement");
2786
+ if (state.tokenize) {
2787
+ return $TOKEN("JSXClosingElement", state, JSXClosingElement$0(state));
2788
+ } else {
2789
+ return JSXClosingElement$0(state);
2790
+ }
2791
+ }
2792
+ var JSXFragment$0 = $S($EXPECT($L125, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L126, fail, 'JSXFragment "</>"'));
2793
+ function JSXFragment(state) {
2794
+ if (state.verbose)
2795
+ console.log("ENTER:", "JSXFragment");
2796
+ if (state.tokenize) {
2797
+ return $TOKEN("JSXFragment", state, JSXFragment$0(state));
2798
+ } else {
2799
+ return JSXFragment$0(state);
2800
+ }
2801
+ }
2802
+ var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L11, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L25, fail, 'JSXElementName "."'), JSXIdentifierName))));
2803
+ function JSXElementName(state) {
2804
+ if (state.verbose)
2805
+ console.log("ENTER:", "JSXElementName");
2806
+ if (state.tokenize) {
2807
+ return $TOKEN("JSXElementName", state, JSXElementName$0(state));
2808
+ } else {
2809
+ return JSXElementName$0(state);
2810
+ }
2811
+ }
2812
+ var JSXIdentifierName$0 = $R$0($EXPECT($R23, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
2813
+ function JSXIdentifierName(state) {
2814
+ if (state.verbose)
2815
+ console.log("ENTER:", "JSXIdentifierName");
2816
+ if (state.tokenize) {
2817
+ return $TOKEN("JSXIdentifierName", state, JSXIdentifierName$0(state));
2818
+ } else {
2819
+ return JSXIdentifierName$0(state);
2820
+ }
2821
+ }
2822
+ var JSXAttributes$0 = $Q($S(__, JSXAttribute));
2823
+ function JSXAttributes(state) {
2824
+ if (state.verbose)
2825
+ console.log("ENTER:", "JSXAttributes");
2826
+ if (state.tokenize) {
2827
+ return $TOKEN("JSXAttributes", state, JSXAttributes$0(state));
2828
+ } else {
2829
+ return JSXAttributes$0(state);
2830
+ }
2831
+ }
2832
+ var JSXAttribute$0 = $S($EXPECT($L10, fail, 'JSXAttribute "{"'), __, $EXPECT($L30, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, $EXPECT($L15, fail, 'JSXAttribute "}"'));
2833
+ var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
2834
+ function JSXAttribute(state) {
2835
+ if (state.tokenize) {
2836
+ return $TOKEN("JSXAttribute", state, JSXAttribute$0(state) || JSXAttribute$1(state));
2837
+ } else {
2838
+ return JSXAttribute$0(state) || JSXAttribute$1(state);
2839
+ }
2840
+ }
2841
+ var JSXAttributeName$0 = $S(JSXIdentifierName, $E($S($EXPECT($L11, fail, 'JSXAttributeName ":"'), JSXIdentifierName)));
2842
+ function JSXAttributeName(state) {
2843
+ if (state.verbose)
2844
+ console.log("ENTER:", "JSXAttributeName");
2845
+ if (state.tokenize) {
2846
+ return $TOKEN("JSXAttributeName", state, JSXAttributeName$0(state));
2847
+ } else {
2848
+ return JSXAttributeName$0(state);
2849
+ }
2850
+ }
2851
+ var JSXAttributeInitializer$0 = $S(__, $EXPECT($L54, fail, 'JSXAttributeInitializer "="'), __, JSXAttributeValue);
2852
+ function JSXAttributeInitializer(state) {
2853
+ if (state.verbose)
2854
+ console.log("ENTER:", "JSXAttributeInitializer");
2855
+ if (state.tokenize) {
2856
+ return $TOKEN("JSXAttributeInitializer", state, JSXAttributeInitializer$0(state));
2857
+ } else {
2858
+ return JSXAttributeInitializer$0(state);
2859
+ }
2860
+ }
2861
+ var JSXAttributeValue$0 = $R$0($EXPECT($R24, fail, 'JSXAttributeValue /"[^"]*"/'));
2862
+ var JSXAttributeValue$1 = $R$0($EXPECT($R25, fail, "JSXAttributeValue /'[^']*'/"));
2863
+ var JSXAttributeValue$2 = $S($EXPECT($L10, fail, 'JSXAttributeValue "{"'), __, AssignmentExpression, __, $EXPECT($L15, fail, 'JSXAttributeValue "}"'));
2864
+ var JSXAttributeValue$3 = JSXElement;
2865
+ var JSXAttributeValue$4 = JSXFragment;
2866
+ function JSXAttributeValue(state) {
2867
+ if (state.tokenize) {
2868
+ return $TOKEN("JSXAttributeValue", state, JSXAttributeValue$0(state) || JSXAttributeValue$1(state) || JSXAttributeValue$2(state) || JSXAttributeValue$3(state) || JSXAttributeValue$4(state));
2869
+ } else {
2870
+ return JSXAttributeValue$0(state) || JSXAttributeValue$1(state) || JSXAttributeValue$2(state) || JSXAttributeValue$3(state) || JSXAttributeValue$4(state);
2871
+ }
2872
+ }
2873
+ var JSXChildren$0 = $Q($S(__, JSXChild));
2874
+ function JSXChildren(state) {
2875
+ if (state.verbose)
2876
+ console.log("ENTER:", "JSXChildren");
2877
+ if (state.tokenize) {
2878
+ return $TOKEN("JSXChildren", state, JSXChildren$0(state));
2879
+ } else {
2880
+ return JSXChildren$0(state);
2881
+ }
2882
+ }
2883
+ var JSXChild$0 = JSXText;
2884
+ var JSXChild$1 = JSXElement;
2885
+ var JSXChild$2 = JSXFragment;
2886
+ var JSXChild$3 = $S($EXPECT($L10, fail, 'JSXChild "{"'), $E(JSXChildExpression), __, $EXPECT($L15, fail, 'JSXChild "}"'));
2887
+ function JSXChild(state) {
2888
+ if (state.tokenize) {
2889
+ return $TOKEN("JSXChild", state, JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state));
2890
+ } else {
2891
+ return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
2892
+ }
2893
+ }
2894
+ var JSXText$0 = $R$0($EXPECT($R26, fail, "JSXText /[^{}<>]+/"));
2895
+ function JSXText(state) {
2896
+ if (state.verbose)
2897
+ console.log("ENTER:", "JSXText");
2898
+ if (state.tokenize) {
2899
+ return $TOKEN("JSXText", state, JSXText$0(state));
2900
+ } else {
2901
+ return JSXText$0(state);
2902
+ }
2903
+ }
2904
+ var JSXChildExpression$0 = $S(__, $E($S($EXPECT($L30, fail, 'JSXChildExpression "..."'), __)), AssignmentExpression);
2905
+ function JSXChildExpression(state) {
2906
+ if (state.verbose)
2907
+ console.log("ENTER:", "JSXChildExpression");
2908
+ if (state.tokenize) {
2909
+ return $TOKEN("JSXChildExpression", state, JSXChildExpression$0(state));
2910
+ } else {
2911
+ return JSXChildExpression$0(state);
2912
+ }
2913
+ }
2914
+ var TypeDeclaration$0 = $T($S($EXPECT($R27, fail, "TypeDeclaration /type(?!\\p{ID_Continue})/"), $Q(TrailingComment), IdentifierName, $E(TypeParameters), __, $EXPECT($L54, fail, 'TypeDeclaration "="'), __, Type), function(value) {
2915
+ return { "ts": true, "children": value };
2916
+ });
2917
+ var TypeDeclaration$1 = $T($S($EXPECT($R28, fail, "TypeDeclaration /interface(?!\\p{ID_Continue})/"), $Q(TrailingComment), IdentifierName, InterfaceBlock), function(value) {
2676
2918
  return { "ts": true, "children": value };
2677
2919
  });
2678
2920
  function TypeDeclaration(state) {
2679
- if (state.verbose)
2680
- console.log("ENTER:", "TypeDeclaration");
2681
2921
  if (state.tokenize) {
2682
- return $TOKEN("TypeDeclaration", state, TypeDeclaration$0(state));
2922
+ return $TOKEN("TypeDeclaration", state, TypeDeclaration$0(state) || TypeDeclaration$1(state));
2683
2923
  } else {
2684
- return TypeDeclaration$0(state);
2924
+ return TypeDeclaration$0(state) || TypeDeclaration$1(state);
2685
2925
  }
2686
2926
  }
2687
2927
  var InterfaceBlock$0 = $S(__, $EXPECT($L10, fail, 'InterfaceBlock "{"'), EOS, NestedInterfaceProperties, __, $EXPECT($L15, fail, 'InterfaceBlock "}"'));
@@ -2718,7 +2958,7 @@ var Civet = (() => {
2718
2958
  return NestedInterfaceProperty$0(state);
2719
2959
  }
2720
2960
  }
2721
- var TypeSuffix$0 = $T($S(__, $EXPECT($L11, fail, 'TypeSuffix ":"'), Type), function(value) {
2961
+ var TypeSuffix$0 = $T($S($E($EXPECT($L3, fail, 'TypeSuffix "?"')), __, $EXPECT($L11, fail, 'TypeSuffix ":"'), Type), function(value) {
2722
2962
  return { "ts": true, "children": value };
2723
2963
  });
2724
2964
  function TypeSuffix(state) {
@@ -2730,17 +2970,84 @@ var Civet = (() => {
2730
2970
  return TypeSuffix$0(state);
2731
2971
  }
2732
2972
  }
2733
- var Type$0 = InterfaceBlock;
2734
- var Type$1 = $S($Q(_), FunctionType);
2735
- var Type$2 = $S($Q(_), IdentifierName, $Q($S($EXPECT($L25, fail, 'Type "."'), IdentifierName)), $E(TypeArguments), $Q($EXPECT($L123, fail, 'Type "[]"')));
2736
- var Type$3 = $S($Q(_), NumericLiteral);
2737
- var Type$4 = $S($Q(_), StringLiteral);
2738
- var Type$5 = $S($Q(_), $EXPECT($L82, fail, 'Type "void"'));
2973
+ var Type$0 = TypeConditional;
2739
2974
  function Type(state) {
2975
+ if (state.verbose)
2976
+ console.log("ENTER:", "Type");
2977
+ if (state.tokenize) {
2978
+ return $TOKEN("Type", state, Type$0(state));
2979
+ } else {
2980
+ return Type$0(state);
2981
+ }
2982
+ }
2983
+ var TypeBinary$0 = $S(TypeUnary, $Q($S(__, TypeBinaryOp, TypeUnary)));
2984
+ function TypeBinary(state) {
2985
+ if (state.verbose)
2986
+ console.log("ENTER:", "TypeBinary");
2740
2987
  if (state.tokenize) {
2741
- return $TOKEN("Type", state, Type$0(state) || Type$1(state) || Type$2(state) || Type$3(state) || Type$4(state) || Type$5(state));
2988
+ return $TOKEN("TypeBinary", state, TypeBinary$0(state));
2742
2989
  } else {
2743
- return Type$0(state) || Type$1(state) || Type$2(state) || Type$3(state) || Type$4(state) || Type$5(state);
2990
+ return TypeBinary$0(state);
2991
+ }
2992
+ }
2993
+ var TypeUnary$0 = $S($Q(TypeUnaryOp), TypePrimary);
2994
+ function TypeUnary(state) {
2995
+ if (state.verbose)
2996
+ console.log("ENTER:", "TypeUnary");
2997
+ if (state.tokenize) {
2998
+ return $TOKEN("TypeUnary", state, TypeUnary$0(state));
2999
+ } else {
3000
+ return TypeUnary$0(state);
3001
+ }
3002
+ }
3003
+ var TypeUnaryOp$0 = $S(__, $EXPECT($L83, fail, 'TypeUnaryOp "typeof"'), $R$0($EXPECT($R29, fail, "TypeUnaryOp /(?!\\p{ID_Continue})/")));
3004
+ var TypeUnaryOp$1 = $S(__, $EXPECT($L127, fail, 'TypeUnaryOp "infer"'), $R$0($EXPECT($R29, fail, "TypeUnaryOp /(?!\\p{ID_Continue})/")));
3005
+ function TypeUnaryOp(state) {
3006
+ if (state.tokenize) {
3007
+ return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state));
3008
+ } else {
3009
+ return TypeUnaryOp$0(state) || TypeUnaryOp$1(state);
3010
+ }
3011
+ }
3012
+ var TypePrimary$0 = InterfaceBlock;
3013
+ var TypePrimary$1 = $S(__, $EXPECT($L1, fail, 'TypePrimary "("'), Type, __, $EXPECT($L2, fail, 'TypePrimary ")"'));
3014
+ var TypePrimary$2 = $S($Q(_), FunctionType);
3015
+ var TypePrimary$3 = $S($Q(_), IdentifierName, $Q($S($EXPECT($L25, fail, 'TypePrimary "."'), IdentifierName)), $E(TypeArguments), $Q($EXPECT($L128, fail, 'TypePrimary "[]"')));
3016
+ var TypePrimary$4 = $S($Q(_), TypeLiteral);
3017
+ function TypePrimary(state) {
3018
+ if (state.tokenize) {
3019
+ return $TOKEN("TypePrimary", state, TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state));
3020
+ } else {
3021
+ return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
3022
+ }
3023
+ }
3024
+ var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L14, fail, 'TypeConditional "extends"'), Type, __, $EXPECT($L3, fail, 'TypeConditional "?"'), Type, __, $EXPECT($L11, fail, 'TypeConditional ":"'), Type)));
3025
+ function TypeConditional(state) {
3026
+ if (state.verbose)
3027
+ console.log("ENTER:", "TypeConditional");
3028
+ if (state.tokenize) {
3029
+ return $TOKEN("TypeConditional", state, TypeConditional$0(state));
3030
+ } else {
3031
+ return TypeConditional$0(state);
3032
+ }
3033
+ }
3034
+ var TypeLiteral$0 = Literal;
3035
+ var TypeLiteral$1 = $EXPECT($L82, fail, 'TypeLiteral "void"');
3036
+ var TypeLiteral$2 = $EXPECT($L128, fail, 'TypeLiteral "[]"');
3037
+ function TypeLiteral(state) {
3038
+ if (state.tokenize) {
3039
+ return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
3040
+ } else {
3041
+ return TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state);
3042
+ }
3043
+ }
3044
+ var TypeBinaryOp$0 = $EXPECT($L80, fail, 'TypeBinaryOp "|"');
3045
+ var TypeBinaryOp$1 = $EXPECT($L78, fail, 'TypeBinaryOp "&"');
3046
+ function TypeBinaryOp(state) {
3047
+ if (state.tokenize) {
3048
+ return $TOKEN("TypeBinaryOp", state, TypeBinaryOp$0(state) || TypeBinaryOp$1(state));
3049
+ } else {
3050
+ return TypeBinaryOp$0(state) || TypeBinaryOp$1(state);
2744
3051
  }
2745
3052
  }
2746
3053
  var FunctionType$0 = $S(Parameters, __, $EXPECT($L9, fail, 'FunctionType "=>"'), Type);
@@ -2763,7 +3070,52 @@ var Civet = (() => {
2763
3070
  return TypeArguments$0(state);
2764
3071
  }
2765
3072
  }
2766
- var Shebang$0 = $R$0($EXPECT($R23, fail, "Shebang /#![^\\r\\n]*/"));
3073
+ var TypeParameters$0 = $S(__, $EXPECT($L13, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeParameters ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeParameters ","'))), __, $EXPECT($L65, fail, 'TypeParameters ">"'));
3074
+ function TypeParameters(state) {
3075
+ if (state.verbose)
3076
+ console.log("ENTER:", "TypeParameters");
3077
+ if (state.tokenize) {
3078
+ return $TOKEN("TypeParameters", state, TypeParameters$0(state));
3079
+ } else {
3080
+ return TypeParameters$0(state);
3081
+ }
3082
+ }
3083
+ var TypeParameter$0 = $S(__, Identifier, $E(TypeConstraint), TypeParameterDelimiter);
3084
+ function TypeParameter(state) {
3085
+ if (state.verbose)
3086
+ console.log("ENTER:", "TypeParameter");
3087
+ if (state.tokenize) {
3088
+ return $TOKEN("TypeParameter", state, TypeParameter$0(state));
3089
+ } else {
3090
+ return TypeParameter$0(state);
3091
+ }
3092
+ }
3093
+ var TypeConstraint$0 = $S(__, $EXPECT($L14, fail, 'TypeConstraint "extends"'), Type);
3094
+ function TypeConstraint(state) {
3095
+ if (state.verbose)
3096
+ console.log("ENTER:", "TypeConstraint");
3097
+ if (state.tokenize) {
3098
+ return $TOKEN("TypeConstraint", state, TypeConstraint$0(state));
3099
+ } else {
3100
+ return TypeConstraint$0(state);
3101
+ }
3102
+ }
3103
+ var TypeParameterDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'TypeParameterDelimiter ","'));
3104
+ var TypeParameterDelimiter$1 = $Y($S($Q(_), $EXPECT($L65, fail, 'TypeParameterDelimiter ">"')));
3105
+ var TypeParameterDelimiter$2 = $T($Y($S(__, $EXPECT($L65, fail, 'TypeParameterDelimiter ">"'))), function(value) {
3106
+ return ",";
3107
+ });
3108
+ var TypeParameterDelimiter$3 = $T($Y(EOS), function(value) {
3109
+ return ",";
3110
+ });
3111
+ function TypeParameterDelimiter(state) {
3112
+ if (state.tokenize) {
3113
+ return $TOKEN("TypeParameterDelimiter", state, TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state));
3114
+ } else {
3115
+ return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
3116
+ }
3117
+ }
3118
+ var Shebang$0 = $R$0($EXPECT($R30, fail, "Shebang /#![^\\r\\n]*/"));
2767
3119
  function Shebang(state) {
2768
3120
  if (state.verbose)
2769
3121
  console.log("ENTER:", "Shebang");
@@ -2773,7 +3125,7 @@ var Civet = (() => {
2773
3125
  return Shebang$0(state);
2774
3126
  }
2775
3127
  }
2776
- var DirectivePrologue$0 = $TV($Q($S($TEXT($EXPECT($R24, fail, "DirectivePrologue /[\\t ]*/")), $TEXT(StringLiteral), $TEXT(StatementDelimiter), $TEXT(EOS))), function($skip, $loc, $0, $1) {
3128
+ var DirectivePrologue$0 = $TV($Q($S($TEXT($EXPECT($R31, fail, "DirectivePrologue /[\\t ]*/")), $TEXT(StringLiteral), $TEXT(StatementDelimiter), $TEXT(EOS))), function($skip, $loc, $0, $1) {
2777
3129
  return $0.map((p) => p.join(""));
2778
3130
  });
2779
3131
  function DirectivePrologue(state) {
@@ -2795,7 +3147,7 @@ var Civet = (() => {
2795
3147
  return EOS$0(state);
2796
3148
  }
2797
3149
  }
2798
- var EOL$0 = $R$0($EXPECT($R25, fail, "EOL /\\r\\n|\\n|\\r|$/"));
3150
+ var EOL$0 = $R$0($EXPECT($R32, fail, "EOL /\\r\\n|\\n|\\r|$/"));
2799
3151
  function EOL(state) {
2800
3152
  if (state.verbose)
2801
3153
  console.log("ENTER:", "EOL");
@@ -2805,7 +3157,7 @@ var Civet = (() => {
2805
3157
  return EOL$0(state);
2806
3158
  }
2807
3159
  }
2808
- var EOF$0 = $R$0($EXPECT($R26, fail, "EOF /$/"));
3160
+ var EOF$0 = $R$0($EXPECT($R33, fail, "EOF /$/"));
2809
3161
  function EOF(state) {
2810
3162
  if (state.verbose)
2811
3163
  console.log("ENTER:", "EOF");
@@ -2943,7 +3295,7 @@ var Civet = (() => {
2943
3295
  return Init$0(state);
2944
3296
  }
2945
3297
  }
2946
- var Indent$0 = $TV($Q($C($EXPECT($L124, fail, 'Indent " "'), $EXPECT($L125, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
3298
+ var Indent$0 = $TV($Q($C($EXPECT($L129, fail, 'Indent " "'), $EXPECT($L130, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
2947
3299
  return $1.length;
2948
3300
  });
2949
3301
  function Indent(state) {
@@ -3041,7 +3393,6 @@ var Civet = (() => {
3041
3393
  return "";
3042
3394
  }
3043
3395
  if (!node.children) {
3044
- debugger;
3045
3396
  throw new Error("Unknown node", JSON.stringify(node));
3046
3397
  }
3047
3398
  return node.children.map(function(child) {