@danielx/civet 0.4.19-pre.0 → 0.4.19-pre.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.
Files changed (3) hide show
  1. package/dist/browser.js +345 -207
  2. package/dist/main.js +345 -207
  3. package/package.json +1 -1
package/dist/browser.js CHANGED
@@ -435,6 +435,7 @@ var Civet = (() => {
435
435
  ConditionalExpression,
436
436
  ShortCircuitExpression,
437
437
  PrimaryExpression,
438
+ ParenthesizedExpression,
438
439
  ClassDeclaration,
439
440
  ClassExpression,
440
441
  ClassHeritage,
@@ -652,6 +653,7 @@ var Civet = (() => {
652
653
  Async,
653
654
  Await,
654
655
  Backtick,
656
+ By,
655
657
  Case,
656
658
  Catch,
657
659
  Class,
@@ -784,8 +786,9 @@ var Civet = (() => {
784
786
  InsertSpace,
785
787
  InsertDot,
786
788
  InsertBreak,
787
- CoffeeCommentEnabled,
788
789
  CoffeeBooleansEnabled,
790
+ CoffeeCommentEnabled,
791
+ CoffeeDoEnabled,
789
792
  CoffeeForLoopsEnabled,
790
793
  CoffeeInterpolationEnabled,
791
794
  CoffeeIsntEnabled,
@@ -891,70 +894,71 @@ var Civet = (() => {
891
894
  var $L87 = $L("async");
892
895
  var $L88 = $L("await");
893
896
  var $L89 = $L("`");
894
- var $L90 = $L("case");
895
- var $L91 = $L("catch");
896
- var $L92 = $L("class");
897
- var $L93 = $L("#{");
898
- var $L94 = $L(":");
899
- var $L95 = $L("delete");
900
- var $L96 = $L("do");
901
- var $L97 = $L("..");
902
- var $L98 = $L("...");
903
- var $L99 = $L('"');
904
- var $L100 = $L("else");
905
- var $L101 = $L("export");
906
- var $L102 = $L("for");
907
- var $L103 = $L("from");
908
- var $L104 = $L("function");
909
- var $L105 = $L("get");
910
- var $L106 = $L("set");
911
- var $L107 = $L("if");
912
- var $L108 = $L(" ");
913
- var $L109 = $L("let");
914
- var $L110 = $L("const");
915
- var $L111 = $L("loop");
916
- var $L112 = $L("new");
917
- var $L113 = $L("not");
918
- var $L114 = $L("{");
919
- var $L115 = $L("[");
920
- var $L116 = $L("(");
921
- var $L117 = $L("?");
922
- var $L118 = $L("return");
923
- var $L119 = $L("'");
924
- var $L120 = $L("static");
925
- var $L121 = $L("${");
926
- var $L122 = $L("switch");
927
- var $L123 = $L("target");
928
- var $L124 = $L("then");
929
- var $L125 = $L("throw");
930
- var $L126 = $L('"""');
931
- var $L127 = $L("'''");
932
- var $L128 = $L("```");
933
- var $L129 = $L("try");
934
- var $L130 = $L("typeof");
935
- var $L131 = $L("unless");
936
- var $L132 = $L("until");
937
- var $L133 = $L("var");
938
- var $L134 = $L("void");
939
- var $L135 = $L("when");
940
- var $L136 = $L("while");
941
- var $L137 = $L("yield");
942
- var $L138 = $L("/>");
943
- var $L139 = $L("</");
944
- var $L140 = $L("<>");
945
- var $L141 = $L("</>");
946
- var $L142 = $L("declare");
947
- var $L143 = $L("type");
948
- var $L144 = $L("interface");
949
- var $L145 = $L("namespace");
950
- var $L146 = $L("readonly");
951
- var $L147 = $L("asserts");
952
- var $L148 = $L("keyof");
953
- var $L149 = $L("infer");
954
- var $L150 = $L("[]");
955
- var $L151 = $L("civet");
956
- var $L152 = $L(" ");
957
- var $L153 = $L(" ");
897
+ var $L90 = $L("by");
898
+ var $L91 = $L("case");
899
+ var $L92 = $L("catch");
900
+ var $L93 = $L("class");
901
+ var $L94 = $L("#{");
902
+ var $L95 = $L(":");
903
+ var $L96 = $L("delete");
904
+ var $L97 = $L("do");
905
+ var $L98 = $L("..");
906
+ var $L99 = $L("...");
907
+ var $L100 = $L('"');
908
+ var $L101 = $L("else");
909
+ var $L102 = $L("export");
910
+ var $L103 = $L("for");
911
+ var $L104 = $L("from");
912
+ var $L105 = $L("function");
913
+ var $L106 = $L("get");
914
+ var $L107 = $L("set");
915
+ var $L108 = $L("if");
916
+ var $L109 = $L(" ");
917
+ var $L110 = $L("let");
918
+ var $L111 = $L("const");
919
+ var $L112 = $L("loop");
920
+ var $L113 = $L("new");
921
+ var $L114 = $L("not");
922
+ var $L115 = $L("{");
923
+ var $L116 = $L("[");
924
+ var $L117 = $L("(");
925
+ var $L118 = $L("?");
926
+ var $L119 = $L("return");
927
+ var $L120 = $L("'");
928
+ var $L121 = $L("static");
929
+ var $L122 = $L("${");
930
+ var $L123 = $L("switch");
931
+ var $L124 = $L("target");
932
+ var $L125 = $L("then");
933
+ var $L126 = $L("throw");
934
+ var $L127 = $L('"""');
935
+ var $L128 = $L("'''");
936
+ var $L129 = $L("```");
937
+ var $L130 = $L("try");
938
+ var $L131 = $L("typeof");
939
+ var $L132 = $L("unless");
940
+ var $L133 = $L("until");
941
+ var $L134 = $L("var");
942
+ var $L135 = $L("void");
943
+ var $L136 = $L("when");
944
+ var $L137 = $L("while");
945
+ var $L138 = $L("yield");
946
+ var $L139 = $L("/>");
947
+ var $L140 = $L("</");
948
+ var $L141 = $L("<>");
949
+ var $L142 = $L("</>");
950
+ var $L143 = $L("declare");
951
+ var $L144 = $L("type");
952
+ var $L145 = $L("interface");
953
+ var $L146 = $L("namespace");
954
+ var $L147 = $L("readonly");
955
+ var $L148 = $L("asserts");
956
+ var $L149 = $L("keyof");
957
+ var $L150 = $L("infer");
958
+ var $L151 = $L("[]");
959
+ var $L152 = $L("civet");
960
+ var $L153 = $L(" ");
961
+ var $L154 = $L(" ");
958
962
  var $R0 = $R(new RegExp("(of|then|when)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
959
963
  var $R1 = $R(new RegExp("[&]", "suy"));
960
964
  var $R2 = $R(new RegExp("[!~+-]+", "suy"));
@@ -982,26 +986,27 @@ var Civet = (() => {
982
986
  var $R24 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
983
987
  var $R25 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
984
988
  var $R26 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
985
- var $R27 = $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|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
986
- var $R28 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
987
- var $R29 = $R(new RegExp(".", "suy"));
988
- var $R30 = $R(new RegExp("#(?!##)([^\\r\\n]*)", "suy"));
989
- var $R31 = $R(new RegExp("[^\\r\\n]", "suy"));
990
- var $R32 = $R(new RegExp("[ \\t]+", "suy"));
991
- var $R33 = $R(new RegExp("[\\s]+", "suy"));
992
- var $R34 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
993
- var $R35 = $R(new RegExp("\\s", "suy"));
994
- var $R36 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
995
- var $R37 = $R(new RegExp('"[^"]*"', "suy"));
996
- var $R38 = $R(new RegExp("'[^']*'", "suy"));
997
- var $R39 = $R(new RegExp("[^{}<>]+", "suy"));
998
- var $R40 = $R(new RegExp("[+-]?", "suy"));
999
- var $R41 = $R(new RegExp("[+-]", "suy"));
1000
- var $R42 = $R(new RegExp("#![^\\r\\n]*", "suy"));
1001
- var $R43 = $R(new RegExp("[\\t ]*", "suy"));
1002
- var $R44 = $R(new RegExp("[\\s]*", "suy"));
1003
- var $R45 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1004
- var $R46 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
989
+ var $R27 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
990
+ var $R28 = $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|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
991
+ var $R29 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
992
+ var $R30 = $R(new RegExp(".", "suy"));
993
+ var $R31 = $R(new RegExp("#(?!##)([^\\r\\n]*)", "suy"));
994
+ var $R32 = $R(new RegExp("[^\\r\\n]", "suy"));
995
+ var $R33 = $R(new RegExp("[ \\t]+", "suy"));
996
+ var $R34 = $R(new RegExp("[\\s]+", "suy"));
997
+ var $R35 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
998
+ var $R36 = $R(new RegExp("\\s", "suy"));
999
+ var $R37 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
1000
+ var $R38 = $R(new RegExp('"[^"]*"', "suy"));
1001
+ var $R39 = $R(new RegExp("'[^']*'", "suy"));
1002
+ var $R40 = $R(new RegExp("[^{}<>]+", "suy"));
1003
+ var $R41 = $R(new RegExp("[+-]?", "suy"));
1004
+ var $R42 = $R(new RegExp("[+-]", "suy"));
1005
+ var $R43 = $R(new RegExp("#![^\\r\\n]*", "suy"));
1006
+ var $R44 = $R(new RegExp("[\\t ]*", "suy"));
1007
+ var $R45 = $R(new RegExp("[\\s]*", "suy"));
1008
+ var $R46 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1009
+ var $R47 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
1005
1010
  var Program$0 = $TS($S(Reset, Init, __, $Q(TopLevelStatement), __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1006
1011
  var statements = $4;
1007
1012
  module.processProgram(statements);
@@ -1222,13 +1227,17 @@ var Civet = (() => {
1222
1227
  return result;
1223
1228
  }
1224
1229
  });
1230
+ var UnaryExpression$1 = $TS($S(CoffeeDoEnabled, Do, __, ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
1231
+ var ws = $3;
1232
+ var exp = $4;
1233
+ module.insertTrimmingSpace(ws, "");
1234
+ return ["(", ws, exp, ")()"];
1235
+ });
1225
1236
  function UnaryExpression(state) {
1226
- if (state.verbose)
1227
- console.log("ENTER:", "UnaryExpression");
1228
1237
  if (state.tokenize) {
1229
- return $TOKEN("UnaryExpression", state, UnaryExpression$0(state));
1238
+ return $TOKEN("UnaryExpression", state, UnaryExpression$0(state) || UnaryExpression$1(state));
1230
1239
  } else {
1231
- return UnaryExpression$0(state);
1240
+ return UnaryExpression$0(state) || UnaryExpression$1(state);
1232
1241
  }
1233
1242
  }
1234
1243
  var UnaryPostfix$0 = QuestionMark;
@@ -1472,7 +1481,7 @@ var Civet = (() => {
1472
1481
  var PrimaryExpression$6 = ClassExpression;
1473
1482
  var PrimaryExpression$7 = RegularExpressionLiteral;
1474
1483
  var PrimaryExpression$8 = TemplateLiteral;
1475
- var PrimaryExpression$9 = $S(OpenParen, ExtendedExpression, __, CloseParen);
1484
+ var PrimaryExpression$9 = ParenthesizedExpression;
1476
1485
  var PrimaryExpression$10 = JSXElement;
1477
1486
  var PrimaryExpression$11 = JSXFragment;
1478
1487
  function PrimaryExpression(state) {
@@ -1482,6 +1491,23 @@ var Civet = (() => {
1482
1491
  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);
1483
1492
  }
1484
1493
  }
1494
+ var ParenthesizedExpression$0 = $TS($S(OpenParen, ExtendedExpression, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4) {
1495
+ var exp = $2;
1496
+ return {
1497
+ type: "ParenthesizedExpression",
1498
+ expression: exp,
1499
+ children: $0
1500
+ };
1501
+ });
1502
+ function ParenthesizedExpression(state) {
1503
+ if (state.verbose)
1504
+ console.log("ENTER:", "ParenthesizedExpression");
1505
+ if (state.tokenize) {
1506
+ return $TOKEN("ParenthesizedExpression", state, ParenthesizedExpression$0(state));
1507
+ } else {
1508
+ return ParenthesizedExpression$0(state);
1509
+ }
1510
+ }
1485
1511
  var ClassDeclaration$0 = ClassExpression;
1486
1512
  function ClassDeclaration(state) {
1487
1513
  if (state.verbose)
@@ -3172,14 +3198,8 @@ var Civet = (() => {
3172
3198
  var UnlessClause$0 = $TS($S(Unless, Condition), function($skip, $loc, $0, $1, $2) {
3173
3199
  var kind = $1;
3174
3200
  var condition = $2;
3175
- condition.forEach((c) => {
3176
- if (!c)
3177
- return;
3178
- if (c.token === "(")
3179
- c.token = "(!(";
3180
- if (c.token === ")")
3181
- c.token = "))";
3182
- });
3201
+ condition.children.unshift("(!");
3202
+ condition.children.push(")");
3183
3203
  kind.token = "if";
3184
3204
  return {
3185
3205
  type: "IfStatement",
@@ -3262,7 +3282,9 @@ var Civet = (() => {
3262
3282
  }
3263
3283
  }
3264
3284
  var IterationStatement$0 = LoopStatement;
3265
- var IterationStatement$1 = DoWhileStatement;
3285
+ var IterationStatement$1 = $T($S($N(CoffeeDoEnabled), DoWhileStatement), function(value) {
3286
+ return value[1];
3287
+ });
3266
3288
  var IterationStatement$2 = WhileStatement;
3267
3289
  var IterationStatement$3 = ForStatement;
3268
3290
  function IterationStatement(state) {
@@ -3326,14 +3348,14 @@ var Civet = (() => {
3326
3348
  return WhileStatement$0(state);
3327
3349
  }
3328
3350
  }
3329
- var WhileClause$0 = $TS($S($C(While, Until), Condition), function($skip, $loc, $0, $1, $2) {
3351
+ var WhileClause$0 = $TS($S($C(While, Until), $Q(TrailingComment), Condition), function($skip, $loc, $0, $1, $2, $3) {
3330
3352
  var kind = $1;
3331
- var cond = $2;
3353
+ var ws = $2;
3354
+ var cond = $3;
3332
3355
  if (kind.token === "until") {
3333
- cond[1] = "(!(";
3334
- cond[cond.length - 1] = "))";
3335
3356
  kind.token = "while";
3336
- $0 = [kind, cond];
3357
+ cond.children.unshift("(!");
3358
+ cond.children.push(")");
3337
3359
  }
3338
3360
  return {
3339
3361
  type: "IterationStatement",
@@ -3423,20 +3445,30 @@ var Civet = (() => {
3423
3445
  return WhenCondition$0(state);
3424
3446
  }
3425
3447
  }
3426
- var CoffeeForStatementParameters$0 = $TS($S($E($S(Await, __)), InsertOpenParen, CoffeeForDeclaration, __, $C(In, Of, From), ExtendedExpression, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
3448
+ var CoffeeForStatementParameters$0 = $TS($S($E($S(Await, __)), InsertOpenParen, CoffeeForDeclaration, __, $C(In, Of, From), ExtendedExpression, $E($S(__, By, ExtendedExpression)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
3449
+ var open = $2;
3427
3450
  var declaration = $3;
3428
3451
  var kind = $5;
3429
3452
  var exp = $6;
3453
+ var step = $7;
3454
+ var close = $8;
3430
3455
  let blockPrefix = [];
3456
+ const indent = "".padStart((module.currentIndent + 1) * 2);
3431
3457
  if (kind.token === "from") {
3458
+ if (step) {
3459
+ throw new Error("Can't use 'by' with 'from' in CoffeeScript for loops");
3460
+ }
3432
3461
  kind.token = "of";
3433
3462
  } else if (kind.token === "of") {
3463
+ if (step) {
3464
+ throw new Error("Can't use 'by' with 'of' in CoffeeScript for loops");
3465
+ }
3434
3466
  module.insertTrimmingSpace(declaration, "");
3435
3467
  module.insertTrimmingSpace(exp, "");
3436
3468
  if (declaration.own) {
3437
- const indent = "".padStart((module.currentIndent + 1) * 2);
3469
+ const indent2 = "".padStart((module.currentIndent + 1) * 2);
3438
3470
  const hasPropRef = module.getHasPropRef();
3439
- blockPrefix.push([indent, "if (!", hasPropRef, ".call(", exp, ", ", declaration, ")) continue\n"]);
3471
+ blockPrefix.push([indent2, "if (!", hasPropRef, ".call(", exp, ", ", declaration, ")) continue\n"]);
3440
3472
  }
3441
3473
  kind.token = "in ";
3442
3474
  } else if (kind.token === "in") {
@@ -3448,10 +3480,79 @@ var Civet = (() => {
3448
3480
  type: "Ref",
3449
3481
  base: "len"
3450
3482
  };
3451
- const expRef = exp.type === "Identifier" ? exp : {
3452
- type: "Ref",
3453
- base: "ref"
3454
- };
3483
+ let expRef;
3484
+ switch (exp.type) {
3485
+ case "Identifier":
3486
+ expRef = exp;
3487
+ break;
3488
+ case "RangeExpression": {
3489
+ const { start, end, inclusive } = exp;
3490
+ const stepExp = step?.[2];
3491
+ let stepRef;
3492
+ if (stepExp) {
3493
+ module.insertTrimmingSpace(stepExp, "");
3494
+ if (stepExp.type === "Literal") {
3495
+ stepRef = stepExp;
3496
+ } else {
3497
+ stepRef = {
3498
+ type: "Ref",
3499
+ base: "step"
3500
+ };
3501
+ }
3502
+ }
3503
+ let startRef, endRef;
3504
+ if (start.type === "Literal") {
3505
+ startRef = start;
3506
+ } else if (start.type === "Identifier") {
3507
+ startRef = start;
3508
+ } else {
3509
+ startRef = {
3510
+ type: "Ref",
3511
+ base: "ref"
3512
+ };
3513
+ }
3514
+ if (end.type === "Literal") {
3515
+ endRef = end;
3516
+ } else if (end.type === "Identifier") {
3517
+ endRef = end;
3518
+ } else {
3519
+ endRef = {
3520
+ type: "Ref",
3521
+ base: "ref"
3522
+ };
3523
+ }
3524
+ const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
3525
+ const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
3526
+ const varRef2 = declaration;
3527
+ const ascDec = stepRef ? stepRef !== stepExp ? [", step = ", stepExp] : [] : [", asc = ", startRef, " <= ", endRef];
3528
+ declaration = {
3529
+ type: "Declaration",
3530
+ children: ["let ", ...startRefDec, ...endRefDec, counterRef, " = ", varRef2, " = ", startRef, ...ascDec],
3531
+ names: []
3532
+ };
3533
+ blockPrefix.push([{
3534
+ type: "AssignmentExpression",
3535
+ children: [],
3536
+ names: varRef2.names
3537
+ }]);
3538
+ const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
3539
+ const condition = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ["asc ? ", ...counterPart];
3540
+ const increment = stepRef ? [varRef2, " = ", counterRef, " += ", stepRef] : [varRef2, " = asc ? ++", counterRef, " : --", counterRef];
3541
+ return {
3542
+ declaration,
3543
+ children: [$1, open, declaration, "; ", ...condition, "; ", ...increment, close],
3544
+ blockPrefix
3545
+ };
3546
+ }
3547
+ default:
3548
+ expRef = {
3549
+ type: "Ref",
3550
+ base: "ref"
3551
+ };
3552
+ }
3553
+ if (step) {
3554
+ throw new Error("by clause not yet implement in non-range for in loops");
3555
+ }
3455
3556
  const varRef = declaration;
3456
3557
  module.insertTrimmingSpace(exp, "");
3457
3558
  const expRefDec = expRef !== exp ? [expRef, " = ", exp, ", "] : [];
@@ -3460,7 +3561,6 @@ var Civet = (() => {
3460
3561
  children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", expRef, ".length"],
3461
3562
  names: []
3462
3563
  };
3463
- const indent = "".padStart((module.currentIndent + 1) * 2);
3464
3564
  blockPrefix.push([{
3465
3565
  type: "AssignmentExpression",
3466
3566
  children: [indent, varRef, " = ", expRef, "[", counterRef, "]\n"],
@@ -3468,7 +3568,7 @@ var Civet = (() => {
3468
3568
  }]);
3469
3569
  return {
3470
3570
  declaration,
3471
- children: [$1, $2, declaration, "; ", counterRef, " < ", lenRef, "; ", counterRef, "++", $7],
3571
+ children: [$1, open, declaration, "; ", counterRef, " < ", lenRef, "; ", counterRef, "++", close],
3472
3572
  blockPrefix
3473
3573
  };
3474
3574
  }
@@ -3805,10 +3905,18 @@ var Civet = (() => {
3805
3905
  return CatchParameter$0(state) || CatchParameter$1(state);
3806
3906
  }
3807
3907
  }
3808
- var Condition$0 = $S(__, OpenParen, ExtendedExpression, __, CloseParen);
3809
- var Condition$1 = $TS($S($N(EOS), __, InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
3810
- $0.shift();
3811
- return $0;
3908
+ var Condition$0 = $T($S(ParenthesizedExpression, $N($S($Q(TrailingComment), $C(BinaryOp, AssignmentOp)))), function(value) {
3909
+ return value[0];
3910
+ });
3911
+ var Condition$1 = $TS($S(InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3) {
3912
+ var exp = $2;
3913
+ if (exp.type === "ParenthesizedExpression")
3914
+ return exp;
3915
+ module.insertTrimmingSpace(exp, "");
3916
+ return {
3917
+ type: "ParenthesizedExpression",
3918
+ children: $0
3919
+ };
3812
3920
  });
3813
3921
  function Condition(state) {
3814
3922
  if (state.tokenize) {
@@ -4617,12 +4725,13 @@ var Civet = (() => {
4617
4725
  }
4618
4726
  var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R25, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
4619
4727
  var ReservedWord$1 = $S(CoffeeIsntEnabled, $R$0($EXPECT($R26, fail, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")));
4620
- var ReservedWord$2 = $R$0($EXPECT($R27, 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|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
4728
+ var ReservedWord$2 = $S(CoffeeForLoopsEnabled, $R$0($EXPECT($R27, fail, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")));
4729
+ var ReservedWord$3 = $R$0($EXPECT($R28, 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|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
4621
4730
  function ReservedWord(state) {
4622
4731
  if (state.tokenize) {
4623
- return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state));
4732
+ return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state));
4624
4733
  } else {
4625
- return ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state);
4734
+ return ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state) || ReservedWord$3(state);
4626
4735
  }
4627
4736
  }
4628
4737
  var Comment$0 = MultiLineComment;
@@ -4634,7 +4743,7 @@ var Civet = (() => {
4634
4743
  return Comment$0(state) || Comment$1(state);
4635
4744
  }
4636
4745
  }
4637
- var SingleLineComment$0 = $TR($EXPECT($R28, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4746
+ var SingleLineComment$0 = $TR($EXPECT($R29, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4638
4747
  return { $loc, token: $0 };
4639
4748
  });
4640
4749
  var SingleLineComment$1 = $S(CoffeeCommentEnabled, CoffeeSingleLineComment);
@@ -4654,7 +4763,7 @@ var Civet = (() => {
4654
4763
  return MultiLineComment$0(state) || MultiLineComment$1(state);
4655
4764
  }
4656
4765
  }
4657
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R29, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
4766
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R30, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
4658
4767
  return { $loc, token: $1 };
4659
4768
  });
4660
4769
  function JSMultiLineComment(state) {
@@ -4666,7 +4775,7 @@ var Civet = (() => {
4666
4775
  return JSMultiLineComment$0(state);
4667
4776
  }
4668
4777
  }
4669
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R30, fail, "CoffeeSingleLineComment /#(?!##)([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4778
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R31, fail, "CoffeeSingleLineComment /#(?!##)([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4670
4779
  return { $loc, token: `//${$1}` };
4671
4780
  });
4672
4781
  function CoffeeSingleLineComment(state) {
@@ -4678,7 +4787,7 @@ var Civet = (() => {
4678
4787
  return CoffeeSingleLineComment$0(state);
4679
4788
  }
4680
4789
  }
4681
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R29, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
4790
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R30, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
4682
4791
  return { $loc, token: `/*${$2}*/` };
4683
4792
  });
4684
4793
  function CoffeeMultiLineComment(state) {
@@ -4690,7 +4799,7 @@ var Civet = (() => {
4690
4799
  return CoffeeMultiLineComment$0(state);
4691
4800
  }
4692
4801
  }
4693
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R31, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
4802
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R32, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
4694
4803
  return { $loc, token: $1 };
4695
4804
  });
4696
4805
  function InlineComment(state) {
@@ -4732,7 +4841,7 @@ var Civet = (() => {
4732
4841
  return _$0(state);
4733
4842
  }
4734
4843
  }
4735
- var NonNewlineWhitespace$0 = $TR($EXPECT($R32, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4844
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R33, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4736
4845
  return { $loc, token: $0 };
4737
4846
  });
4738
4847
  function NonNewlineWhitespace(state) {
@@ -4754,7 +4863,7 @@ var Civet = (() => {
4754
4863
  return __$0(state);
4755
4864
  }
4756
4865
  }
4757
- var Whitespace$0 = $TR($EXPECT($R33, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4866
+ var Whitespace$0 = $TR($EXPECT($R34, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4758
4867
  return { $loc, token: $0 };
4759
4868
  });
4760
4869
  function Whitespace(state) {
@@ -4789,7 +4898,7 @@ var Civet = (() => {
4789
4898
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
4790
4899
  }
4791
4900
  }
4792
- var NonIdContinue$0 = $R$0($EXPECT($R34, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
4901
+ var NonIdContinue$0 = $R$0($EXPECT($R35, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
4793
4902
  function NonIdContinue(state) {
4794
4903
  if (state.verbose)
4795
4904
  console.log("ENTER:", "NonIdContinue");
@@ -4871,7 +4980,19 @@ var Civet = (() => {
4871
4980
  return Backtick$0(state);
4872
4981
  }
4873
4982
  }
4874
- var Case$0 = $TS($S($EXPECT($L90, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4983
+ var By$0 = $TS($S($EXPECT($L90, fail, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4984
+ return { $loc, token: $1 };
4985
+ });
4986
+ function By(state) {
4987
+ if (state.verbose)
4988
+ console.log("ENTER:", "By");
4989
+ if (state.tokenize) {
4990
+ return $TOKEN("By", state, By$0(state));
4991
+ } else {
4992
+ return By$0(state);
4993
+ }
4994
+ }
4995
+ var Case$0 = $TS($S($EXPECT($L91, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4875
4996
  return { $loc, token: $1 };
4876
4997
  });
4877
4998
  function Case(state) {
@@ -4883,7 +5004,7 @@ var Civet = (() => {
4883
5004
  return Case$0(state);
4884
5005
  }
4885
5006
  }
4886
- var Catch$0 = $TV($EXPECT($L91, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
5007
+ var Catch$0 = $TV($EXPECT($L92, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
4887
5008
  return { $loc, token: $1 };
4888
5009
  });
4889
5010
  function Catch(state) {
@@ -4895,7 +5016,7 @@ var Civet = (() => {
4895
5016
  return Catch$0(state);
4896
5017
  }
4897
5018
  }
4898
- var Class$0 = $TV($EXPECT($L92, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
5019
+ var Class$0 = $TV($EXPECT($L93, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
4899
5020
  return { $loc, token: $1 };
4900
5021
  });
4901
5022
  function Class(state) {
@@ -4943,7 +5064,7 @@ var Civet = (() => {
4943
5064
  return CloseParen$0(state);
4944
5065
  }
4945
5066
  }
4946
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L93, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
5067
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L94, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
4947
5068
  return { $loc, token: "${" };
4948
5069
  });
4949
5070
  function CoffeeSubstitutionStart(state) {
@@ -4955,7 +5076,7 @@ var Civet = (() => {
4955
5076
  return CoffeeSubstitutionStart$0(state);
4956
5077
  }
4957
5078
  }
4958
- var Colon$0 = $TV($EXPECT($L94, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
5079
+ var Colon$0 = $TV($EXPECT($L95, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
4959
5080
  return { $loc, token: $1 };
4960
5081
  });
4961
5082
  function Colon(state) {
@@ -4991,7 +5112,7 @@ var Civet = (() => {
4991
5112
  return Default$0(state);
4992
5113
  }
4993
5114
  }
4994
- var Delete$0 = $TS($S($EXPECT($L95, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5115
+ var Delete$0 = $TS($S($EXPECT($L96, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4995
5116
  return { $loc, token: $1 };
4996
5117
  });
4997
5118
  function Delete(state) {
@@ -5003,7 +5124,7 @@ var Civet = (() => {
5003
5124
  return Delete$0(state);
5004
5125
  }
5005
5126
  }
5006
- var Do$0 = $TS($S($EXPECT($L96, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5127
+ var Do$0 = $TS($S($EXPECT($L97, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5007
5128
  return { $loc, token: $1 };
5008
5129
  });
5009
5130
  function Do(state) {
@@ -5027,7 +5148,7 @@ var Civet = (() => {
5027
5148
  return Dot$0(state);
5028
5149
  }
5029
5150
  }
5030
- var DotDot$0 = $TV($EXPECT($L97, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
5151
+ var DotDot$0 = $TV($EXPECT($L98, fail, 'DotDot ".."'), function($skip, $loc, $0, $1) {
5031
5152
  return { $loc, token: $1 };
5032
5153
  });
5033
5154
  function DotDot(state) {
@@ -5039,7 +5160,7 @@ var Civet = (() => {
5039
5160
  return DotDot$0(state);
5040
5161
  }
5041
5162
  }
5042
- var DotDotDot$0 = $TV($EXPECT($L98, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
5163
+ var DotDotDot$0 = $TV($EXPECT($L99, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
5043
5164
  return { $loc, token: $1 };
5044
5165
  });
5045
5166
  function DotDotDot(state) {
@@ -5051,7 +5172,7 @@ var Civet = (() => {
5051
5172
  return DotDotDot$0(state);
5052
5173
  }
5053
5174
  }
5054
- var DoubleQuote$0 = $TV($EXPECT($L99, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
5175
+ var DoubleQuote$0 = $TV($EXPECT($L100, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
5055
5176
  return { $loc, token: $1 };
5056
5177
  });
5057
5178
  function DoubleQuote(state) {
@@ -5063,7 +5184,7 @@ var Civet = (() => {
5063
5184
  return DoubleQuote$0(state);
5064
5185
  }
5065
5186
  }
5066
- var Else$0 = $TV($EXPECT($L100, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
5187
+ var Else$0 = $TV($EXPECT($L101, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
5067
5188
  return { $loc, token: $1 };
5068
5189
  });
5069
5190
  function Else(state) {
@@ -5087,7 +5208,7 @@ var Civet = (() => {
5087
5208
  return Equals$0(state);
5088
5209
  }
5089
5210
  }
5090
- var Export$0 = $TS($S($EXPECT($L101, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5211
+ var Export$0 = $TS($S($EXPECT($L102, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5091
5212
  return { $loc, token: $1 };
5092
5213
  });
5093
5214
  function Export(state) {
@@ -5099,7 +5220,7 @@ var Civet = (() => {
5099
5220
  return Export$0(state);
5100
5221
  }
5101
5222
  }
5102
- var For$0 = $TS($S($EXPECT($L102, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5223
+ var For$0 = $TS($S($EXPECT($L103, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5103
5224
  return { $loc, token: $1 };
5104
5225
  });
5105
5226
  function For(state) {
@@ -5111,7 +5232,7 @@ var Civet = (() => {
5111
5232
  return For$0(state);
5112
5233
  }
5113
5234
  }
5114
- var From$0 = $TS($S($EXPECT($L103, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5235
+ var From$0 = $TS($S($EXPECT($L104, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5115
5236
  return { $loc, token: $1 };
5116
5237
  });
5117
5238
  function From(state) {
@@ -5123,7 +5244,7 @@ var Civet = (() => {
5123
5244
  return From$0(state);
5124
5245
  }
5125
5246
  }
5126
- var Function$0 = $TV($EXPECT($L104, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
5247
+ var Function$0 = $TV($EXPECT($L105, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
5127
5248
  return { $loc, token: $1 };
5128
5249
  });
5129
5250
  function Function(state) {
@@ -5135,7 +5256,7 @@ var Civet = (() => {
5135
5256
  return Function$0(state);
5136
5257
  }
5137
5258
  }
5138
- var GetOrSet$0 = $TS($S($C($EXPECT($L105, fail, 'GetOrSet "get"'), $EXPECT($L106, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5259
+ var GetOrSet$0 = $TS($S($C($EXPECT($L106, fail, 'GetOrSet "get"'), $EXPECT($L107, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5139
5260
  return { $loc, token: $1 };
5140
5261
  });
5141
5262
  function GetOrSet(state) {
@@ -5147,7 +5268,7 @@ var Civet = (() => {
5147
5268
  return GetOrSet$0(state);
5148
5269
  }
5149
5270
  }
5150
- var If$0 = $TV($TEXT($S($EXPECT($L107, fail, 'If "if"'), $E($EXPECT($L108, fail, 'If " "')))), function($skip, $loc, $0, $1) {
5271
+ var If$0 = $TV($TEXT($S($EXPECT($L108, fail, 'If "if"'), $E($EXPECT($L109, fail, 'If " "')))), function($skip, $loc, $0, $1) {
5151
5272
  return { $loc, token: $1 };
5152
5273
  });
5153
5274
  function If(state) {
@@ -5159,7 +5280,7 @@ var Civet = (() => {
5159
5280
  return If$0(state);
5160
5281
  }
5161
5282
  }
5162
- var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R35, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
5283
+ var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R36, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
5163
5284
  return { $loc, token: $1 };
5164
5285
  });
5165
5286
  function Import(state) {
@@ -5183,7 +5304,7 @@ var Civet = (() => {
5183
5304
  return In$0(state);
5184
5305
  }
5185
5306
  }
5186
- var LetOrConst$0 = $TV($C($EXPECT($L109, fail, 'LetOrConst "let"'), $EXPECT($L110, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
5307
+ var LetOrConst$0 = $TV($C($EXPECT($L110, fail, 'LetOrConst "let"'), $EXPECT($L111, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
5187
5308
  return { $loc, token: $1 };
5188
5309
  });
5189
5310
  function LetOrConst(state) {
@@ -5195,7 +5316,7 @@ var Civet = (() => {
5195
5316
  return LetOrConst$0(state);
5196
5317
  }
5197
5318
  }
5198
- var Loop$0 = $TS($S($EXPECT($L111, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5319
+ var Loop$0 = $TS($S($EXPECT($L112, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5199
5320
  return { $loc, token: "while(true)" };
5200
5321
  });
5201
5322
  function Loop(state) {
@@ -5207,7 +5328,7 @@ var Civet = (() => {
5207
5328
  return Loop$0(state);
5208
5329
  }
5209
5330
  }
5210
- var New$0 = $TV($EXPECT($L112, fail, 'New "new"'), function($skip, $loc, $0, $1) {
5331
+ var New$0 = $TV($EXPECT($L113, fail, 'New "new"'), function($skip, $loc, $0, $1) {
5211
5332
  return { $loc, token: $1 };
5212
5333
  });
5213
5334
  function New(state) {
@@ -5219,7 +5340,7 @@ var Civet = (() => {
5219
5340
  return New$0(state);
5220
5341
  }
5221
5342
  }
5222
- var Not$0 = $TS($S(CoffeeNotEnabled, $EXPECT($L113, fail, 'Not "not"'), NonIdContinue, $E($EXPECT($L108, fail, 'Not " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
5343
+ var Not$0 = $TS($S(CoffeeNotEnabled, $EXPECT($L114, fail, 'Not "not"'), NonIdContinue, $E($EXPECT($L109, fail, 'Not " "'))), function($skip, $loc, $0, $1, $2, $3, $4) {
5223
5344
  return { $loc, token: "!" };
5224
5345
  });
5225
5346
  function Not(state) {
@@ -5243,7 +5364,7 @@ var Civet = (() => {
5243
5364
  return Of$0(state);
5244
5365
  }
5245
5366
  }
5246
- var OpenBrace$0 = $TV($EXPECT($L114, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
5367
+ var OpenBrace$0 = $TV($EXPECT($L115, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
5247
5368
  return { $loc, token: $1 };
5248
5369
  });
5249
5370
  function OpenBrace(state) {
@@ -5255,7 +5376,7 @@ var Civet = (() => {
5255
5376
  return OpenBrace$0(state);
5256
5377
  }
5257
5378
  }
5258
- var OpenBracket$0 = $TV($EXPECT($L115, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
5379
+ var OpenBracket$0 = $TV($EXPECT($L116, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
5259
5380
  return { $loc, token: $1 };
5260
5381
  });
5261
5382
  function OpenBracket(state) {
@@ -5267,7 +5388,7 @@ var Civet = (() => {
5267
5388
  return OpenBracket$0(state);
5268
5389
  }
5269
5390
  }
5270
- var OpenParen$0 = $TV($EXPECT($L116, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
5391
+ var OpenParen$0 = $TV($EXPECT($L117, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
5271
5392
  return { $loc, token: $1 };
5272
5393
  });
5273
5394
  function OpenParen(state) {
@@ -5279,7 +5400,7 @@ var Civet = (() => {
5279
5400
  return OpenParen$0(state);
5280
5401
  }
5281
5402
  }
5282
- var QuestionMark$0 = $TV($EXPECT($L117, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
5403
+ var QuestionMark$0 = $TV($EXPECT($L118, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
5283
5404
  return { $loc, token: $1 };
5284
5405
  });
5285
5406
  function QuestionMark(state) {
@@ -5291,7 +5412,7 @@ var Civet = (() => {
5291
5412
  return QuestionMark$0(state);
5292
5413
  }
5293
5414
  }
5294
- var Return$0 = $TS($S($EXPECT($L118, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5415
+ var Return$0 = $TS($S($EXPECT($L119, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5295
5416
  return { $loc, token: $1 };
5296
5417
  });
5297
5418
  function Return(state) {
@@ -5315,7 +5436,7 @@ var Civet = (() => {
5315
5436
  return Semicolon$0(state);
5316
5437
  }
5317
5438
  }
5318
- var SingleQuote$0 = $TV($EXPECT($L119, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
5439
+ var SingleQuote$0 = $TV($EXPECT($L120, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
5319
5440
  return { $loc, token: $1 };
5320
5441
  });
5321
5442
  function SingleQuote(state) {
@@ -5339,10 +5460,10 @@ var Civet = (() => {
5339
5460
  return Star$0(state);
5340
5461
  }
5341
5462
  }
5342
- var Static$0 = $TV($EXPECT($L120, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
5463
+ var Static$0 = $TV($EXPECT($L121, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
5343
5464
  return { $loc, token: $1 };
5344
5465
  });
5345
- var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L116, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
5466
+ var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L117, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
5346
5467
  return { $loc, token: "static " };
5347
5468
  });
5348
5469
  function Static(state) {
@@ -5352,7 +5473,7 @@ var Civet = (() => {
5352
5473
  return Static$0(state) || Static$1(state);
5353
5474
  }
5354
5475
  }
5355
- var SubstitutionStart$0 = $TV($EXPECT($L121, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
5476
+ var SubstitutionStart$0 = $TV($EXPECT($L122, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
5356
5477
  return { $loc, token: $1 };
5357
5478
  });
5358
5479
  function SubstitutionStart(state) {
@@ -5364,7 +5485,7 @@ var Civet = (() => {
5364
5485
  return SubstitutionStart$0(state);
5365
5486
  }
5366
5487
  }
5367
- var Switch$0 = $TS($S($EXPECT($L122, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5488
+ var Switch$0 = $TS($S($EXPECT($L123, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5368
5489
  return { $loc, token: $1 };
5369
5490
  });
5370
5491
  function Switch(state) {
@@ -5376,7 +5497,7 @@ var Civet = (() => {
5376
5497
  return Switch$0(state);
5377
5498
  }
5378
5499
  }
5379
- var Target$0 = $TV($EXPECT($L123, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
5500
+ var Target$0 = $TV($EXPECT($L124, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
5380
5501
  return { $loc, token: $1 };
5381
5502
  });
5382
5503
  function Target(state) {
@@ -5388,7 +5509,7 @@ var Civet = (() => {
5388
5509
  return Target$0(state);
5389
5510
  }
5390
5511
  }
5391
- var Then$0 = $TS($S(__, $EXPECT($L124, fail, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
5512
+ var Then$0 = $TS($S(__, $EXPECT($L125, fail, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
5392
5513
  return { $loc, token: "" };
5393
5514
  });
5394
5515
  function Then(state) {
@@ -5400,7 +5521,7 @@ var Civet = (() => {
5400
5521
  return Then$0(state);
5401
5522
  }
5402
5523
  }
5403
- var Throw$0 = $TS($S($EXPECT($L125, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5524
+ var Throw$0 = $TS($S($EXPECT($L126, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5404
5525
  return { $loc, token: $1 };
5405
5526
  });
5406
5527
  function Throw(state) {
@@ -5412,7 +5533,7 @@ var Civet = (() => {
5412
5533
  return Throw$0(state);
5413
5534
  }
5414
5535
  }
5415
- var TripleDoubleQuote$0 = $TV($EXPECT($L126, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
5536
+ var TripleDoubleQuote$0 = $TV($EXPECT($L127, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
5416
5537
  return { $loc, token: "`" };
5417
5538
  });
5418
5539
  function TripleDoubleQuote(state) {
@@ -5424,7 +5545,7 @@ var Civet = (() => {
5424
5545
  return TripleDoubleQuote$0(state);
5425
5546
  }
5426
5547
  }
5427
- var TripleSingleQuote$0 = $TV($EXPECT($L127, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
5548
+ var TripleSingleQuote$0 = $TV($EXPECT($L128, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
5428
5549
  return { $loc, token: "`" };
5429
5550
  });
5430
5551
  function TripleSingleQuote(state) {
@@ -5436,7 +5557,7 @@ var Civet = (() => {
5436
5557
  return TripleSingleQuote$0(state);
5437
5558
  }
5438
5559
  }
5439
- var TripleTick$0 = $TV($EXPECT($L128, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
5560
+ var TripleTick$0 = $TV($EXPECT($L129, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
5440
5561
  return { $loc, token: "`" };
5441
5562
  });
5442
5563
  function TripleTick(state) {
@@ -5448,7 +5569,7 @@ var Civet = (() => {
5448
5569
  return TripleTick$0(state);
5449
5570
  }
5450
5571
  }
5451
- var Try$0 = $TV($EXPECT($L129, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
5572
+ var Try$0 = $TV($EXPECT($L130, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
5452
5573
  return { $loc, token: $1 };
5453
5574
  });
5454
5575
  function Try(state) {
@@ -5460,7 +5581,7 @@ var Civet = (() => {
5460
5581
  return Try$0(state);
5461
5582
  }
5462
5583
  }
5463
- var Typeof$0 = $TS($S($EXPECT($L130, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5584
+ var Typeof$0 = $TS($S($EXPECT($L131, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5464
5585
  return { $loc, token: $1 };
5465
5586
  });
5466
5587
  function Typeof(state) {
@@ -5472,7 +5593,7 @@ var Civet = (() => {
5472
5593
  return Typeof$0(state);
5473
5594
  }
5474
5595
  }
5475
- var Unless$0 = $TV($EXPECT($L131, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
5596
+ var Unless$0 = $TV($EXPECT($L132, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
5476
5597
  return { $loc, token: $1 };
5477
5598
  });
5478
5599
  function Unless(state) {
@@ -5484,7 +5605,7 @@ var Civet = (() => {
5484
5605
  return Unless$0(state);
5485
5606
  }
5486
5607
  }
5487
- var Until$0 = $TS($S($EXPECT($L132, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5608
+ var Until$0 = $TS($S($EXPECT($L133, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5488
5609
  return { $loc, token: $1 };
5489
5610
  });
5490
5611
  function Until(state) {
@@ -5496,7 +5617,7 @@ var Civet = (() => {
5496
5617
  return Until$0(state);
5497
5618
  }
5498
5619
  }
5499
- var Var$0 = $TV($EXPECT($L133, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
5620
+ var Var$0 = $TV($EXPECT($L134, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
5500
5621
  return { $loc, token: $1 };
5501
5622
  });
5502
5623
  function Var(state) {
@@ -5508,7 +5629,7 @@ var Civet = (() => {
5508
5629
  return Var$0(state);
5509
5630
  }
5510
5631
  }
5511
- var Void$0 = $TS($S($EXPECT($L134, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5632
+ var Void$0 = $TS($S($EXPECT($L135, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5512
5633
  return { $loc, token: $1 };
5513
5634
  });
5514
5635
  function Void(state) {
@@ -5520,7 +5641,7 @@ var Civet = (() => {
5520
5641
  return Void$0(state);
5521
5642
  }
5522
5643
  }
5523
- var When$0 = $TS($S($EXPECT($L135, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5644
+ var When$0 = $TS($S($EXPECT($L136, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5524
5645
  return { $loc, token: "case" };
5525
5646
  });
5526
5647
  function When(state) {
@@ -5532,7 +5653,7 @@ var Civet = (() => {
5532
5653
  return When$0(state);
5533
5654
  }
5534
5655
  }
5535
- var While$0 = $TS($S($EXPECT($L136, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5656
+ var While$0 = $TS($S($EXPECT($L137, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5536
5657
  return { $loc, token: $1 };
5537
5658
  });
5538
5659
  function While(state) {
@@ -5544,7 +5665,7 @@ var Civet = (() => {
5544
5665
  return While$0(state);
5545
5666
  }
5546
5667
  }
5547
- var Yield$0 = $TS($S($EXPECT($L137, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5668
+ var Yield$0 = $TS($S($EXPECT($L138, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
5548
5669
  return { $loc, token: $1 };
5549
5670
  });
5550
5671
  function Yield(state) {
@@ -5570,7 +5691,7 @@ var Civet = (() => {
5570
5691
  return JSXElement$0(state) || JSXElement$1(state);
5571
5692
  }
5572
5693
  }
5573
- var JSXSelfClosingElement$0 = $S($EXPECT($L4, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L138, fail, 'JSXSelfClosingElement "/>"'));
5694
+ var JSXSelfClosingElement$0 = $S($EXPECT($L4, fail, 'JSXSelfClosingElement "<"'), $TEXT(JSXElementName), $E(JSXAttributes), __, $EXPECT($L139, fail, 'JSXSelfClosingElement "/>"'));
5574
5695
  function JSXSelfClosingElement(state) {
5575
5696
  if (state.verbose)
5576
5697
  console.log("ENTER:", "JSXSelfClosingElement");
@@ -5590,7 +5711,7 @@ var Civet = (() => {
5590
5711
  return JSXOpeningElement$0(state);
5591
5712
  }
5592
5713
  }
5593
- var JSXClosingElement$0 = $S($EXPECT($L139, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L56, fail, 'JSXClosingElement ">"'));
5714
+ var JSXClosingElement$0 = $S($EXPECT($L140, fail, 'JSXClosingElement "</"'), __, $TEXT(JSXElementName), __, $EXPECT($L56, fail, 'JSXClosingElement ">"'));
5594
5715
  function JSXClosingElement(state) {
5595
5716
  if (state.verbose)
5596
5717
  console.log("ENTER:", "JSXClosingElement");
@@ -5600,7 +5721,7 @@ var Civet = (() => {
5600
5721
  return JSXClosingElement$0(state);
5601
5722
  }
5602
5723
  }
5603
- var JSXFragment$0 = $S($EXPECT($L140, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L141, fail, 'JSXFragment "</>"'));
5724
+ var JSXFragment$0 = $S($EXPECT($L141, fail, 'JSXFragment "<>"'), $E(JSXChildren), $EXPECT($L142, fail, 'JSXFragment "</>"'));
5604
5725
  function JSXFragment(state) {
5605
5726
  if (state.verbose)
5606
5727
  console.log("ENTER:", "JSXFragment");
@@ -5620,7 +5741,7 @@ var Civet = (() => {
5620
5741
  return JSXElementName$0(state);
5621
5742
  }
5622
5743
  }
5623
- var JSXIdentifierName$0 = $R$0($EXPECT($R36, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
5744
+ var JSXIdentifierName$0 = $R$0($EXPECT($R37, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
5624
5745
  function JSXIdentifierName(state) {
5625
5746
  if (state.verbose)
5626
5747
  console.log("ENTER:", "JSXIdentifierName");
@@ -5669,8 +5790,8 @@ var Civet = (() => {
5669
5790
  return JSXAttributeInitializer$0(state);
5670
5791
  }
5671
5792
  }
5672
- var JSXAttributeValue$0 = $R$0($EXPECT($R37, fail, 'JSXAttributeValue /"[^"]*"/'));
5673
- var JSXAttributeValue$1 = $R$0($EXPECT($R38, fail, "JSXAttributeValue /'[^']*'/"));
5793
+ var JSXAttributeValue$0 = $R$0($EXPECT($R38, fail, 'JSXAttributeValue /"[^"]*"/'));
5794
+ var JSXAttributeValue$1 = $R$0($EXPECT($R39, fail, "JSXAttributeValue /'[^']*'/"));
5674
5795
  var JSXAttributeValue$2 = $S(OpenBrace, ExtendedExpression, __, CloseBrace);
5675
5796
  var JSXAttributeValue$3 = JSXElement;
5676
5797
  var JSXAttributeValue$4 = JSXFragment;
@@ -5702,7 +5823,7 @@ var Civet = (() => {
5702
5823
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
5703
5824
  }
5704
5825
  }
5705
- var JSXText$0 = $R$0($EXPECT($R39, fail, "JSXText /[^{}<>]+/"));
5826
+ var JSXText$0 = $R$0($EXPECT($R40, fail, "JSXText /[^{}<>]+/"));
5706
5827
  function JSXText(state) {
5707
5828
  if (state.verbose)
5708
5829
  console.log("ENTER:", "JSXText");
@@ -5734,7 +5855,7 @@ var Civet = (() => {
5734
5855
  return TypeDeclaration$0(state);
5735
5856
  }
5736
5857
  }
5737
- var TypeDeclarationModifier$0 = $S($EXPECT($L142, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
5858
+ var TypeDeclarationModifier$0 = $S($EXPECT($L143, fail, 'TypeDeclarationModifier "declare"'), NonIdContinue);
5738
5859
  var TypeDeclarationModifier$1 = Export;
5739
5860
  function TypeDeclarationModifier(state) {
5740
5861
  if (state.tokenize) {
@@ -5754,7 +5875,7 @@ var Civet = (() => {
5754
5875
  return TypeDeclarationRest$0(state) || TypeDeclarationRest$1(state) || TypeDeclarationRest$2(state) || TypeDeclarationRest$3(state);
5755
5876
  }
5756
5877
  }
5757
- var TypeKeyword$0 = $S($EXPECT($L143, fail, 'TypeKeyword "type"'), NonIdContinue);
5878
+ var TypeKeyword$0 = $S($EXPECT($L144, fail, 'TypeKeyword "type"'), NonIdContinue);
5758
5879
  function TypeKeyword(state) {
5759
5880
  if (state.verbose)
5760
5881
  console.log("ENTER:", "TypeKeyword");
@@ -5764,7 +5885,7 @@ var Civet = (() => {
5764
5885
  return TypeKeyword$0(state);
5765
5886
  }
5766
5887
  }
5767
- var Interface$0 = $S($EXPECT($L144, fail, 'Interface "interface"'), NonIdContinue);
5888
+ var Interface$0 = $S($EXPECT($L145, fail, 'Interface "interface"'), NonIdContinue);
5768
5889
  function Interface(state) {
5769
5890
  if (state.verbose)
5770
5891
  console.log("ENTER:", "Interface");
@@ -5774,7 +5895,7 @@ var Civet = (() => {
5774
5895
  return Interface$0(state);
5775
5896
  }
5776
5897
  }
5777
- var Namespace$0 = $S($EXPECT($L145, fail, 'Namespace "namespace"'), NonIdContinue);
5898
+ var Namespace$0 = $S($EXPECT($L146, fail, 'Namespace "namespace"'), NonIdContinue);
5778
5899
  function Namespace(state) {
5779
5900
  if (state.verbose)
5780
5901
  console.log("ENTER:", "Namespace");
@@ -5874,7 +5995,7 @@ var Civet = (() => {
5874
5995
  return NestedTypeDeclaration$0(state);
5875
5996
  }
5876
5997
  }
5877
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R40, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L146, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R41, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
5998
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R41, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L147, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R42, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
5878
5999
  function TypeIndexSignature(state) {
5879
6000
  if (state.verbose)
5880
6001
  console.log("ENTER:", "TypeIndexSignature");
@@ -5905,7 +6026,7 @@ var Civet = (() => {
5905
6026
  return TypeSuffix$0(state);
5906
6027
  }
5907
6028
  }
5908
- var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L147, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
6029
+ var ReturnTypeSuffix$0 = $TS($S(__, Colon, $E($S(__, $EXPECT($L148, fail, 'ReturnTypeSuffix "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2, $3, $4) {
5909
6030
  if (!$3)
5910
6031
  $0.splice(2, 1);
5911
6032
  if ($1.length === 0)
@@ -5988,9 +6109,9 @@ var Civet = (() => {
5988
6109
  return TypeUnarySuffix$0(state) || TypeUnarySuffix$1(state);
5989
6110
  }
5990
6111
  }
5991
- var TypeUnaryOp$0 = $EXPECT($L148, fail, 'TypeUnaryOp "keyof"');
5992
- var TypeUnaryOp$1 = $EXPECT($L130, fail, 'TypeUnaryOp "typeof"');
5993
- var TypeUnaryOp$2 = $EXPECT($L149, fail, 'TypeUnaryOp "infer"');
6112
+ var TypeUnaryOp$0 = $EXPECT($L149, fail, 'TypeUnaryOp "keyof"');
6113
+ var TypeUnaryOp$1 = $EXPECT($L131, fail, 'TypeUnaryOp "typeof"');
6114
+ var TypeUnaryOp$2 = $EXPECT($L150, fail, 'TypeUnaryOp "infer"');
5994
6115
  function TypeUnaryOp(state) {
5995
6116
  if (state.tokenize) {
5996
6117
  return $TOKEN("TypeUnaryOp", state, TypeUnaryOp$0(state) || TypeUnaryOp$1(state) || TypeUnaryOp$2(state));
@@ -6080,10 +6201,10 @@ var Civet = (() => {
6080
6201
  }
6081
6202
  }
6082
6203
  var TypeLiteral$0 = Literal;
6083
- var TypeLiteral$1 = $TV($EXPECT($L134, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
6204
+ var TypeLiteral$1 = $TV($EXPECT($L135, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
6084
6205
  return { $loc, token: "void" };
6085
6206
  });
6086
- var TypeLiteral$2 = $TV($EXPECT($L150, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
6207
+ var TypeLiteral$2 = $TV($EXPECT($L151, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
6087
6208
  return { $loc, token: "[]" };
6088
6209
  });
6089
6210
  function TypeLiteral(state) {
@@ -6173,7 +6294,7 @@ var Civet = (() => {
6173
6294
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
6174
6295
  }
6175
6296
  }
6176
- var Shebang$0 = $S($R$0($EXPECT($R42, fail, "Shebang /#![^\\r\\n]*/")), EOL);
6297
+ var Shebang$0 = $S($R$0($EXPECT($R43, fail, "Shebang /#![^\\r\\n]*/")), EOL);
6177
6298
  function Shebang(state) {
6178
6299
  if (state.verbose)
6179
6300
  console.log("ENTER:", "Shebang");
@@ -6183,11 +6304,11 @@ var Civet = (() => {
6183
6304
  return Shebang$0(state);
6184
6305
  }
6185
6306
  }
6186
- var CivetPrologue$0 = $T($S($EXPECT($R43, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6307
+ var CivetPrologue$0 = $T($S($EXPECT($R44, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6187
6308
  var content = value[2];
6188
6309
  return content;
6189
6310
  });
6190
- var CivetPrologue$1 = $T($S($EXPECT($R43, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6311
+ var CivetPrologue$1 = $T($S($EXPECT($R44, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6191
6312
  var content = value[2];
6192
6313
  return content;
6193
6314
  });
@@ -6198,7 +6319,7 @@ var Civet = (() => {
6198
6319
  return CivetPrologue$0(state) || CivetPrologue$1(state);
6199
6320
  }
6200
6321
  }
6201
- var CivetPrologueContent$0 = $TS($S($EXPECT($L151, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R44, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
6322
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L152, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R45, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
6202
6323
  var options = $2;
6203
6324
  return {
6204
6325
  type: "CivetPrologue",
@@ -6215,7 +6336,7 @@ var Civet = (() => {
6215
6336
  return CivetPrologueContent$0(state);
6216
6337
  }
6217
6338
  }
6218
- var CivetOption$0 = $TR($EXPECT($R45, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6339
+ var CivetOption$0 = $TR($EXPECT($R46, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6219
6340
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
6220
6341
  if (l)
6221
6342
  return l.toUpperCase();
@@ -6233,7 +6354,7 @@ var Civet = (() => {
6233
6354
  return CivetOption$0(state);
6234
6355
  }
6235
6356
  }
6236
- var UnknownPrologue$0 = $S($R$0($EXPECT($R43, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
6357
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R44, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
6237
6358
  function UnknownPrologue(state) {
6238
6359
  if (state.verbose)
6239
6360
  console.log("ENTER:", "UnknownPrologue");
@@ -6262,7 +6383,7 @@ var Civet = (() => {
6262
6383
  return EOS$0(state);
6263
6384
  }
6264
6385
  }
6265
- var EOL$0 = $TR($EXPECT($R46, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6386
+ var EOL$0 = $TR($EXPECT($R47, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6266
6387
  return { $loc, token: $0 };
6267
6388
  });
6268
6389
  function EOL(state) {
@@ -6418,6 +6539,20 @@ var Civet = (() => {
6418
6539
  return InsertBreak$0(state);
6419
6540
  }
6420
6541
  }
6542
+ var CoffeeBooleansEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeBooleansEnabled ""'), function($skip, $loc, $0, $1) {
6543
+ if (module.config.coffeeBooleans)
6544
+ return;
6545
+ return $skip;
6546
+ });
6547
+ function CoffeeBooleansEnabled(state) {
6548
+ if (state.verbose)
6549
+ console.log("ENTER:", "CoffeeBooleansEnabled");
6550
+ if (state.tokenize) {
6551
+ return $TOKEN("CoffeeBooleansEnabled", state, CoffeeBooleansEnabled$0(state));
6552
+ } else {
6553
+ return CoffeeBooleansEnabled$0(state);
6554
+ }
6555
+ }
6421
6556
  var CoffeeCommentEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeCommentEnabled ""'), function($skip, $loc, $0, $1) {
6422
6557
  if (module.config.coffeeComment)
6423
6558
  return;
@@ -6432,18 +6567,18 @@ var Civet = (() => {
6432
6567
  return CoffeeCommentEnabled$0(state);
6433
6568
  }
6434
6569
  }
6435
- var CoffeeBooleansEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeBooleansEnabled ""'), function($skip, $loc, $0, $1) {
6436
- if (module.config.coffeeBooleans)
6570
+ var CoffeeDoEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeDoEnabled ""'), function($skip, $loc, $0, $1) {
6571
+ if (module.config.coffeeDo)
6437
6572
  return;
6438
6573
  return $skip;
6439
6574
  });
6440
- function CoffeeBooleansEnabled(state) {
6575
+ function CoffeeDoEnabled(state) {
6441
6576
  if (state.verbose)
6442
- console.log("ENTER:", "CoffeeBooleansEnabled");
6577
+ console.log("ENTER:", "CoffeeDoEnabled");
6443
6578
  if (state.tokenize) {
6444
- return $TOKEN("CoffeeBooleansEnabled", state, CoffeeBooleansEnabled$0(state));
6579
+ return $TOKEN("CoffeeDoEnabled", state, CoffeeDoEnabled$0(state));
6445
6580
  } else {
6446
- return CoffeeBooleansEnabled$0(state);
6581
+ return CoffeeDoEnabled$0(state);
6447
6582
  }
6448
6583
  }
6449
6584
  var CoffeeForLoopsEnabled$0 = $TV($EXPECT($L0, fail, 'CoffeeForLoopsEnabled ""'), function($skip, $loc, $0, $1) {
@@ -6524,6 +6659,7 @@ var Civet = (() => {
6524
6659
  autoVar: false,
6525
6660
  coffeeBooleans: false,
6526
6661
  coffeeComment: false,
6662
+ coffeeDo: false,
6527
6663
  coffeeEq: false,
6528
6664
  coffeeForLoops: false,
6529
6665
  coffeeInterpolation: false,
@@ -6576,6 +6712,7 @@ var Civet = (() => {
6576
6712
  this.autoVar = true;
6577
6713
  this.coffeeBooleans = true;
6578
6714
  this.coffeeComment = true;
6715
+ this.coffeeDo = true;
6579
6716
  this.coffeeEq = true;
6580
6717
  this.coffeeForLoops = true;
6581
6718
  this.coffeeInterpolation = true;
@@ -6586,6 +6723,7 @@ var Civet = (() => {
6586
6723
  this.autoVar = false;
6587
6724
  this.coffeeBooleans = false;
6588
6725
  this.coffeeComment = false;
6726
+ this.coffeeDo = false;
6589
6727
  this.coffeeEq = false;
6590
6728
  this.coffeeForLoops = false;
6591
6729
  this.coffeeInterpolation = false;
@@ -6994,7 +7132,7 @@ var Civet = (() => {
6994
7132
  return Init$0(state);
6995
7133
  }
6996
7134
  }
6997
- var Indent$0 = $TV($Q($C($EXPECT($L152, fail, 'Indent " "'), $EXPECT($L153, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
7135
+ var Indent$0 = $TV($Q($C($EXPECT($L153, fail, 'Indent " "'), $EXPECT($L154, fail, 'Indent "\\\\t"'))), function($skip, $loc, $0, $1) {
6998
7136
  const level = $1.length;
6999
7137
  return {
7000
7138
  $loc,