@danielx/civet 0.3.2 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -424,7 +424,7 @@ var Civet = (() => {
424
424
  YieldExpression,
425
425
  ArrowFunction,
426
426
  FatArrow,
427
- ConciseBody,
427
+ FatArrowBody,
428
428
  ConditionalExpression,
429
429
  ShortCircuitExpression,
430
430
  PrimaryExpression,
@@ -473,7 +473,6 @@ var Civet = (() => {
473
473
  BracedOrEmptyBlock,
474
474
  BracedBlock,
475
475
  SingleNestedExpression,
476
- SingleNestedBlockStatement,
477
476
  NestedBlockExpressions,
478
477
  BlockExpression,
479
478
  Literal,
@@ -499,6 +498,8 @@ var Civet = (() => {
499
498
  PropertyDefinition,
500
499
  PropertyName,
501
500
  MethodDefinition,
501
+ MethodModifier,
502
+ MethodSignature,
502
503
  ClassElementName,
503
504
  PrivateIdentifier,
504
505
  GeneratorMethod,
@@ -558,6 +559,7 @@ var Civet = (() => {
558
559
  ImportSpecifier,
559
560
  ModuleExportName,
560
561
  ModuleSpecifier,
562
+ UnquotedSpecifier,
561
563
  ImportedBinding,
562
564
  ExportDeclaration,
563
565
  As,
@@ -624,11 +626,19 @@ var Civet = (() => {
624
626
  JSXText,
625
627
  JSXChildExpression,
626
628
  TypeDeclaration,
629
+ TypeDeclarationModifier,
630
+ TypeDeclarationRest,
631
+ TypeKeyword,
632
+ Interface,
633
+ Namespace,
627
634
  InterfaceBlock,
628
635
  NestedInterfaceProperties,
629
636
  NestedInterfaceProperty,
630
637
  InterfaceProperty,
631
638
  InterfacePropertyDelimiter,
639
+ NamespaceBlock,
640
+ NestedTypeDeclarations,
641
+ NestedTypeDeclaration,
632
642
  TypeIndexSignature,
633
643
  TypeIndex,
634
644
  TypeSuffix,
@@ -685,11 +695,11 @@ var Civet = (() => {
685
695
  var $L10 = $L("*");
686
696
  var $L11 = $L("=>");
687
697
  var $L12 = $L("{");
688
- var $L13 = $L(":");
689
- var $L14 = $L("class");
690
- var $L15 = $L("<");
691
- var $L16 = $L("extends");
692
- var $L17 = $L("}");
698
+ var $L13 = $L("}");
699
+ var $L14 = $L(":");
700
+ var $L15 = $L("class");
701
+ var $L16 = $L("<");
702
+ var $L17 = $L("extends");
693
703
  var $L18 = $L("static");
694
704
  var $L19 = $L("this");
695
705
  var $L20 = $L("#");
@@ -800,43 +810,47 @@ var Civet = (() => {
800
810
  var $L125 = $L("</");
801
811
  var $L126 = $L("<>");
802
812
  var $L127 = $L("</>");
803
- var $L128 = $L("readonly");
804
- var $L129 = $L("asserts");
805
- var $L130 = $L("keyof");
806
- var $L131 = $L("infer");
807
- var $L132 = $L("[]");
808
- var $L133 = $L(" ");
809
- var $L134 = $L(" ");
813
+ var $L128 = $L("declare");
814
+ var $L129 = $L("type");
815
+ var $L130 = $L("interface");
816
+ var $L131 = $L("namespace");
817
+ var $L132 = $L("readonly");
818
+ var $L133 = $L("asserts");
819
+ var $L134 = $L("keyof");
820
+ var $L135 = $L("infer");
821
+ var $L136 = $L("[]");
822
+ var $L137 = $L(" ");
823
+ var $L138 = $L(" ");
810
824
  var $R0 = $R(new RegExp("(of)(?!\\p{ID_Continue})", "suy"));
811
825
  var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
812
826
  var $R2 = $R(new RegExp("[!~+-]", "suy"));
813
- var $R3 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
814
- var $R4 = $R(new RegExp("\\d+(?:\\.\\d*)?", "suy"));
815
- var $R5 = $R(new RegExp("0[bB][01](?:[01]|_[01])*", "suy"));
816
- var $R6 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*", "suy"));
817
- var $R7 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
818
- var $R8 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
819
- var $R9 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
820
- var $R10 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])+', "suy"));
821
- var $R11 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])+", "suy"));
822
- var $R12 = $R(new RegExp("[^*\\/\\r\\n]", "suy"));
823
- var $R13 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
824
- var $R14 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
825
- var $R15 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
826
- var $R16 = $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|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
827
- var $R17 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
828
- var $R18 = $R(new RegExp(".", "suy"));
829
- var $R19 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
830
- var $R20 = $R(new RegExp("[^\\r\\n]", "suy"));
831
- var $R21 = $R(new RegExp("[\\t ]+", "suy"));
832
- var $R22 = $R(new RegExp("[\\s]+", "suy"));
833
- var $R23 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
834
- var $R24 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
835
- var $R25 = $R(new RegExp('"[^"]*"', "suy"));
836
- var $R26 = $R(new RegExp("'[^']*'", "suy"));
837
- var $R27 = $R(new RegExp("[^{}<>]+", "suy"));
838
- var $R28 = $R(new RegExp("type(?!\\p{ID_Continue})", "suy"));
839
- var $R29 = $R(new RegExp("interface(?!\\p{ID_Continue})", "suy"));
827
+ var $R3 = $R(new RegExp("\\s", "suy"));
828
+ var $R4 = $R(new RegExp('[^"\\s]+', "suy"));
829
+ var $R5 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
830
+ var $R6 = $R(new RegExp("\\d+(?:\\.\\d*)?", "suy"));
831
+ var $R7 = $R(new RegExp("0[bB][01](?:[01]|_[01])*", "suy"));
832
+ var $R8 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*", "suy"));
833
+ var $R9 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*", "suy"));
834
+ var $R10 = $R(new RegExp('(?:\\\\.|[^"])+', "suy"));
835
+ var $R11 = $R(new RegExp("(?:\\\\.|[^'])+", "suy"));
836
+ var $R12 = $R(new RegExp('(?:"(?!"")|\\\\.|[^"])+', "suy"));
837
+ var $R13 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])+", "suy"));
838
+ var $R14 = $R(new RegExp("[^*\\/\\r\\n]", "suy"));
839
+ var $R15 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
840
+ var $R16 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
841
+ var $R17 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
842
+ 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|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
843
+ var $R19 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
844
+ var $R20 = $R(new RegExp(".", "suy"));
845
+ var $R21 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
846
+ var $R22 = $R(new RegExp("[^\\r\\n]", "suy"));
847
+ var $R23 = $R(new RegExp("[\\t ]+", "suy"));
848
+ var $R24 = $R(new RegExp("[\\s]+", "suy"));
849
+ var $R25 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
850
+ var $R26 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
851
+ var $R27 = $R(new RegExp('"[^"]*"', "suy"));
852
+ var $R28 = $R(new RegExp("'[^']*'", "suy"));
853
+ var $R29 = $R(new RegExp("[^{}<>]+", "suy"));
840
854
  var $R30 = $R(new RegExp("[+-]?", "suy"));
841
855
  var $R31 = $R(new RegExp("[+-]", "suy"));
842
856
  var $R32 = $R(new RegExp("#![^\\r\\n]*", "suy"));
@@ -1029,7 +1043,7 @@ var Civet = (() => {
1029
1043
  }
1030
1044
  }
1031
1045
  var ArrowFunction$0 = ThinArrowFunction;
1032
- var ArrowFunction$1 = $S(Parameters, $E(ReturnTypeSuffix), FatArrow, ConciseBody);
1046
+ var ArrowFunction$1 = $S(Parameters, $E(ReturnTypeSuffix), FatArrow, FatArrowBody);
1033
1047
  function ArrowFunction(state) {
1034
1048
  if (state.tokenize) {
1035
1049
  return $TOKEN("ArrowFunction", state, ArrowFunction$0(state) || ArrowFunction$1(state));
@@ -1052,17 +1066,27 @@ var Civet = (() => {
1052
1066
  return FatArrow$0(state);
1053
1067
  }
1054
1068
  }
1055
- var ConciseBody$0 = $S(EOS, SingleNestedBlockStatement);
1056
- var ConciseBody$1 = $S($N($S($Q(_), $EXPECT($L12, fail, 'ConciseBody "{"'))), AssignmentExpression);
1057
- var ConciseBody$2 = BracedBlock;
1058
- function ConciseBody(state) {
1069
+ var FatArrowBody$0 = $S(__, $EXPECT($L12, fail, 'FatArrowBody "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'FatArrowBody "}"'));
1070
+ var FatArrowBody$1 = $TS($S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
1071
+ var eos = $2;
1072
+ var exps = $3;
1073
+ if (exps.length == 1) {
1074
+ exps[0].pop();
1075
+ return [eos, exps];
1076
+ }
1077
+ return $0;
1078
+ });
1079
+ var FatArrowBody$2 = AssignmentExpression;
1080
+ var FatArrowBody$3 = $S(__, AssignmentExpression);
1081
+ var FatArrowBody$4 = $S(InsertOpenBrace, InsertCloseBrace);
1082
+ function FatArrowBody(state) {
1059
1083
  if (state.tokenize) {
1060
- return $TOKEN("ConciseBody", state, ConciseBody$0(state) || ConciseBody$1(state) || ConciseBody$2(state));
1084
+ return $TOKEN("FatArrowBody", state, FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state));
1061
1085
  } else {
1062
- return ConciseBody$0(state) || ConciseBody$1(state) || ConciseBody$2(state);
1086
+ return FatArrowBody$0(state) || FatArrowBody$1(state) || FatArrowBody$2(state) || FatArrowBody$3(state) || FatArrowBody$4(state);
1063
1087
  }
1064
1088
  }
1065
- var ConditionalExpression$0 = $S(ShortCircuitExpression, $E($S(__, $EXPECT($L3, fail, 'ConditionalExpression "?"'), AssignmentExpression, __, $EXPECT($L13, fail, 'ConditionalExpression ":"'), AssignmentExpression)));
1089
+ var ConditionalExpression$0 = $S(ShortCircuitExpression, $E($S(__, $EXPECT($L3, fail, 'ConditionalExpression "?"'), AssignmentExpression, __, $EXPECT($L14, fail, 'ConditionalExpression ":"'), AssignmentExpression)));
1066
1090
  function ConditionalExpression(state) {
1067
1091
  if (state.verbose)
1068
1092
  console.log("ENTER:", "ConditionalExpression");
@@ -1121,7 +1145,7 @@ var Civet = (() => {
1121
1145
  return ClassExpression$0(state);
1122
1146
  }
1123
1147
  }
1124
- var Class$0 = $TV($EXPECT($L14, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
1148
+ var Class$0 = $TV($EXPECT($L15, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
1125
1149
  return { $loc, token: $0 };
1126
1150
  });
1127
1151
  function Class(state) {
@@ -1143,10 +1167,10 @@ var Civet = (() => {
1143
1167
  return ClassHeritage$0(state);
1144
1168
  }
1145
1169
  }
1146
- var ExtendsToken$0 = $TV($EXPECT($L15, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1170
+ var ExtendsToken$0 = $TV($EXPECT($L16, fail, 'ExtendsToken "<"'), function($skip, $loc, $0, $1) {
1147
1171
  return { $loc, token: "extends" };
1148
1172
  });
1149
- var ExtendsToken$1 = $TV($EXPECT($L16, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1173
+ var ExtendsToken$1 = $TV($EXPECT($L17, fail, 'ExtendsToken "extends"'), function($skip, $loc, $0, $1) {
1150
1174
  return { $loc, token: $1 };
1151
1175
  });
1152
1176
  function ExtendsToken(state) {
@@ -1156,7 +1180,7 @@ var Civet = (() => {
1156
1180
  return ExtendsToken$0(state) || ExtendsToken$1(state);
1157
1181
  }
1158
1182
  }
1159
- var ClassBody$0 = $S(__, $EXPECT($L12, fail, 'ClassBody "{"'), $E($S(EOS, NestedClassElements)), __, $EXPECT($L17, fail, 'ClassBody "}"'));
1183
+ var ClassBody$0 = $S(__, $EXPECT($L12, fail, 'ClassBody "{"'), $E($S(EOS, NestedClassElements)), __, $EXPECT($L13, fail, 'ClassBody "}"'));
1160
1184
  var ClassBody$1 = $S(InsertOpenBrace, EOS, NestedClassElements, InsertNewline, InsertIndent, InsertCloseBrace);
1161
1185
  function ClassBody(state) {
1162
1186
  if (state.tokenize) {
@@ -1440,7 +1464,7 @@ var Civet = (() => {
1440
1464
  return BindingPattern$0(state) || BindingPattern$1(state);
1441
1465
  }
1442
1466
  }
1443
- var ObjectBindingPattern$0 = $S($EXPECT($L12, fail, 'ObjectBindingPattern "{"'), $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, $EXPECT($L17, fail, 'ObjectBindingPattern "}"'));
1467
+ var ObjectBindingPattern$0 = $S($EXPECT($L12, fail, 'ObjectBindingPattern "{"'), $Q(BindingProperty), $E($S(__, BindingRestProperty)), __, $EXPECT($L13, fail, 'ObjectBindingPattern "}"'));
1444
1468
  function ObjectBindingPattern(state) {
1445
1469
  if (state.verbose)
1446
1470
  console.log("ENTER:", "ObjectBindingPattern");
@@ -1460,7 +1484,7 @@ var Civet = (() => {
1460
1484
  return ArrayBindingPattern$0(state);
1461
1485
  }
1462
1486
  }
1463
- var BindingProperty$0 = $S(__, PropertyName, __, $EXPECT($L13, fail, 'BindingProperty ":"'), __, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1487
+ var BindingProperty$0 = $S(__, PropertyName, __, $EXPECT($L14, fail, 'BindingProperty ":"'), __, $C(BindingIdentifier, BindingPattern), $E(Initializer), ObjectPropertyDelimiter);
1464
1488
  var BindingProperty$1 = $S(__, BindingIdentifier, $E(Initializer), ObjectPropertyDelimiter);
1465
1489
  function BindingProperty(state) {
1466
1490
  if (state.tokenize) {
@@ -1551,7 +1575,7 @@ var Civet = (() => {
1551
1575
  return Arrow$0(state);
1552
1576
  }
1553
1577
  }
1554
- var Block$0 = $S(__, $EXPECT($L12, fail, 'Block "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L17, fail, 'Block "}"'));
1578
+ var Block$0 = $S(__, $EXPECT($L12, fail, 'Block "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'Block "}"'));
1555
1579
  var Block$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1556
1580
  var Block$2 = Statement;
1557
1581
  var Block$3 = $S(__, Statement);
@@ -1571,7 +1595,7 @@ var Civet = (() => {
1571
1595
  return BracedOrEmptyBlock$0(state) || BracedOrEmptyBlock$1(state);
1572
1596
  }
1573
1597
  }
1574
- var BracedBlock$0 = $S(__, $EXPECT($L12, fail, 'BracedBlock "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L17, fail, 'BracedBlock "}"'));
1598
+ var BracedBlock$0 = $S(__, $EXPECT($L12, fail, 'BracedBlock "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'BracedBlock "}"'));
1575
1599
  var BracedBlock$1 = $S(InsertOpenBrace, EOS, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseBrace);
1576
1600
  var BracedBlock$2 = $S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace);
1577
1601
  function BracedBlock(state) {
@@ -1596,21 +1620,6 @@ var Civet = (() => {
1596
1620
  return SingleNestedExpression$0(state);
1597
1621
  }
1598
1622
  }
1599
- var SingleNestedBlockStatement$0 = $TS($S(PushIndent, $E($S(Nested, StatementListItem)), $C($C($N($S(Nested, StatementListItem)), PopIndent), PopIndent)), function($skip, $loc, $0, $1, $2, $3) {
1600
- var exp = $2;
1601
- if (exp)
1602
- return exp;
1603
- return $skip;
1604
- });
1605
- function SingleNestedBlockStatement(state) {
1606
- if (state.verbose)
1607
- console.log("ENTER:", "SingleNestedBlockStatement");
1608
- if (state.tokenize) {
1609
- return $TOKEN("SingleNestedBlockStatement", state, SingleNestedBlockStatement$0(state));
1610
- } else {
1611
- return SingleNestedBlockStatement$0(state);
1612
- }
1613
- }
1614
1623
  var NestedBlockExpressions$0 = $TS($S(PushIndent, $Q(BlockExpression), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
1615
1624
  var exps = $2;
1616
1625
  if (!exps.length)
@@ -1805,9 +1814,9 @@ var Civet = (() => {
1805
1814
  return Elision$0(state);
1806
1815
  }
1807
1816
  }
1808
- var ObjectLiteral$0 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), $Y(EOS), NestedPropertyDefinitions, __, $EXPECT($L17, fail, 'ObjectLiteral "}"'));
1809
- var ObjectLiteral$1 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, PropertyDefinitionList, __, $E($S($EXPECT($L0, fail, 'ObjectLiteral ","'), __)), $EXPECT($L17, fail, 'ObjectLiteral "}"'));
1810
- var ObjectLiteral$2 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, $EXPECT($L17, fail, 'ObjectLiteral "}"'));
1817
+ var ObjectLiteral$0 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), $Y(EOS), NestedPropertyDefinitions, __, $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1818
+ var ObjectLiteral$1 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, PropertyDefinitionList, __, $E($S($EXPECT($L0, fail, 'ObjectLiteral ","'), __)), $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1819
+ var ObjectLiteral$2 = $S($EXPECT($L12, fail, 'ObjectLiteral "{"'), __, $EXPECT($L13, fail, 'ObjectLiteral "}"'));
1811
1820
  var ObjectLiteral$3 = $S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace);
1812
1821
  function ObjectLiteral(state) {
1813
1822
  if (state.tokenize) {
@@ -1842,8 +1851,8 @@ var Civet = (() => {
1842
1851
  }
1843
1852
  }
1844
1853
  var ObjectPropertyDelimiter$0 = $S($Q(_), $EXPECT($L0, fail, 'ObjectPropertyDelimiter ","'));
1845
- var ObjectPropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L17, fail, 'ObjectPropertyDelimiter "}"')));
1846
- var ObjectPropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L17, fail, 'ObjectPropertyDelimiter "}"'))), function(value) {
1854
+ var ObjectPropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L13, fail, 'ObjectPropertyDelimiter "}"')));
1855
+ var ObjectPropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L13, fail, 'ObjectPropertyDelimiter "}"'))), function(value) {
1847
1856
  return ",";
1848
1857
  });
1849
1858
  var ObjectPropertyDelimiter$3 = $T($Y(EOS), function(value) {
@@ -1866,7 +1875,7 @@ var Civet = (() => {
1866
1875
  return PropertyDefinitionList$0(state);
1867
1876
  }
1868
1877
  }
1869
- var PropertyDefinition$0 = $S(PropertyName, __, $EXPECT($L13, fail, 'PropertyDefinition ":"'), AssignmentExpression);
1878
+ var PropertyDefinition$0 = $S(PropertyName, __, $EXPECT($L14, fail, 'PropertyDefinition ":"'), AssignmentExpression);
1870
1879
  var PropertyDefinition$1 = MethodDefinition;
1871
1880
  var PropertyDefinition$2 = $S($EXPECT($L33, fail, 'PropertyDefinition "..."'), AssignmentExpression);
1872
1881
  var PropertyDefinition$3 = IdentifierReference;
@@ -1901,6 +1910,26 @@ var Civet = (() => {
1901
1910
  return MethodDefinition$0(state) || MethodDefinition$1(state) || MethodDefinition$2(state) || MethodDefinition$3(state) || MethodDefinition$4(state) || MethodDefinition$5(state);
1902
1911
  }
1903
1912
  }
1913
+ var MethodModifier$0 = $S($C($EXPECT($L39, fail, 'MethodModifier "get"'), $EXPECT($L40, fail, 'MethodModifier "set"')), NonIdContinue, $Q(TrailingComment));
1914
+ function MethodModifier(state) {
1915
+ if (state.verbose)
1916
+ console.log("ENTER:", "MethodModifier");
1917
+ if (state.tokenize) {
1918
+ return $TOKEN("MethodModifier", state, MethodModifier$0(state));
1919
+ } else {
1920
+ return MethodModifier$0(state);
1921
+ }
1922
+ }
1923
+ var MethodSignature$0 = $S($E(MethodModifier), ClassElementName, $Q(_), Parameters);
1924
+ function MethodSignature(state) {
1925
+ if (state.verbose)
1926
+ console.log("ENTER:", "MethodSignature");
1927
+ if (state.tokenize) {
1928
+ return $TOKEN("MethodSignature", state, MethodSignature$0(state));
1929
+ } else {
1930
+ return MethodSignature$0(state);
1931
+ }
1932
+ }
1904
1933
  var ClassElementName$0 = PropertyName;
1905
1934
  var ClassElementName$1 = PrivateIdentifier;
1906
1935
  function ClassElementName(state) {
@@ -2036,7 +2065,7 @@ var Civet = (() => {
2036
2065
  var BinaryOpSymbol$6 = $EXPECT($L62, fail, 'BinaryOpSymbol "<="');
2037
2066
  var BinaryOpSymbol$7 = $EXPECT($L63, fail, 'BinaryOpSymbol ">="');
2038
2067
  var BinaryOpSymbol$8 = $EXPECT($L64, fail, 'BinaryOpSymbol "<<"');
2039
- var BinaryOpSymbol$9 = $EXPECT($L15, fail, 'BinaryOpSymbol "<"');
2068
+ var BinaryOpSymbol$9 = $EXPECT($L16, fail, 'BinaryOpSymbol "<"');
2040
2069
  var BinaryOpSymbol$10 = $EXPECT($L65, fail, 'BinaryOpSymbol ">>>"');
2041
2070
  var BinaryOpSymbol$11 = $EXPECT($L66, fail, 'BinaryOpSymbol ">>"');
2042
2071
  var BinaryOpSymbol$12 = $EXPECT($L67, fail, 'BinaryOpSymbol ">"');
@@ -2154,7 +2183,7 @@ var Civet = (() => {
2154
2183
  return EmptyStatement$0(state);
2155
2184
  }
2156
2185
  }
2157
- var BlockStatement$0 = $S(__, $EXPECT($L12, fail, 'BlockStatement "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L17, fail, 'BlockStatement "}"'));
2186
+ var BlockStatement$0 = $S(__, $EXPECT($L12, fail, 'BlockStatement "{"'), EOS, NestedBlockExpressions, __, $EXPECT($L13, fail, 'BlockStatement "}"'));
2158
2187
  function BlockStatement(state) {
2159
2188
  if (state.verbose)
2160
2189
  console.log("ENTER:", "BlockStatement");
@@ -2321,7 +2350,7 @@ var Civet = (() => {
2321
2350
  return SwitchStatement$0(state);
2322
2351
  }
2323
2352
  }
2324
- var CaseBlock$0 = $S(__, $EXPECT($L12, fail, 'CaseBlock "{"'), $Y(EOS), NestedCaseClauses, __, $EXPECT($L17, fail, 'CaseBlock "}"'));
2353
+ var CaseBlock$0 = $S(__, $EXPECT($L12, fail, 'CaseBlock "{"'), $Y(EOS), NestedCaseClauses, __, $EXPECT($L13, fail, 'CaseBlock "}"'));
2325
2354
  var CaseBlock$1 = $S($Y(EOS), InsertOpenBrace, NestedCaseClauses, InsertNewline, InsertCloseBrace);
2326
2355
  function CaseBlock(state) {
2327
2356
  if (state.tokenize) {
@@ -2377,7 +2406,7 @@ var Civet = (() => {
2377
2406
  return When$0(state);
2378
2407
  }
2379
2408
  }
2380
- var ImpliedColon$0 = $S(__, $EXPECT($L13, fail, 'ImpliedColon ":"'));
2409
+ var ImpliedColon$0 = $S(__, $EXPECT($L14, fail, 'ImpliedColon ":"'));
2381
2410
  var ImpliedColon$1 = $T($EXPECT($L32, fail, 'ImpliedColon ""'), function(value) {
2382
2411
  return ":";
2383
2412
  });
@@ -2520,7 +2549,7 @@ var Civet = (() => {
2520
2549
  return ImpliedImport$0(state);
2521
2550
  }
2522
2551
  }
2523
- var Import$0 = $TS($S($EXPECT($L24, fail, 'Import "import"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
2552
+ var Import$0 = $TS($S($EXPECT($L24, fail, 'Import "import"'), $Y($EXPECT($R3, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
2524
2553
  return { $loc, token: $1 };
2525
2554
  });
2526
2555
  function Import(state) {
@@ -2552,7 +2581,7 @@ var Civet = (() => {
2552
2581
  return NameSpaceImport$0(state);
2553
2582
  }
2554
2583
  }
2555
- var NamedImports$0 = $S($EXPECT($L12, fail, 'NamedImports "{"'), $Q(ImportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedImports ","'))), __, $EXPECT($L17, fail, 'NamedImports "}"'));
2584
+ var NamedImports$0 = $S($EXPECT($L12, fail, 'NamedImports "{"'), $Q(ImportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedImports ","'))), __, $EXPECT($L13, fail, 'NamedImports "}"'));
2556
2585
  function NamedImports(state) {
2557
2586
  if (state.verbose)
2558
2587
  console.log("ENTER:", "NamedImports");
@@ -2603,13 +2632,25 @@ var Civet = (() => {
2603
2632
  }
2604
2633
  }
2605
2634
  var ModuleSpecifier$0 = StringLiteral;
2635
+ var ModuleSpecifier$1 = UnquotedSpecifier;
2606
2636
  function ModuleSpecifier(state) {
2637
+ if (state.tokenize) {
2638
+ return $TOKEN("ModuleSpecifier", state, ModuleSpecifier$0(state) || ModuleSpecifier$1(state));
2639
+ } else {
2640
+ return ModuleSpecifier$0(state) || ModuleSpecifier$1(state);
2641
+ }
2642
+ }
2643
+ var UnquotedSpecifier$0 = $TV($EXPECT($R4, fail, 'UnquotedSpecifier /[^"\\s]+/'), function($skip, $loc, $0, $1) {
2644
+ var spec = $0;
2645
+ return { $loc, token: `"${spec}"` };
2646
+ });
2647
+ function UnquotedSpecifier(state) {
2607
2648
  if (state.verbose)
2608
- console.log("ENTER:", "ModuleSpecifier");
2649
+ console.log("ENTER:", "UnquotedSpecifier");
2609
2650
  if (state.tokenize) {
2610
- return $TOKEN("ModuleSpecifier", state, ModuleSpecifier$0(state));
2651
+ return $TOKEN("UnquotedSpecifier", state, UnquotedSpecifier$0(state));
2611
2652
  } else {
2612
- return ModuleSpecifier$0(state);
2653
+ return UnquotedSpecifier$0(state);
2613
2654
  }
2614
2655
  }
2615
2656
  var ImportedBinding$0 = BindingIdentifier;
@@ -2661,7 +2702,7 @@ var Civet = (() => {
2661
2702
  return ExportFromClause$0(state) || ExportFromClause$1(state);
2662
2703
  }
2663
2704
  }
2664
- var NamedExports$0 = $S($EXPECT($L12, fail, 'NamedExports "{"'), $Q(ExportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedExports ","'))), __, $EXPECT($L17, fail, 'NamedExports "}"'));
2705
+ var NamedExports$0 = $S($EXPECT($L12, fail, 'NamedExports "{"'), $Q(ExportSpecifier), $E($S(__, $EXPECT($L0, fail, 'NamedExports ","'))), __, $EXPECT($L13, fail, 'NamedExports "}"'));
2665
2706
  function NamedExports(state) {
2666
2707
  if (state.verbose)
2667
2708
  console.log("ENTER:", "NamedExports");
@@ -2810,7 +2851,7 @@ var Civet = (() => {
2810
2851
  return NumericLiteralKind$0(state) || NumericLiteralKind$1(state) || NumericLiteralKind$2(state) || NumericLiteralKind$3(state) || NumericLiteralKind$4(state);
2811
2852
  }
2812
2853
  }
2813
- var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R3, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
2854
+ var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R5, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
2814
2855
  function DecimalBigIntegerLiteral(state) {
2815
2856
  if (state.verbose)
2816
2857
  console.log("ENTER:", "DecimalBigIntegerLiteral");
@@ -2820,7 +2861,7 @@ var Civet = (() => {
2820
2861
  return DecimalBigIntegerLiteral$0(state);
2821
2862
  }
2822
2863
  }
2823
- var DecimalLiteral$0 = $R$0($EXPECT($R4, fail, "DecimalLiteral /\\d+(?:\\.\\d*)?/"));
2864
+ var DecimalLiteral$0 = $R$0($EXPECT($R6, fail, "DecimalLiteral /\\d+(?:\\.\\d*)?/"));
2824
2865
  function DecimalLiteral(state) {
2825
2866
  if (state.verbose)
2826
2867
  console.log("ENTER:", "DecimalLiteral");
@@ -2830,7 +2871,7 @@ var Civet = (() => {
2830
2871
  return DecimalLiteral$0(state);
2831
2872
  }
2832
2873
  }
2833
- var BinaryIntegerLiteral$0 = $R$0($EXPECT($R5, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*/"));
2874
+ var BinaryIntegerLiteral$0 = $R$0($EXPECT($R7, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*/"));
2834
2875
  function BinaryIntegerLiteral(state) {
2835
2876
  if (state.verbose)
2836
2877
  console.log("ENTER:", "BinaryIntegerLiteral");
@@ -2840,7 +2881,7 @@ var Civet = (() => {
2840
2881
  return BinaryIntegerLiteral$0(state);
2841
2882
  }
2842
2883
  }
2843
- var OctalIntegerLiteral$0 = $R$0($EXPECT($R6, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*/"));
2884
+ var OctalIntegerLiteral$0 = $R$0($EXPECT($R8, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*/"));
2844
2885
  function OctalIntegerLiteral(state) {
2845
2886
  if (state.verbose)
2846
2887
  console.log("ENTER:", "OctalIntegerLiteral");
@@ -2850,7 +2891,7 @@ var Civet = (() => {
2850
2891
  return OctalIntegerLiteral$0(state);
2851
2892
  }
2852
2893
  }
2853
- var HexLiteral$0 = $R$0($EXPECT($R7, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*/"));
2894
+ var HexLiteral$0 = $R$0($EXPECT($R9, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*/"));
2854
2895
  function HexLiteral(state) {
2855
2896
  if (state.verbose)
2856
2897
  console.log("ENTER:", "HexLiteral");
@@ -2881,7 +2922,7 @@ var Civet = (() => {
2881
2922
  return StringLiteral$0(state) || StringLiteral$1(state) || StringLiteral$2(state) || StringLiteral$3(state);
2882
2923
  }
2883
2924
  }
2884
- var DoubleStringCharacter$0 = $R$0($EXPECT($R8, fail, 'DoubleStringCharacter /(?:\\\\.|[^"])+/'));
2925
+ var DoubleStringCharacter$0 = $R$0($EXPECT($R10, fail, 'DoubleStringCharacter /(?:\\\\.|[^"])+/'));
2885
2926
  function DoubleStringCharacter(state) {
2886
2927
  if (state.verbose)
2887
2928
  console.log("ENTER:", "DoubleStringCharacter");
@@ -2891,7 +2932,7 @@ var Civet = (() => {
2891
2932
  return DoubleStringCharacter$0(state);
2892
2933
  }
2893
2934
  }
2894
- var SingleStringCharacter$0 = $R$0($EXPECT($R9, fail, "SingleStringCharacter /(?:\\\\.|[^'])+/"));
2935
+ var SingleStringCharacter$0 = $R$0($EXPECT($R11, fail, "SingleStringCharacter /(?:\\\\.|[^'])+/"));
2895
2936
  function SingleStringCharacter(state) {
2896
2937
  if (state.verbose)
2897
2938
  console.log("ENTER:", "SingleStringCharacter");
@@ -2901,7 +2942,7 @@ var Civet = (() => {
2901
2942
  return SingleStringCharacter$0(state);
2902
2943
  }
2903
2944
  }
2904
- var TripleDoubleStringCharacter$0 = $R$0($EXPECT($R10, fail, 'TripleDoubleStringCharacter /(?:"(?!"")|\\\\.|[^"])+/'));
2945
+ var TripleDoubleStringCharacter$0 = $R$0($EXPECT($R12, fail, 'TripleDoubleStringCharacter /(?:"(?!"")|\\\\.|[^"])+/'));
2905
2946
  function TripleDoubleStringCharacter(state) {
2906
2947
  if (state.verbose)
2907
2948
  console.log("ENTER:", "TripleDoubleStringCharacter");
@@ -2911,7 +2952,7 @@ var Civet = (() => {
2911
2952
  return TripleDoubleStringCharacter$0(state);
2912
2953
  }
2913
2954
  }
2914
- var TripleSingleStringCharacter$0 = $R$0($EXPECT($R11, fail, "TripleSingleStringCharacter /(?:'(?!'')|\\\\.|[^'])+/"));
2955
+ var TripleSingleStringCharacter$0 = $R$0($EXPECT($R13, fail, "TripleSingleStringCharacter /(?:'(?!'')|\\\\.|[^'])+/"));
2915
2956
  function TripleSingleStringCharacter(state) {
2916
2957
  if (state.verbose)
2917
2958
  console.log("ENTER:", "TripleSingleStringCharacter");
@@ -2933,7 +2974,7 @@ var Civet = (() => {
2933
2974
  return RegularExpressionLiteral$0(state);
2934
2975
  }
2935
2976
  }
2936
- var RegularExpressionBody$0 = $S($R$0($EXPECT($R12, fail, "RegularExpressionBody /[^*\\/\\r\\n]/")), $Q(RegExpCharacter));
2977
+ var RegularExpressionBody$0 = $S($R$0($EXPECT($R14, fail, "RegularExpressionBody /[^*\\/\\r\\n]/")), $Q(RegExpCharacter));
2937
2978
  function RegularExpressionBody(state) {
2938
2979
  if (state.verbose)
2939
2980
  console.log("ENTER:", "RegularExpressionBody");
@@ -2943,7 +2984,7 @@ var Civet = (() => {
2943
2984
  return RegularExpressionBody$0(state);
2944
2985
  }
2945
2986
  }
2946
- var RegExpCharacter$0 = $R$0($EXPECT($R13, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
2987
+ var RegExpCharacter$0 = $R$0($EXPECT($R15, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
2947
2988
  function RegExpCharacter(state) {
2948
2989
  if (state.verbose)
2949
2990
  console.log("ENTER:", "RegExpCharacter");
@@ -2953,7 +2994,7 @@ var Civet = (() => {
2953
2994
  return RegExpCharacter$0(state);
2954
2995
  }
2955
2996
  }
2956
- var RegularExpressionFlags$0 = $R$0($EXPECT($R14, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
2997
+ var RegularExpressionFlags$0 = $R$0($EXPECT($R16, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
2957
2998
  function RegularExpressionFlags(state) {
2958
2999
  if (state.verbose)
2959
3000
  console.log("ENTER:", "RegularExpressionFlags");
@@ -2973,7 +3014,7 @@ var Civet = (() => {
2973
3014
  return TemplateLiteral$0(state);
2974
3015
  }
2975
3016
  }
2976
- var TemplateSubstitution$0 = $S($EXPECT($L120, fail, 'TemplateSubstitution "${"'), __, Expression, __, $EXPECT($L17, fail, 'TemplateSubstitution "}"'));
3017
+ var TemplateSubstitution$0 = $S($EXPECT($L120, fail, 'TemplateSubstitution "${"'), __, Expression, __, $EXPECT($L13, fail, 'TemplateSubstitution "}"'));
2977
3018
  function TemplateSubstitution(state) {
2978
3019
  if (state.verbose)
2979
3020
  console.log("ENTER:", "TemplateSubstitution");
@@ -2983,7 +3024,7 @@ var Civet = (() => {
2983
3024
  return TemplateSubstitution$0(state);
2984
3025
  }
2985
3026
  }
2986
- var TemplateCharacters$0 = $R$0($EXPECT($R15, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
3027
+ var TemplateCharacters$0 = $R$0($EXPECT($R17, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"));
2987
3028
  function TemplateCharacters(state) {
2988
3029
  if (state.verbose)
2989
3030
  console.log("ENTER:", "TemplateCharacters");
@@ -2993,7 +3034,7 @@ var Civet = (() => {
2993
3034
  return TemplateCharacters$0(state);
2994
3035
  }
2995
3036
  }
2996
- var ReservedWord$0 = $R$0($EXPECT($R16, 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|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3037
+ 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|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
2997
3038
  function ReservedWord(state) {
2998
3039
  if (state.verbose)
2999
3040
  console.log("ENTER:", "ReservedWord");
@@ -3012,7 +3053,7 @@ var Civet = (() => {
3012
3053
  return Comment$0(state) || Comment$1(state);
3013
3054
  }
3014
3055
  }
3015
- var SingleLineComment$0 = $R$0($EXPECT($R17, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"));
3056
+ var SingleLineComment$0 = $R$0($EXPECT($R19, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"));
3016
3057
  var SingleLineComment$1 = CoffeeSingleLineComment;
3017
3058
  function SingleLineComment(state) {
3018
3059
  if (state.tokenize) {
@@ -3030,7 +3071,7 @@ var Civet = (() => {
3030
3071
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3031
3072
  }
3032
3073
  }
3033
- var JSMultiLineComment$0 = $S($EXPECT($L121, fail, 'JSMultiLineComment "/*"'), $TEXT($Q($S($N($EXPECT($L122, fail, 'JSMultiLineComment "*/"')), $EXPECT($R18, fail, "JSMultiLineComment /./")))), $EXPECT($L122, fail, 'JSMultiLineComment "*/"'));
3074
+ var JSMultiLineComment$0 = $S($EXPECT($L121, fail, 'JSMultiLineComment "/*"'), $TEXT($Q($S($N($EXPECT($L122, fail, 'JSMultiLineComment "*/"')), $EXPECT($R20, fail, "JSMultiLineComment /./")))), $EXPECT($L122, fail, 'JSMultiLineComment "*/"'));
3034
3075
  function JSMultiLineComment(state) {
3035
3076
  if (state.verbose)
3036
3077
  console.log("ENTER:", "JSMultiLineComment");
@@ -3040,7 +3081,7 @@ var Civet = (() => {
3040
3081
  return JSMultiLineComment$0(state);
3041
3082
  }
3042
3083
  }
3043
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R19, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3084
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R21, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3044
3085
  if (!global.coffeeCompat)
3045
3086
  return $skip;
3046
3087
  return ["//", $1];
@@ -3054,7 +3095,7 @@ var Civet = (() => {
3054
3095
  return CoffeeSingleLineComment$0(state);
3055
3096
  }
3056
3097
  }
3057
- var CoffeeMultiLineComment$0 = $T($S($EXPECT($L123, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($EXPECT($L123, fail, 'CoffeeMultiLineComment "###"')), $EXPECT($R18, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L123, fail, 'CoffeeMultiLineComment "###"')), function(value) {
3098
+ var CoffeeMultiLineComment$0 = $T($S($EXPECT($L123, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($EXPECT($L123, fail, 'CoffeeMultiLineComment "###"')), $EXPECT($R20, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L123, fail, 'CoffeeMultiLineComment "###"')), function(value) {
3058
3099
  return ["/*", value[1], "*/"];
3059
3100
  });
3060
3101
  function CoffeeMultiLineComment(state) {
@@ -3066,7 +3107,7 @@ var Civet = (() => {
3066
3107
  return CoffeeMultiLineComment$0(state);
3067
3108
  }
3068
3109
  }
3069
- var InlineComment$0 = $S($EXPECT($L121, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L122, fail, 'InlineComment "*/"')), $EXPECT($R20, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L122, fail, 'InlineComment "*/"'));
3110
+ var InlineComment$0 = $S($EXPECT($L121, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L122, fail, 'InlineComment "*/"')), $EXPECT($R22, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L122, fail, 'InlineComment "*/"'));
3070
3111
  function InlineComment(state) {
3071
3112
  if (state.verbose)
3072
3113
  console.log("ENTER:", "InlineComment");
@@ -3086,7 +3127,7 @@ var Civet = (() => {
3086
3127
  return RestOfLine$0(state);
3087
3128
  }
3088
3129
  }
3089
- var TrailingComment$0 = $R$0($EXPECT($R21, fail, "TrailingComment /[\\t ]+/"));
3130
+ var TrailingComment$0 = $R$0($EXPECT($R23, fail, "TrailingComment /[\\t ]+/"));
3090
3131
  var TrailingComment$1 = InlineComment;
3091
3132
  var TrailingComment$2 = SingleLineComment;
3092
3133
  function TrailingComment(state) {
@@ -3096,7 +3137,7 @@ var Civet = (() => {
3096
3137
  return TrailingComment$0(state) || TrailingComment$1(state) || TrailingComment$2(state);
3097
3138
  }
3098
3139
  }
3099
- var _$0 = $P($C($R$0($EXPECT($R21, fail, "_ /[\\t ]+/")), Comment));
3140
+ var _$0 = $P($C($R$0($EXPECT($R23, fail, "_ /[\\t ]+/")), Comment));
3100
3141
  function _(state) {
3101
3142
  if (state.verbose)
3102
3143
  console.log("ENTER:", "_");
@@ -3106,7 +3147,7 @@ var Civet = (() => {
3106
3147
  return _$0(state);
3107
3148
  }
3108
3149
  }
3109
- var __$0 = $Q($C($R$0($EXPECT($R22, fail, "__ /[\\s]+/")), Comment));
3150
+ var __$0 = $Q($C($R$0($EXPECT($R24, fail, "__ /[\\s]+/")), Comment));
3110
3151
  function __(state) {
3111
3152
  if (state.verbose)
3112
3153
  console.log("ENTER:", "__");
@@ -3127,7 +3168,7 @@ var Civet = (() => {
3127
3168
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
3128
3169
  }
3129
3170
  }
3130
- var NonIdContinue$0 = $R$0($EXPECT($R23, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3171
+ var NonIdContinue$0 = $R$0($EXPECT($R25, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
3131
3172
  function NonIdContinue(state) {
3132
3173
  if (state.verbose)
3133
3174
  console.log("ENTER:", "NonIdContinue");
@@ -3151,7 +3192,7 @@ var Civet = (() => {
3151
3192
  return JSXElement$0(state) || JSXElement$1(state);
3152
3193
  }
3153
3194
  }
3154
- var JSXSelfClosingElement$0 = $S($EXPECT($L15, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L124, fail, 'JSXSelfClosingElement "/>"'));
3195
+ var JSXSelfClosingElement$0 = $S($EXPECT($L16, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L124, fail, 'JSXSelfClosingElement "/>"'));
3155
3196
  function JSXSelfClosingElement(state) {
3156
3197
  if (state.verbose)
3157
3198
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -3161,7 +3202,7 @@ var Civet = (() => {
3161
3202
  return JSXSelfClosingElement$0(state);
3162
3203
  }
3163
3204
  }
3164
- var JSXOpeningElement$0 = $S($EXPECT($L15, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L67, fail, 'JSXOpeningElement ">"'));
3205
+ var JSXOpeningElement$0 = $S($EXPECT($L16, fail, 'JSXOpeningElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L67, fail, 'JSXOpeningElement ">"'));
3165
3206
  function JSXOpeningElement(state) {
3166
3207
  if (state.verbose)
3167
3208
  console.log("ENTER:", "JSXOpeningElement");
@@ -3191,7 +3232,7 @@ var Civet = (() => {
3191
3232
  return JSXFragment$0(state);
3192
3233
  }
3193
3234
  }
3194
- var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L13, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L25, fail, 'JSXElementName "."'), JSXIdentifierName))));
3235
+ var JSXElementName$0 = $S(JSXIdentifierName, $C($S($EXPECT($L14, fail, 'JSXElementName ":"'), JSXIdentifierName), $Q($S($EXPECT($L25, fail, 'JSXElementName "."'), JSXIdentifierName))));
3195
3236
  function JSXElementName(state) {
3196
3237
  if (state.verbose)
3197
3238
  console.log("ENTER:", "JSXElementName");
@@ -3201,7 +3242,7 @@ var Civet = (() => {
3201
3242
  return JSXElementName$0(state);
3202
3243
  }
3203
3244
  }
3204
- var JSXIdentifierName$0 = $R$0($EXPECT($R24, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3245
+ var JSXIdentifierName$0 = $R$0($EXPECT($R26, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
3205
3246
  function JSXIdentifierName(state) {
3206
3247
  if (state.verbose)
3207
3248
  console.log("ENTER:", "JSXIdentifierName");
@@ -3221,7 +3262,7 @@ var Civet = (() => {
3221
3262
  return JSXAttributes$0(state);
3222
3263
  }
3223
3264
  }
3224
- var JSXAttribute$0 = $S($EXPECT($L12, fail, 'JSXAttribute "{"'), __, $EXPECT($L33, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, $EXPECT($L17, fail, 'JSXAttribute "}"'));
3265
+ var JSXAttribute$0 = $S($EXPECT($L12, fail, 'JSXAttribute "{"'), __, $EXPECT($L33, fail, 'JSXAttribute "..."'), __, AssignmentExpression, __, $EXPECT($L13, fail, 'JSXAttribute "}"'));
3225
3266
  var JSXAttribute$1 = $S(JSXAttributeName, $E(JSXAttributeInitializer));
3226
3267
  function JSXAttribute(state) {
3227
3268
  if (state.tokenize) {
@@ -3230,7 +3271,7 @@ var Civet = (() => {
3230
3271
  return JSXAttribute$0(state) || JSXAttribute$1(state);
3231
3272
  }
3232
3273
  }
3233
- var JSXAttributeName$0 = $S(JSXIdentifierName, $E($S($EXPECT($L13, fail, 'JSXAttributeName ":"'), JSXIdentifierName)));
3274
+ var JSXAttributeName$0 = $S(JSXIdentifierName, $E($S($EXPECT($L14, fail, 'JSXAttributeName ":"'), JSXIdentifierName)));
3234
3275
  function JSXAttributeName(state) {
3235
3276
  if (state.verbose)
3236
3277
  console.log("ENTER:", "JSXAttributeName");
@@ -3250,9 +3291,9 @@ var Civet = (() => {
3250
3291
  return JSXAttributeInitializer$0(state);
3251
3292
  }
3252
3293
  }
3253
- var JSXAttributeValue$0 = $R$0($EXPECT($R25, fail, 'JSXAttributeValue /"[^"]*"/'));
3254
- var JSXAttributeValue$1 = $R$0($EXPECT($R26, fail, "JSXAttributeValue /'[^']*'/"));
3255
- var JSXAttributeValue$2 = $S($EXPECT($L12, fail, 'JSXAttributeValue "{"'), __, AssignmentExpression, __, $EXPECT($L17, fail, 'JSXAttributeValue "}"'));
3294
+ var JSXAttributeValue$0 = $R$0($EXPECT($R27, fail, 'JSXAttributeValue /"[^"]*"/'));
3295
+ var JSXAttributeValue$1 = $R$0($EXPECT($R28, fail, "JSXAttributeValue /'[^']*'/"));
3296
+ var JSXAttributeValue$2 = $S($EXPECT($L12, fail, 'JSXAttributeValue "{"'), __, AssignmentExpression, __, $EXPECT($L13, fail, 'JSXAttributeValue "}"'));
3256
3297
  var JSXAttributeValue$3 = JSXElement;
3257
3298
  var JSXAttributeValue$4 = JSXFragment;
3258
3299
  function JSXAttributeValue(state) {
@@ -3275,7 +3316,7 @@ var Civet = (() => {
3275
3316
  var JSXChild$0 = JSXText;
3276
3317
  var JSXChild$1 = JSXElement;
3277
3318
  var JSXChild$2 = JSXFragment;
3278
- var JSXChild$3 = $S($EXPECT($L12, fail, 'JSXChild "{"'), $E(JSXChildExpression), __, $EXPECT($L17, fail, 'JSXChild "}"'));
3319
+ var JSXChild$3 = $S($EXPECT($L12, fail, 'JSXChild "{"'), $E(JSXChildExpression), __, $EXPECT($L13, fail, 'JSXChild "}"'));
3279
3320
  function JSXChild(state) {
3280
3321
  if (state.tokenize) {
3281
3322
  return $TOKEN("JSXChild", state, JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state));
@@ -3283,7 +3324,7 @@ var Civet = (() => {
3283
3324
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
3284
3325
  }
3285
3326
  }
3286
- var JSXText$0 = $R$0($EXPECT($R27, fail, "JSXText /[^{}<>]+/"));
3327
+ var JSXText$0 = $R$0($EXPECT($R29, fail, "JSXText /[^{}<>]+/"));
3287
3328
  function JSXText(state) {
3288
3329
  if (state.verbose)
3289
3330
  console.log("ENTER:", "JSXText");
@@ -3303,21 +3344,69 @@ var Civet = (() => {
3303
3344
  return JSXChildExpression$0(state);
3304
3345
  }
3305
3346
  }
3306
- var TypeDeclaration$0 = $T($S($EXPECT($R28, fail, "TypeDeclaration /type(?!\\p{ID_Continue})/"), $Q(TrailingComment), IdentifierName, $E(TypeParameters), __, $EXPECT($L56, fail, 'TypeDeclaration "="'), __, Type), function(value) {
3307
- return { "ts": true, "children": value };
3308
- });
3309
- var TypeDeclaration$1 = $T($S($EXPECT($R29, fail, "TypeDeclaration /interface(?!\\p{ID_Continue})/"), $Q(TrailingComment), IdentifierName, InterfaceBlock), function(value) {
3347
+ var TypeDeclaration$0 = $T($S($Q($S(TypeDeclarationModifier, $Q(TrailingComment))), TypeDeclarationRest), function(value) {
3310
3348
  return { "ts": true, "children": value };
3311
3349
  });
3312
3350
  function TypeDeclaration(state) {
3351
+ if (state.verbose)
3352
+ console.log("ENTER:", "TypeDeclaration");
3313
3353
  if (state.tokenize) {
3314
- return $TOKEN("TypeDeclaration", state, TypeDeclaration$0(state) || TypeDeclaration$1(state));
3354
+ return $TOKEN("TypeDeclaration", state, TypeDeclaration$0(state));
3315
3355
  } else {
3316
- return TypeDeclaration$0(state) || TypeDeclaration$1(state);
3356
+ return TypeDeclaration$0(state);
3317
3357
  }
3318
3358
  }
3319
- var InterfaceBlock$0 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), EOS, NestedInterfaceProperties, __, $EXPECT($L17, fail, 'InterfaceBlock "}"'));
3320
- var InterfaceBlock$1 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), $Q($S(__, InterfaceProperty)), __, $EXPECT($L17, fail, 'InterfaceBlock "}"'));
3359
+ var TypeDeclarationModifier$0 = $S($EXPECT($L128, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
3360
+ var TypeDeclarationModifier$1 = $S($EXPECT($L113, fail, 'TypeDeclarationModifier "export"'), NonIdContinue);
3361
+ function TypeDeclarationModifier(state) {
3362
+ if (state.tokenize) {
3363
+ return $TOKEN("TypeDeclarationModifier", state, TypeDeclarationModifier$0(state) || TypeDeclarationModifier$1(state));
3364
+ } else {
3365
+ return TypeDeclarationModifier$0(state) || TypeDeclarationModifier$1(state);
3366
+ }
3367
+ }
3368
+ var TypeDeclarationRest$0 = $S(TypeKeyword, $Q(TrailingComment), IdentifierName, $E(TypeParameters), __, $EXPECT($L56, fail, 'TypeDeclarationRest "="'), __, Type);
3369
+ var TypeDeclarationRest$1 = $S(Interface, $Q(TrailingComment), IdentifierName, InterfaceBlock);
3370
+ var TypeDeclarationRest$2 = $S(Namespace, $Q(TrailingComment), IdentifierName, NamespaceBlock);
3371
+ function TypeDeclarationRest(state) {
3372
+ if (state.tokenize) {
3373
+ return $TOKEN("TypeDeclarationRest", state, TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state));
3374
+ } else {
3375
+ return TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state);
3376
+ }
3377
+ }
3378
+ var TypeKeyword$0 = $S($EXPECT($L129, fail, 'TypeKeyword "type"'), NonIdContinue);
3379
+ function TypeKeyword(state) {
3380
+ if (state.verbose)
3381
+ console.log("ENTER:", "TypeKeyword");
3382
+ if (state.tokenize) {
3383
+ return $TOKEN("TypeKeyword", state, TypeKeyword$0(state));
3384
+ } else {
3385
+ return TypeKeyword$0(state);
3386
+ }
3387
+ }
3388
+ var Interface$0 = $S($EXPECT($L130, fail, 'Interface "interface"'), NonIdContinue);
3389
+ function Interface(state) {
3390
+ if (state.verbose)
3391
+ console.log("ENTER:", "Interface");
3392
+ if (state.tokenize) {
3393
+ return $TOKEN("Interface", state, Interface$0(state));
3394
+ } else {
3395
+ return Interface$0(state);
3396
+ }
3397
+ }
3398
+ var Namespace$0 = $S($EXPECT($L131, fail, 'Namespace "namespace"'), NonIdContinue);
3399
+ function Namespace(state) {
3400
+ if (state.verbose)
3401
+ console.log("ENTER:", "Namespace");
3402
+ if (state.tokenize) {
3403
+ return $TOKEN("Namespace", state, Namespace$0(state));
3404
+ } else {
3405
+ return Namespace$0(state);
3406
+ }
3407
+ }
3408
+ var InterfaceBlock$0 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), EOS, NestedInterfaceProperties, __, $EXPECT($L13, fail, 'InterfaceBlock "}"'));
3409
+ var InterfaceBlock$1 = $S(__, $EXPECT($L12, fail, 'InterfaceBlock "{"'), $Q($S(__, InterfaceProperty)), __, $EXPECT($L13, fail, 'InterfaceBlock "}"'));
3321
3410
  var InterfaceBlock$2 = $S(InsertOpenBrace, EOS, NestedInterfaceProperties, InsertNewline, InsertIndent, InsertCloseBrace);
3322
3411
  function InterfaceBlock(state) {
3323
3412
  if (state.tokenize) {
@@ -3352,18 +3441,17 @@ var Civet = (() => {
3352
3441
  }
3353
3442
  }
3354
3443
  var InterfaceProperty$0 = $S($C(TypeIndexSignature, PropertyName), TypeSuffix, InterfacePropertyDelimiter);
3444
+ var InterfaceProperty$1 = $S(MethodSignature, $E(TypeSuffix));
3355
3445
  function InterfaceProperty(state) {
3356
- if (state.verbose)
3357
- console.log("ENTER:", "InterfaceProperty");
3358
3446
  if (state.tokenize) {
3359
- return $TOKEN("InterfaceProperty", state, InterfaceProperty$0(state));
3447
+ return $TOKEN("InterfaceProperty", state, InterfaceProperty$0(state) || InterfaceProperty$1(state));
3360
3448
  } else {
3361
- return InterfaceProperty$0(state);
3449
+ return InterfaceProperty$0(state) || InterfaceProperty$1(state);
3362
3450
  }
3363
3451
  }
3364
3452
  var InterfacePropertyDelimiter$0 = $S($Q(_), $EXPECT($L88, fail, 'InterfacePropertyDelimiter ";"'));
3365
- var InterfacePropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L17, fail, 'InterfacePropertyDelimiter "}"')));
3366
- var InterfacePropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L17, fail, 'InterfacePropertyDelimiter "}"'))), function(value) {
3453
+ var InterfacePropertyDelimiter$1 = $Y($S($Q(_), $EXPECT($L13, fail, 'InterfacePropertyDelimiter "}"')));
3454
+ var InterfacePropertyDelimiter$2 = $T($Y($S(__, $EXPECT($L13, fail, 'InterfacePropertyDelimiter "}"'))), function(value) {
3367
3455
  return ";";
3368
3456
  });
3369
3457
  var InterfacePropertyDelimiter$3 = $T($Y(EOS), function(value) {
@@ -3376,7 +3464,42 @@ var Civet = (() => {
3376
3464
  return InterfacePropertyDelimiter$0(state) || InterfacePropertyDelimiter$1(state) || InterfacePropertyDelimiter$2(state) || InterfacePropertyDelimiter$3(state);
3377
3465
  }
3378
3466
  }
3379
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R30, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L128, fail, 'TypeIndexSignature "readonly"'), __)), $EXPECT($L26, fail, 'TypeIndexSignature "["'), TypeIndex, $EXPECT($L27, fail, 'TypeIndexSignature "]"'), $E($S(__, $R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]/")), $EXPECT($L3, fail, 'TypeIndexSignature "?"'))));
3467
+ var NamespaceBlock$0 = $S(__, $EXPECT($L12, fail, 'NamespaceBlock "{"'), EOS, NestedTypeDeclarations, __, $EXPECT($L13, fail, 'NamespaceBlock "}"'));
3468
+ var NamespaceBlock$1 = $S(__, $EXPECT($L12, fail, 'NamespaceBlock "{"'), $Q($S(__, TypeDeclaration, InterfacePropertyDelimiter)), __, $EXPECT($L13, fail, 'NamespaceBlock "}"'));
3469
+ var NamespaceBlock$2 = $S(InsertOpenBrace, EOS, NestedTypeDeclarations, InsertNewline, InsertIndent, InsertCloseBrace);
3470
+ function NamespaceBlock(state) {
3471
+ if (state.tokenize) {
3472
+ return $TOKEN("NamespaceBlock", state, NamespaceBlock$0(state) || NamespaceBlock$1(state) || NamespaceBlock$2(state));
3473
+ } else {
3474
+ return NamespaceBlock$0(state) || NamespaceBlock$1(state) || NamespaceBlock$2(state);
3475
+ }
3476
+ }
3477
+ var NestedTypeDeclarations$0 = $TS($S(PushIndent, $Q(NestedTypeDeclaration), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
3478
+ var decs = $2;
3479
+ if (decs.length)
3480
+ return decs;
3481
+ return $skip;
3482
+ });
3483
+ function NestedTypeDeclarations(state) {
3484
+ if (state.verbose)
3485
+ console.log("ENTER:", "NestedTypeDeclarations");
3486
+ if (state.tokenize) {
3487
+ return $TOKEN("NestedTypeDeclarations", state, NestedTypeDeclarations$0(state));
3488
+ } else {
3489
+ return NestedTypeDeclarations$0(state);
3490
+ }
3491
+ }
3492
+ var NestedTypeDeclaration$0 = $S(Nested, TypeDeclaration, InterfacePropertyDelimiter);
3493
+ function NestedTypeDeclaration(state) {
3494
+ if (state.verbose)
3495
+ console.log("ENTER:", "NestedTypeDeclaration");
3496
+ if (state.tokenize) {
3497
+ return $TOKEN("NestedTypeDeclaration", state, NestedTypeDeclaration$0(state));
3498
+ } else {
3499
+ return NestedTypeDeclaration$0(state);
3500
+ }
3501
+ }
3502
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R30, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L132, fail, 'TypeIndexSignature "readonly"'), __)), $EXPECT($L26, fail, 'TypeIndexSignature "["'), TypeIndex, $EXPECT($L27, fail, 'TypeIndexSignature "]"'), $E($S(__, $R$0($EXPECT($R31, fail, "TypeIndexSignature /[+-]/")), $EXPECT($L3, fail, 'TypeIndexSignature "?"'))));
3380
3503
  function TypeIndexSignature(state) {
3381
3504
  if (state.verbose)
3382
3505
  console.log("ENTER:", "TypeIndexSignature");
@@ -3395,7 +3518,7 @@ var Civet = (() => {
3395
3518
  return TypeIndex$0(state) || TypeIndex$1(state);
3396
3519
  }
3397
3520
  }
3398
- var TypeSuffix$0 = $T($S($E($EXPECT($L3, fail, 'TypeSuffix "?"')), __, $EXPECT($L13, fail, 'TypeSuffix ":"'), Type), function(value) {
3521
+ var TypeSuffix$0 = $T($S($E($EXPECT($L3, fail, 'TypeSuffix "?"')), __, $EXPECT($L14, fail, 'TypeSuffix ":"'), Type), function(value) {
3399
3522
  return { "ts": true, "children": value };
3400
3523
  });
3401
3524
  function TypeSuffix(state) {
@@ -3407,7 +3530,7 @@ var Civet = (() => {
3407
3530
  return TypeSuffix$0(state);
3408
3531
  }
3409
3532
  }
3410
- var ReturnTypeSuffix$0 = $T($S(__, $EXPECT($L13, fail, 'ReturnTypeSuffix ":"'), $E($S(__, $EXPECT($L129, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
3533
+ var ReturnTypeSuffix$0 = $T($S(__, $EXPECT($L14, fail, 'ReturnTypeSuffix ":"'), $E($S(__, $EXPECT($L133, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function(value) {
3411
3534
  return { "ts": true, "children": value };
3412
3535
  });
3413
3536
  function ReturnTypeSuffix(state) {
@@ -3469,9 +3592,9 @@ var Civet = (() => {
3469
3592
  return TypeUnarySuffix$0(state);
3470
3593
  }
3471
3594
  }
3472
- var TypeUnaryOp$0 = $EXPECT($L130, fail, 'TypeUnaryOp "keyof"');
3595
+ var TypeUnaryOp$0 = $EXPECT($L134, fail, 'TypeUnaryOp "keyof"');
3473
3596
  var TypeUnaryOp$1 = $EXPECT($L85, fail, 'TypeUnaryOp "typeof"');
3474
- var TypeUnaryOp$2 = $EXPECT($L131, fail, 'TypeUnaryOp "infer"');
3597
+ var TypeUnaryOp$2 = $EXPECT($L135, fail, 'TypeUnaryOp "infer"');
3475
3598
  function TypeUnaryOp(state) {
3476
3599
  if (state.tokenize) {
3477
3600
  return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state));
@@ -3501,7 +3624,7 @@ var Civet = (() => {
3501
3624
  return TypePrimary$0(state) || TypePrimary$1(state) || TypePrimary$2(state) || TypePrimary$3(state) || TypePrimary$4(state);
3502
3625
  }
3503
3626
  }
3504
- var TypeConditional$0 = $S(TypeBinary, $E($S(__, $EXPECT($L16, fail, 'TypeConditional "extends"'), Type, $E($S(__, $EXPECT($L3, fail, 'TypeConditional "?"'), Type, __, $EXPECT($L13, fail, 'TypeConditional ":"'), Type)))));
3627
+ 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)))));
3505
3628
  function TypeConditional(state) {
3506
3629
  if (state.verbose)
3507
3630
  console.log("ENTER:", "TypeConditional");
@@ -3513,7 +3636,7 @@ var Civet = (() => {
3513
3636
  }
3514
3637
  var TypeLiteral$0 = Literal;
3515
3638
  var TypeLiteral$1 = $EXPECT($L84, fail, 'TypeLiteral "void"');
3516
- var TypeLiteral$2 = $EXPECT($L132, fail, 'TypeLiteral "[]"');
3639
+ var TypeLiteral$2 = $EXPECT($L136, fail, 'TypeLiteral "[]"');
3517
3640
  function TypeLiteral(state) {
3518
3641
  if (state.tokenize) {
3519
3642
  return $TOKEN("TypeLiteral", state, TypeLiteral$0(state) || TypeLiteral$1(state) || TypeLiteral$2(state));
@@ -3540,7 +3663,7 @@ var Civet = (() => {
3540
3663
  return FunctionType$0(state);
3541
3664
  }
3542
3665
  }
3543
- var TypeArguments$0 = $S(__, $EXPECT($L15, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeArguments ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeArguments ","'))), __, $EXPECT($L67, fail, 'TypeArguments ">"'));
3666
+ var TypeArguments$0 = $S(__, $EXPECT($L16, fail, 'TypeArguments "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeArguments ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeArguments ","'))), __, $EXPECT($L67, fail, 'TypeArguments ">"'));
3544
3667
  function TypeArguments(state) {
3545
3668
  if (state.verbose)
3546
3669
  console.log("ENTER:", "TypeArguments");
@@ -3550,7 +3673,7 @@ var Civet = (() => {
3550
3673
  return TypeArguments$0(state);
3551
3674
  }
3552
3675
  }
3553
- var TypeParameters$0 = $S(__, $EXPECT($L15, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeParameters ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeParameters ","'))), __, $EXPECT($L67, fail, 'TypeParameters ">"'));
3676
+ var TypeParameters$0 = $S(__, $EXPECT($L16, fail, 'TypeParameters "<"'), __, Type, $Q($S(__, $EXPECT($L0, fail, 'TypeParameters ","'), __, Type)), $E($S(__, $EXPECT($L0, fail, 'TypeParameters ","'))), __, $EXPECT($L67, fail, 'TypeParameters ">"'));
3554
3677
  function TypeParameters(state) {
3555
3678
  if (state.verbose)
3556
3679
  console.log("ENTER:", "TypeParameters");
@@ -3570,7 +3693,7 @@ var Civet = (() => {
3570
3693
  return TypeParameter$0(state);
3571
3694
  }
3572
3695
  }
3573
- var TypeConstraint$0 = $S(__, $EXPECT($L16, fail, 'TypeConstraint "extends"'), Type);
3696
+ var TypeConstraint$0 = $S(__, $EXPECT($L17, fail, 'TypeConstraint "extends"'), Type);
3574
3697
  function TypeConstraint(state) {
3575
3698
  if (state.verbose)
3576
3699
  console.log("ENTER:", "TypeConstraint");
@@ -3795,7 +3918,7 @@ var Civet = (() => {
3795
3918
  return Init$0(state);
3796
3919
  }
3797
3920
  }
3798
- var Indent$0 = $TV($Q($C($EXPECT($L133, fail, 'Indent " "'), $EXPECT($L134, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
3921
+ var Indent$0 = $TV($Q($C($EXPECT($L137, fail, 'Indent " "'), $EXPECT($L138, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
3799
3922
  return $1.length;
3800
3923
  });
3801
3924
  function Indent(state) {