@danielx/civet 0.4.13 → 0.4.14

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
@@ -520,17 +520,21 @@ var Civet = (() => {
520
520
  UnaryOp,
521
521
  ModuleItem,
522
522
  StatementListItem,
523
- PostfixConditional,
523
+ PostfixStatement,
524
524
  Statement,
525
525
  EmptyStatement,
526
526
  BlockStatement,
527
527
  IfStatement,
528
+ IfClause,
529
+ UnlessClause,
528
530
  IterationStatement,
529
531
  LoopStatement,
532
+ LoopClause,
530
533
  DoWhileStatement,
531
534
  WhileStatement,
532
535
  WhileClause,
533
536
  ForStatement,
537
+ ForClause,
534
538
  ForStatementControl,
535
539
  ForInOfDeclaration,
536
540
  ForDeclaration,
@@ -636,6 +640,7 @@ var Civet = (() => {
636
640
  ConstructorShorthand,
637
641
  Default,
638
642
  Delete,
643
+ Do,
639
644
  Dot,
640
645
  DotDotDot,
641
646
  DoubleQuote,
@@ -672,9 +677,11 @@ var Civet = (() => {
672
677
  Try,
673
678
  Typeof,
674
679
  Unless,
680
+ Until,
675
681
  Var,
676
682
  Void,
677
683
  When,
684
+ While,
678
685
  Yield,
679
686
  JSXElement,
680
687
  JSXSelfClosingElement,
@@ -836,65 +843,65 @@ var Civet = (() => {
836
843
  var $L69 = $L("^");
837
844
  var $L70 = $L("|");
838
845
  var $L71 = $L(";");
839
- var $L72 = $L("do");
840
- var $L73 = $L("while");
841
- var $L74 = $L("until");
842
- var $L75 = $L("finally");
843
- var $L76 = $L("break");
844
- var $L77 = $L("continue");
845
- var $L78 = $L("debugger");
846
- var $L79 = $L("import type");
847
- var $L80 = $L("default");
848
- var $L81 = $L(":=");
849
- var $L82 = $L("/*");
850
- var $L83 = $L("*/");
851
- var $L84 = $L("###");
852
- var $L85 = $L("as");
853
- var $L86 = $L("async");
854
- var $L87 = $L("await");
855
- var $L88 = $L("`");
856
- var $L89 = $L("case");
857
- var $L90 = $L("catch");
858
- var $L91 = $L("class");
859
- var $L92 = $L("#{");
860
- var $L93 = $L(":");
861
- var $L94 = $L("delete");
862
- var $L95 = $L(".");
863
- var $L96 = $L("...");
864
- var $L97 = $L('"');
865
- var $L98 = $L("else");
866
- var $L99 = $L("export");
867
- var $L100 = $L("for");
868
- var $L101 = $L("from");
869
- var $L102 = $L("function");
870
- var $L103 = $L("get");
871
- var $L104 = $L("set");
872
- var $L105 = $L("if");
873
- var $L106 = $L("let");
874
- var $L107 = $L("const");
875
- var $L108 = $L("loop");
876
- var $L109 = $L("new");
877
- var $L110 = $L("of");
878
- var $L111 = $L("{");
879
- var $L112 = $L("[");
880
- var $L113 = $L("(");
881
- var $L114 = $L("?");
882
- var $L115 = $L("return");
883
- var $L116 = $L("'");
884
- var $L117 = $L("static");
885
- var $L118 = $L("${");
886
- var $L119 = $L("switch");
887
- var $L120 = $L("target");
888
- var $L121 = $L("throw");
889
- var $L122 = $L('"""');
890
- var $L123 = $L("'''");
891
- var $L124 = $L("```");
892
- var $L125 = $L("try");
893
- var $L126 = $L("typeof");
894
- var $L127 = $L("unless");
895
- var $L128 = $L("var");
896
- var $L129 = $L("void");
897
- var $L130 = $L("when");
846
+ var $L72 = $L("finally");
847
+ var $L73 = $L("break");
848
+ var $L74 = $L("continue");
849
+ var $L75 = $L("debugger");
850
+ var $L76 = $L("import type");
851
+ var $L77 = $L("default");
852
+ var $L78 = $L(":=");
853
+ var $L79 = $L("/*");
854
+ var $L80 = $L("*/");
855
+ var $L81 = $L("###");
856
+ var $L82 = $L("as");
857
+ var $L83 = $L("async");
858
+ var $L84 = $L("await");
859
+ var $L85 = $L("`");
860
+ var $L86 = $L("case");
861
+ var $L87 = $L("catch");
862
+ var $L88 = $L("class");
863
+ var $L89 = $L("#{");
864
+ var $L90 = $L(":");
865
+ var $L91 = $L("delete");
866
+ var $L92 = $L("do");
867
+ var $L93 = $L(".");
868
+ var $L94 = $L("...");
869
+ var $L95 = $L('"');
870
+ var $L96 = $L("else");
871
+ var $L97 = $L("export");
872
+ var $L98 = $L("for");
873
+ var $L99 = $L("from");
874
+ var $L100 = $L("function");
875
+ var $L101 = $L("get");
876
+ var $L102 = $L("set");
877
+ var $L103 = $L("if");
878
+ var $L104 = $L("let");
879
+ var $L105 = $L("const");
880
+ var $L106 = $L("loop");
881
+ var $L107 = $L("new");
882
+ var $L108 = $L("of");
883
+ var $L109 = $L("{");
884
+ var $L110 = $L("[");
885
+ var $L111 = $L("(");
886
+ var $L112 = $L("?");
887
+ var $L113 = $L("return");
888
+ var $L114 = $L("'");
889
+ var $L115 = $L("static");
890
+ var $L116 = $L("${");
891
+ var $L117 = $L("switch");
892
+ var $L118 = $L("target");
893
+ var $L119 = $L("throw");
894
+ var $L120 = $L('"""');
895
+ var $L121 = $L("'''");
896
+ var $L122 = $L("```");
897
+ var $L123 = $L("try");
898
+ var $L124 = $L("typeof");
899
+ var $L125 = $L("unless");
900
+ var $L126 = $L("until");
901
+ var $L127 = $L("var");
902
+ var $L128 = $L("void");
903
+ var $L129 = $L("when");
904
+ var $L130 = $L("while");
898
905
  var $L131 = $L("yield");
899
906
  var $L132 = $L("/>");
900
907
  var $L133 = $L("</");
@@ -936,7 +943,7 @@ var Civet = (() => {
936
943
  var $R21 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
937
944
  var $R22 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
938
945
  var $R23 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
939
- var $R24 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
946
+ var $R24 = $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"));
940
947
  var $R25 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
941
948
  var $R26 = $R(new RegExp(".", "suy"));
942
949
  var $R27 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
@@ -2437,49 +2444,36 @@ var Civet = (() => {
2437
2444
  return ModuleItem$0(state) || ModuleItem$1(state) || ModuleItem$2(state);
2438
2445
  }
2439
2446
  }
2440
- var StatementListItem$0 = $TS($S($C(Declaration, Statement), $E(PostfixConditional), Loc), function($skip, $loc, $0, $1, $2, $3) {
2447
+ var StatementListItem$0 = Declaration;
2448
+ var StatementListItem$1 = $TS($S(Statement, $Q(TrailingComment), $E(PostfixStatement)), function($skip, $loc, $0, $1, $2, $3) {
2441
2449
  var statement = $1;
2442
- var cond = $2;
2443
- var l = $3;
2444
- if (cond)
2445
- return [cond, statement, { $loc: l.$loc, token: "}" }];
2450
+ var ws = $2;
2451
+ var post = $3;
2452
+ if (post) {
2453
+ post.children.push(statement);
2454
+ if (!module.isWhitespaceOrEmpty(ws))
2455
+ post.children.push(ws);
2456
+ return post;
2457
+ }
2446
2458
  return statement;
2447
2459
  });
2448
2460
  function StatementListItem(state) {
2449
- if (state.verbose)
2450
- console.log("ENTER:", "StatementListItem");
2451
2461
  if (state.tokenize) {
2452
- return $TOKEN("StatementListItem", state, StatementListItem$0(state));
2462
+ return $TOKEN("StatementListItem", state, StatementListItem$0(state) || StatementListItem$1(state));
2453
2463
  } else {
2454
- return StatementListItem$0(state);
2464
+ return StatementListItem$0(state) || StatementListItem$1(state);
2455
2465
  }
2456
2466
  }
2457
- var PostfixConditional$0 = $TS($S($Q(TrailingComment), $C(If, Unless), NonIdContinue, Loc, ExpressionWithIndentedApplicationSuppressed, Loc), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2458
- var ws = $1;
2459
- var cond = $2;
2460
- var l1 = $4;
2461
- var exp = $5;
2462
- var l2 = $6;
2463
- let openParens = { $loc: l1.$loc, token: "(!(" };
2464
- let closingParens = { $loc: l2.$loc, token: "))" };
2465
- let space = { $loc: l2.$loc, token: " " };
2466
- let openingBrace = { $loc: l2.$loc, token: "{" };
2467
- if (cond.token === "if") {
2468
- cond.token = "if";
2469
- closingParens.token = ")";
2470
- openParens.token = "(";
2471
- } else {
2472
- cond.token = "if";
2473
- }
2474
- return [ws, cond, openParens, exp, closingParens, space, openingBrace];
2475
- });
2476
- function PostfixConditional(state) {
2477
- if (state.verbose)
2478
- console.log("ENTER:", "PostfixConditional");
2467
+ var PostfixStatement$0 = ForClause;
2468
+ var PostfixStatement$1 = IfClause;
2469
+ var PostfixStatement$2 = LoopClause;
2470
+ var PostfixStatement$3 = UnlessClause;
2471
+ var PostfixStatement$4 = WhileClause;
2472
+ function PostfixStatement(state) {
2479
2473
  if (state.tokenize) {
2480
- return $TOKEN("PostfixConditional", state, PostfixConditional$0(state));
2474
+ return $TOKEN("PostfixStatement", state, PostfixStatement$0(state) || PostfixStatement$1(state) || PostfixStatement$2(state) || PostfixStatement$3(state) || PostfixStatement$4(state));
2481
2475
  } else {
2482
- return PostfixConditional$0(state);
2476
+ return PostfixStatement$0(state) || PostfixStatement$1(state) || PostfixStatement$2(state) || PostfixStatement$3(state) || PostfixStatement$4(state);
2483
2477
  }
2484
2478
  }
2485
2479
  var Statement$0 = KeywordStatement;
@@ -2523,13 +2517,43 @@ var Civet = (() => {
2523
2517
  return BlockStatement$0(state);
2524
2518
  }
2525
2519
  }
2526
- var IfStatement$0 = $T($S(If, Condition, Block, $E($S(__, Else, Block))), function(value) {
2520
+ var IfStatement$0 = $TS($S(IfClause, Block, $E($S(__, Else, Block))), function($skip, $loc, $0, $1, $2, $3) {
2521
+ var clause = $1;
2522
+ var block = $2;
2523
+ var e = $3;
2524
+ clause.children.push(block);
2525
+ if (e)
2526
+ clause.children.push(e);
2527
+ return clause;
2528
+ });
2529
+ var IfStatement$1 = $TS($S(UnlessClause, Block), function($skip, $loc, $0, $1, $2) {
2530
+ var clause = $1;
2531
+ var block = $2;
2532
+ clause.children.push(block);
2533
+ return clause;
2534
+ });
2535
+ function IfStatement(state) {
2536
+ if (state.tokenize) {
2537
+ return $TOKEN("IfStatement", state, IfStatement$0(state) || IfStatement$1(state));
2538
+ } else {
2539
+ return IfStatement$0(state) || IfStatement$1(state);
2540
+ }
2541
+ }
2542
+ var IfClause$0 = $T($S(If, Condition), function(value) {
2527
2543
  return { "type": "IfStatement", "children": value };
2528
2544
  });
2529
- var IfStatement$1 = $TS($S(Unless, Condition, Block), function($skip, $loc, $0, $1, $2, $3) {
2545
+ function IfClause(state) {
2546
+ if (state.verbose)
2547
+ console.log("ENTER:", "IfClause");
2548
+ if (state.tokenize) {
2549
+ return $TOKEN("IfClause", state, IfClause$0(state));
2550
+ } else {
2551
+ return IfClause$0(state);
2552
+ }
2553
+ }
2554
+ var UnlessClause$0 = $TS($S(Unless, Condition), function($skip, $loc, $0, $1, $2) {
2530
2555
  var kind = $1;
2531
2556
  var condition = $2;
2532
- var block = $3;
2533
2557
  condition.forEach((c) => {
2534
2558
  if (!c)
2535
2559
  return;
@@ -2541,22 +2565,22 @@ var Civet = (() => {
2541
2565
  kind.token = "if";
2542
2566
  return {
2543
2567
  type: "IfStatement",
2544
- children: [kind, condition, block]
2568
+ children: [kind, condition]
2545
2569
  };
2546
2570
  });
2547
- function IfStatement(state) {
2571
+ function UnlessClause(state) {
2572
+ if (state.verbose)
2573
+ console.log("ENTER:", "UnlessClause");
2548
2574
  if (state.tokenize) {
2549
- return $TOKEN("IfStatement", state, IfStatement$0(state) || IfStatement$1(state));
2575
+ return $TOKEN("UnlessClause", state, UnlessClause$0(state));
2550
2576
  } else {
2551
- return IfStatement$0(state) || IfStatement$1(state);
2577
+ return UnlessClause$0(state);
2552
2578
  }
2553
2579
  }
2554
2580
  var IterationStatement$0 = LoopStatement;
2555
2581
  var IterationStatement$1 = DoWhileStatement;
2556
2582
  var IterationStatement$2 = WhileStatement;
2557
- var IterationStatement$3 = $T($S(ForStatement), function(value) {
2558
- return { "type": "IterationStatement", "children": value };
2559
- });
2583
+ var IterationStatement$3 = ForStatement;
2560
2584
  function IterationStatement(state) {
2561
2585
  if (state.tokenize) {
2562
2586
  return $TOKEN("IterationStatement", state, IterationStatement$0(state) || IterationStatement$1(state) || IterationStatement$2(state) || IterationStatement$3(state));
@@ -2564,8 +2588,11 @@ var Civet = (() => {
2564
2588
  return IterationStatement$0(state) || IterationStatement$1(state) || IterationStatement$2(state) || IterationStatement$3(state);
2565
2589
  }
2566
2590
  }
2567
- var LoopStatement$0 = $T($S(Loop, Block), function(value) {
2568
- return { "type": "IterationStatement", "children": value };
2591
+ var LoopStatement$0 = $TS($S(LoopClause, Block), function($skip, $loc, $0, $1, $2) {
2592
+ var clause = $1;
2593
+ var block = $2;
2594
+ clause.children.push(block);
2595
+ return clause;
2569
2596
  });
2570
2597
  function LoopStatement(state) {
2571
2598
  if (state.verbose)
@@ -2576,7 +2603,19 @@ var Civet = (() => {
2576
2603
  return LoopStatement$0(state);
2577
2604
  }
2578
2605
  }
2579
- var DoWhileStatement$0 = $T($S($EXPECT($L72, fail, 'DoWhileStatement "do"'), NonIdContinue, Block, __, WhileClause), function(value) {
2606
+ var LoopClause$0 = $T($S(Loop), function(value) {
2607
+ return { "type": "IterationStatement", "children": value };
2608
+ });
2609
+ function LoopClause(state) {
2610
+ if (state.verbose)
2611
+ console.log("ENTER:", "LoopClause");
2612
+ if (state.tokenize) {
2613
+ return $TOKEN("LoopClause", state, LoopClause$0(state));
2614
+ } else {
2615
+ return LoopClause$0(state);
2616
+ }
2617
+ }
2618
+ var DoWhileStatement$0 = $T($S(Do, BracedBlock, __, WhileClause), function(value) {
2580
2619
  return { "type": "IterationStatement", "children": value };
2581
2620
  });
2582
2621
  function DoWhileStatement(state) {
@@ -2588,8 +2627,11 @@ var Civet = (() => {
2588
2627
  return DoWhileStatement$0(state);
2589
2628
  }
2590
2629
  }
2591
- var WhileStatement$0 = $T($S(WhileClause, Block), function(value) {
2592
- return { "type": "IterationStatement", "children": value };
2630
+ var WhileStatement$0 = $TS($S(WhileClause, Block), function($skip, $loc, $0, $1, $2) {
2631
+ var clause = $1;
2632
+ var block = $2;
2633
+ clause.children.push(block);
2634
+ return clause;
2593
2635
  });
2594
2636
  function WhileStatement(state) {
2595
2637
  if (state.verbose)
@@ -2600,15 +2642,19 @@ var Civet = (() => {
2600
2642
  return WhileStatement$0(state);
2601
2643
  }
2602
2644
  }
2603
- var WhileClause$0 = $TS($S($C($EXPECT($L73, fail, 'WhileClause "while"'), $EXPECT($L74, fail, 'WhileClause "until"')), NonIdContinue, Condition), function($skip, $loc, $0, $1, $2, $3) {
2645
+ var WhileClause$0 = $TS($S($C(While, Until), Condition), function($skip, $loc, $0, $1, $2) {
2604
2646
  var kind = $1;
2605
- var cond = $3;
2606
- if (kind === "until") {
2647
+ var cond = $2;
2648
+ if (kind.token === "until") {
2607
2649
  cond[1] = "(!(";
2608
- cond[4] = "))";
2609
- return ["while", cond];
2650
+ cond[cond.length - 1] = "))";
2651
+ kind.token = "while";
2652
+ $0 = [kind, cond];
2610
2653
  }
2611
- return $0;
2654
+ return {
2655
+ type: "IterationStatement",
2656
+ children: $0
2657
+ };
2612
2658
  });
2613
2659
  function WhileClause(state) {
2614
2660
  if (state.verbose)
@@ -2619,7 +2665,12 @@ var Civet = (() => {
2619
2665
  return WhileClause$0(state);
2620
2666
  }
2621
2667
  }
2622
- var ForStatement$0 = $S(For, __, ForStatementControl, Block);
2668
+ var ForStatement$0 = $TS($S(ForClause, Block), function($skip, $loc, $0, $1, $2) {
2669
+ var clause = $1;
2670
+ var block = $2;
2671
+ clause.children.push(block);
2672
+ return clause;
2673
+ });
2623
2674
  function ForStatement(state) {
2624
2675
  if (state.verbose)
2625
2676
  console.log("ENTER:", "ForStatement");
@@ -2629,6 +2680,18 @@ var Civet = (() => {
2629
2680
  return ForStatement$0(state);
2630
2681
  }
2631
2682
  }
2683
+ var ForClause$0 = $T($S(For, __, ForStatementControl), function(value) {
2684
+ return { "type": "IterationStatement", "children": value };
2685
+ });
2686
+ function ForClause(state) {
2687
+ if (state.verbose)
2688
+ console.log("ENTER:", "ForClause");
2689
+ if (state.tokenize) {
2690
+ return $TOKEN("ForClause", state, ForClause$0(state));
2691
+ } else {
2692
+ return ForClause$0(state);
2693
+ }
2694
+ }
2632
2695
  var ForStatementControl$0 = $S(OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E(Expression), __, CloseParen);
2633
2696
  var ForStatementControl$1 = $S(InsertOpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E($S($N(EOS), Expression)), InsertCloseParen);
2634
2697
  var ForStatementControl$2 = $S(OpenParen, __, ForInOfDeclaration, __, In, Expression, __, CloseParen);
@@ -2849,7 +2912,7 @@ var Civet = (() => {
2849
2912
  return CatchBind$0(state) || CatchBind$1(state);
2850
2913
  }
2851
2914
  }
2852
- var Finally$0 = $S(__, $EXPECT($L75, fail, 'Finally "finally"'), BracedBlock);
2915
+ var Finally$0 = $S(__, $EXPECT($L72, fail, 'Finally "finally"'), BracedBlock);
2853
2916
  function Finally(state) {
2854
2917
  if (state.verbose)
2855
2918
  console.log("ENTER:", "Finally");
@@ -2869,7 +2932,10 @@ var Civet = (() => {
2869
2932
  }
2870
2933
  }
2871
2934
  var Condition$0 = $S(__, OpenParen, Expression, __, CloseParen);
2872
- var Condition$1 = $S($N(EOS), __, InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen);
2935
+ var Condition$1 = $TS($S($N(EOS), __, InsertOpenParen, ExpressionWithIndentedApplicationSuppressed, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
2936
+ $0.shift();
2937
+ return $0;
2938
+ });
2873
2939
  function Condition(state) {
2874
2940
  if (state.tokenize) {
2875
2941
  return $TOKEN("Condition", state, Condition$0(state) || Condition$1(state));
@@ -2915,13 +2981,13 @@ var Civet = (() => {
2915
2981
  return ExpressionStatement$0(state);
2916
2982
  }
2917
2983
  }
2918
- var KeywordStatement$0 = $T($S($EXPECT($L76, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
2984
+ var KeywordStatement$0 = $T($S($EXPECT($L73, fail, 'KeywordStatement "break"'), NonIdContinue), function(value) {
2919
2985
  return { "type": "BreakStatement", "children": value };
2920
2986
  });
2921
- var KeywordStatement$1 = $T($S($EXPECT($L77, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
2987
+ var KeywordStatement$1 = $T($S($EXPECT($L74, fail, 'KeywordStatement "continue"'), NonIdContinue), function(value) {
2922
2988
  return { "type": "ContinueStatement", "children": value };
2923
2989
  });
2924
- var KeywordStatement$2 = $T($S($EXPECT($L78, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
2990
+ var KeywordStatement$2 = $T($S($EXPECT($L75, fail, 'KeywordStatement "debugger"'), NonIdContinue), function(value) {
2925
2991
  return { "type": "DebuggerStatement", "children": value };
2926
2992
  });
2927
2993
  var KeywordStatement$3 = $T($S(Return, $E(MaybeNestedExpression)), function(value) {
@@ -2946,7 +3012,7 @@ var Civet = (() => {
2946
3012
  return MaybeNestedExpression$0(state) || MaybeNestedExpression$1(state);
2947
3013
  }
2948
3014
  }
2949
- var ImportDeclaration$0 = $T($S($EXPECT($L79, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
3015
+ var ImportDeclaration$0 = $T($S($EXPECT($L76, fail, 'ImportDeclaration "import type"'), NonIdContinue, __, ImportClause, __, FromClause), function(value) {
2950
3016
  return { "ts": true, "children": value };
2951
3017
  });
2952
3018
  var ImportDeclaration$1 = $S(Import, __, ImportClause, __, FromClause);
@@ -3084,7 +3150,7 @@ var Civet = (() => {
3084
3150
  return ImportedBinding$0(state);
3085
3151
  }
3086
3152
  }
3087
- var ExportDeclaration$0 = $S(Export, __, $EXPECT($L80, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
3153
+ var ExportDeclaration$0 = $S(Export, __, $EXPECT($L77, fail, 'ExportDeclaration "default"'), NonIdContinue, __, $C(HoistableDeclaration, ClassDeclaration, AssignmentExpression));
3088
3154
  var ExportDeclaration$1 = $S(Export, __, ExportFromClause, __, FromClause);
3089
3155
  var ExportDeclaration$2 = $S(Export, __, $C(NamedExports, VariableStatement, Declaration));
3090
3156
  function ExportDeclaration(state) {
@@ -3166,7 +3232,7 @@ var Civet = (() => {
3166
3232
  return LexicalDeclaration$0(state) || LexicalDeclaration$1(state);
3167
3233
  }
3168
3234
  }
3169
- var ConstAssignment$0 = $TV($EXPECT($L81, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
3235
+ var ConstAssignment$0 = $TV($EXPECT($L78, fail, 'ConstAssignment ":="'), function($skip, $loc, $0, $1) {
3170
3236
  return { $loc, token: "=" };
3171
3237
  });
3172
3238
  function ConstAssignment(state) {
@@ -3540,7 +3606,7 @@ var Civet = (() => {
3540
3606
  }
3541
3607
  }
3542
3608
  var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R23, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
3543
- var ReservedWord$1 = $R$0($EXPECT($R24, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
3609
+ var ReservedWord$1 = $R$0($EXPECT($R24, 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})/"));
3544
3610
  function ReservedWord(state) {
3545
3611
  if (state.tokenize) {
3546
3612
  return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state));
@@ -3577,7 +3643,7 @@ var Civet = (() => {
3577
3643
  return MultiLineComment$0(state) || MultiLineComment$1(state);
3578
3644
  }
3579
3645
  }
3580
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L82, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L83, fail, 'JSMultiLineComment "*/"')), $EXPECT($R26, fail, "JSMultiLineComment /./"))), $EXPECT($L83, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3646
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L79, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L80, fail, 'JSMultiLineComment "*/"')), $EXPECT($R26, fail, "JSMultiLineComment /./"))), $EXPECT($L80, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
3581
3647
  return { $loc, token: $1 };
3582
3648
  });
3583
3649
  function JSMultiLineComment(state) {
@@ -3601,7 +3667,7 @@ var Civet = (() => {
3601
3667
  return CoffeeSingleLineComment$0(state);
3602
3668
  }
3603
3669
  }
3604
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L84, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L84, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L83, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R26, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L84, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3670
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L81, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L81, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L80, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R26, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L81, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
3605
3671
  return { $loc, token: `/*${$2}*/` };
3606
3672
  });
3607
3673
  function CoffeeMultiLineComment(state) {
@@ -3613,7 +3679,7 @@ var Civet = (() => {
3613
3679
  return CoffeeMultiLineComment$0(state);
3614
3680
  }
3615
3681
  }
3616
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L82, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L83, fail, 'InlineComment "*/"')), $EXPECT($R28, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L83, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3682
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L79, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L80, fail, 'InlineComment "*/"')), $EXPECT($R28, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L80, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
3617
3683
  return { $loc, token: $1 };
3618
3684
  });
3619
3685
  function InlineComment(state) {
@@ -3720,7 +3786,7 @@ var Civet = (() => {
3720
3786
  return Loc$0(state);
3721
3787
  }
3722
3788
  }
3723
- var As$0 = $TS($S($EXPECT($L85, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3789
+ var As$0 = $TS($S($EXPECT($L82, fail, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3724
3790
  return { $loc, token: $1 };
3725
3791
  });
3726
3792
  function As(state) {
@@ -3732,7 +3798,7 @@ var Civet = (() => {
3732
3798
  return As$0(state);
3733
3799
  }
3734
3800
  }
3735
- var Async$0 = $TV($EXPECT($L86, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3801
+ var Async$0 = $TV($EXPECT($L83, fail, 'Async "async"'), function($skip, $loc, $0, $1) {
3736
3802
  return { $loc, token: $1 };
3737
3803
  });
3738
3804
  function Async(state) {
@@ -3744,7 +3810,7 @@ var Civet = (() => {
3744
3810
  return Async$0(state);
3745
3811
  }
3746
3812
  }
3747
- var Await$0 = $TS($S($EXPECT($L87, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3813
+ var Await$0 = $TS($S($EXPECT($L84, fail, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3748
3814
  return { $loc, token: $1 };
3749
3815
  });
3750
3816
  function Await(state) {
@@ -3756,7 +3822,7 @@ var Civet = (() => {
3756
3822
  return Await$0(state);
3757
3823
  }
3758
3824
  }
3759
- var Backtick$0 = $TV($EXPECT($L88, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
3825
+ var Backtick$0 = $TV($EXPECT($L85, fail, 'Backtick "`"'), function($skip, $loc, $0, $1) {
3760
3826
  return { $loc, token: $1 };
3761
3827
  });
3762
3828
  function Backtick(state) {
@@ -3768,7 +3834,7 @@ var Civet = (() => {
3768
3834
  return Backtick$0(state);
3769
3835
  }
3770
3836
  }
3771
- var Case$0 = $TS($S($EXPECT($L89, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3837
+ var Case$0 = $TS($S($EXPECT($L86, fail, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3772
3838
  return { $loc, token: $1 };
3773
3839
  });
3774
3840
  function Case(state) {
@@ -3780,7 +3846,7 @@ var Civet = (() => {
3780
3846
  return Case$0(state);
3781
3847
  }
3782
3848
  }
3783
- var Catch$0 = $TV($EXPECT($L90, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3849
+ var Catch$0 = $TV($EXPECT($L87, fail, 'Catch "catch"'), function($skip, $loc, $0, $1) {
3784
3850
  return { $loc, token: $1 };
3785
3851
  });
3786
3852
  function Catch(state) {
@@ -3792,7 +3858,7 @@ var Civet = (() => {
3792
3858
  return Catch$0(state);
3793
3859
  }
3794
3860
  }
3795
- var Class$0 = $TV($EXPECT($L91, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3861
+ var Class$0 = $TV($EXPECT($L88, fail, 'Class "class"'), function($skip, $loc, $0, $1) {
3796
3862
  return { $loc, token: $1 };
3797
3863
  });
3798
3864
  function Class(state) {
@@ -3840,7 +3906,7 @@ var Civet = (() => {
3840
3906
  return CloseParen$0(state);
3841
3907
  }
3842
3908
  }
3843
- var CoffeeSubstitutionStart$0 = $TV($EXPECT($L92, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3909
+ var CoffeeSubstitutionStart$0 = $TV($EXPECT($L89, fail, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
3844
3910
  return { $loc, token: "${" };
3845
3911
  });
3846
3912
  function CoffeeSubstitutionStart(state) {
@@ -3852,7 +3918,7 @@ var Civet = (() => {
3852
3918
  return CoffeeSubstitutionStart$0(state);
3853
3919
  }
3854
3920
  }
3855
- var Colon$0 = $TV($EXPECT($L93, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3921
+ var Colon$0 = $TV($EXPECT($L90, fail, 'Colon ":"'), function($skip, $loc, $0, $1) {
3856
3922
  return { $loc, token: $1 };
3857
3923
  });
3858
3924
  function Colon(state) {
@@ -3876,7 +3942,7 @@ var Civet = (() => {
3876
3942
  return ConstructorShorthand$0(state);
3877
3943
  }
3878
3944
  }
3879
- var Default$0 = $TS($S($EXPECT($L80, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3945
+ var Default$0 = $TS($S($EXPECT($L77, fail, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3880
3946
  return { $loc, token: $1 };
3881
3947
  });
3882
3948
  function Default(state) {
@@ -3888,7 +3954,7 @@ var Civet = (() => {
3888
3954
  return Default$0(state);
3889
3955
  }
3890
3956
  }
3891
- var Delete$0 = $TS($S($EXPECT($L94, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3957
+ var Delete$0 = $TS($S($EXPECT($L91, fail, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3892
3958
  return { $loc, token: $1 };
3893
3959
  });
3894
3960
  function Delete(state) {
@@ -3900,7 +3966,19 @@ var Civet = (() => {
3900
3966
  return Delete$0(state);
3901
3967
  }
3902
3968
  }
3903
- var Dot$0 = $TV($EXPECT($L95, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3969
+ var Do$0 = $TS($S($EXPECT($L92, fail, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3970
+ return { $loc, token: $1 };
3971
+ });
3972
+ function Do(state) {
3973
+ if (state.verbose)
3974
+ console.log("ENTER:", "Do");
3975
+ if (state.tokenize) {
3976
+ return $TOKEN("Do", state, Do$0(state));
3977
+ } else {
3978
+ return Do$0(state);
3979
+ }
3980
+ }
3981
+ var Dot$0 = $TV($EXPECT($L93, fail, 'Dot "."'), function($skip, $loc, $0, $1) {
3904
3982
  return { $loc, token: $1 };
3905
3983
  });
3906
3984
  function Dot(state) {
@@ -3912,7 +3990,7 @@ var Civet = (() => {
3912
3990
  return Dot$0(state);
3913
3991
  }
3914
3992
  }
3915
- var DotDotDot$0 = $TV($EXPECT($L96, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
3993
+ var DotDotDot$0 = $TV($EXPECT($L94, fail, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
3916
3994
  return { $loc, token: $1 };
3917
3995
  });
3918
3996
  function DotDotDot(state) {
@@ -3924,7 +4002,7 @@ var Civet = (() => {
3924
4002
  return DotDotDot$0(state);
3925
4003
  }
3926
4004
  }
3927
- var DoubleQuote$0 = $TV($EXPECT($L97, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
4005
+ var DoubleQuote$0 = $TV($EXPECT($L95, fail, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
3928
4006
  return { $loc, token: $1 };
3929
4007
  });
3930
4008
  function DoubleQuote(state) {
@@ -3936,7 +4014,7 @@ var Civet = (() => {
3936
4014
  return DoubleQuote$0(state);
3937
4015
  }
3938
4016
  }
3939
- var Else$0 = $TV($EXPECT($L98, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
4017
+ var Else$0 = $TV($EXPECT($L96, fail, 'Else "else"'), function($skip, $loc, $0, $1) {
3940
4018
  return { $loc, token: $1 };
3941
4019
  });
3942
4020
  function Else(state) {
@@ -3960,7 +4038,7 @@ var Civet = (() => {
3960
4038
  return Equals$0(state);
3961
4039
  }
3962
4040
  }
3963
- var Export$0 = $TS($S($EXPECT($L99, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4041
+ var Export$0 = $TS($S($EXPECT($L97, fail, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3964
4042
  return { $loc, token: $1 };
3965
4043
  });
3966
4044
  function Export(state) {
@@ -3972,7 +4050,7 @@ var Civet = (() => {
3972
4050
  return Export$0(state);
3973
4051
  }
3974
4052
  }
3975
- var For$0 = $TS($S($EXPECT($L100, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4053
+ var For$0 = $TS($S($EXPECT($L98, fail, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3976
4054
  return { $loc, token: $1 };
3977
4055
  });
3978
4056
  function For(state) {
@@ -3984,7 +4062,7 @@ var Civet = (() => {
3984
4062
  return For$0(state);
3985
4063
  }
3986
4064
  }
3987
- var From$0 = $TS($S($EXPECT($L101, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4065
+ var From$0 = $TS($S($EXPECT($L99, fail, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
3988
4066
  return { $loc, token: $1 };
3989
4067
  });
3990
4068
  function From(state) {
@@ -3996,7 +4074,7 @@ var Civet = (() => {
3996
4074
  return From$0(state);
3997
4075
  }
3998
4076
  }
3999
- var Function$0 = $TV($EXPECT($L102, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
4077
+ var Function$0 = $TV($EXPECT($L100, fail, 'Function "function"'), function($skip, $loc, $0, $1) {
4000
4078
  return { $loc, token: $1 };
4001
4079
  });
4002
4080
  function Function(state) {
@@ -4008,7 +4086,7 @@ var Civet = (() => {
4008
4086
  return Function$0(state);
4009
4087
  }
4010
4088
  }
4011
- var GetOrSet$0 = $TS($S($C($EXPECT($L103, fail, 'GetOrSet "get"'), $EXPECT($L104, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4089
+ var GetOrSet$0 = $TS($S($C($EXPECT($L101, fail, 'GetOrSet "get"'), $EXPECT($L102, fail, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4012
4090
  return { $loc, token: $1 };
4013
4091
  });
4014
4092
  function GetOrSet(state) {
@@ -4020,7 +4098,7 @@ var Civet = (() => {
4020
4098
  return GetOrSet$0(state);
4021
4099
  }
4022
4100
  }
4023
- var If$0 = $TV($EXPECT($L105, fail, 'If "if"'), function($skip, $loc, $0, $1) {
4101
+ var If$0 = $TV($EXPECT($L103, fail, 'If "if"'), function($skip, $loc, $0, $1) {
4024
4102
  return { $loc, token: $1 };
4025
4103
  });
4026
4104
  function If(state) {
@@ -4056,7 +4134,7 @@ var Civet = (() => {
4056
4134
  return In$0(state);
4057
4135
  }
4058
4136
  }
4059
- var LetOrConst$0 = $TV($C($EXPECT($L106, fail, 'LetOrConst "let"'), $EXPECT($L107, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
4137
+ var LetOrConst$0 = $TV($C($EXPECT($L104, fail, 'LetOrConst "let"'), $EXPECT($L105, fail, 'LetOrConst "const"')), function($skip, $loc, $0, $1) {
4060
4138
  return { $loc, token: $1 };
4061
4139
  });
4062
4140
  function LetOrConst(state) {
@@ -4068,7 +4146,7 @@ var Civet = (() => {
4068
4146
  return LetOrConst$0(state);
4069
4147
  }
4070
4148
  }
4071
- var Loop$0 = $TS($S($EXPECT($L108, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4149
+ var Loop$0 = $TS($S($EXPECT($L106, fail, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4072
4150
  return { $loc, token: "while(true)" };
4073
4151
  });
4074
4152
  function Loop(state) {
@@ -4080,7 +4158,7 @@ var Civet = (() => {
4080
4158
  return Loop$0(state);
4081
4159
  }
4082
4160
  }
4083
- var New$0 = $TV($EXPECT($L109, fail, 'New "new"'), function($skip, $loc, $0, $1) {
4161
+ var New$0 = $TV($EXPECT($L107, fail, 'New "new"'), function($skip, $loc, $0, $1) {
4084
4162
  return { $loc, token: $1 };
4085
4163
  });
4086
4164
  function New(state) {
@@ -4092,7 +4170,7 @@ var Civet = (() => {
4092
4170
  return New$0(state);
4093
4171
  }
4094
4172
  }
4095
- var Of$0 = $TV($EXPECT($L110, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
4173
+ var Of$0 = $TV($EXPECT($L108, fail, 'Of "of"'), function($skip, $loc, $0, $1) {
4096
4174
  return { $loc, token: $1 };
4097
4175
  });
4098
4176
  function Of(state) {
@@ -4104,7 +4182,7 @@ var Civet = (() => {
4104
4182
  return Of$0(state);
4105
4183
  }
4106
4184
  }
4107
- var OpenBrace$0 = $TV($EXPECT($L111, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
4185
+ var OpenBrace$0 = $TV($EXPECT($L109, fail, 'OpenBrace "{"'), function($skip, $loc, $0, $1) {
4108
4186
  return { $loc, token: $1 };
4109
4187
  });
4110
4188
  function OpenBrace(state) {
@@ -4116,7 +4194,7 @@ var Civet = (() => {
4116
4194
  return OpenBrace$0(state);
4117
4195
  }
4118
4196
  }
4119
- var OpenBracket$0 = $TV($EXPECT($L112, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
4197
+ var OpenBracket$0 = $TV($EXPECT($L110, fail, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
4120
4198
  return { $loc, token: $1 };
4121
4199
  });
4122
4200
  function OpenBracket(state) {
@@ -4128,7 +4206,7 @@ var Civet = (() => {
4128
4206
  return OpenBracket$0(state);
4129
4207
  }
4130
4208
  }
4131
- var OpenParen$0 = $TV($EXPECT($L113, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
4209
+ var OpenParen$0 = $TV($EXPECT($L111, fail, 'OpenParen "("'), function($skip, $loc, $0, $1) {
4132
4210
  return { $loc, token: $1 };
4133
4211
  });
4134
4212
  function OpenParen(state) {
@@ -4140,7 +4218,7 @@ var Civet = (() => {
4140
4218
  return OpenParen$0(state);
4141
4219
  }
4142
4220
  }
4143
- var QuestionMark$0 = $TV($EXPECT($L114, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
4221
+ var QuestionMark$0 = $TV($EXPECT($L112, fail, 'QuestionMark "?"'), function($skip, $loc, $0, $1) {
4144
4222
  return { $loc, token: $1 };
4145
4223
  });
4146
4224
  function QuestionMark(state) {
@@ -4152,7 +4230,7 @@ var Civet = (() => {
4152
4230
  return QuestionMark$0(state);
4153
4231
  }
4154
4232
  }
4155
- var Return$0 = $TS($S($EXPECT($L115, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4233
+ var Return$0 = $TS($S($EXPECT($L113, fail, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4156
4234
  return { $loc, token: $1 };
4157
4235
  });
4158
4236
  function Return(state) {
@@ -4176,7 +4254,7 @@ var Civet = (() => {
4176
4254
  return Semicolon$0(state);
4177
4255
  }
4178
4256
  }
4179
- var SingleQuote$0 = $TV($EXPECT($L116, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
4257
+ var SingleQuote$0 = $TV($EXPECT($L114, fail, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
4180
4258
  return { $loc, token: $1 };
4181
4259
  });
4182
4260
  function SingleQuote(state) {
@@ -4200,10 +4278,10 @@ var Civet = (() => {
4200
4278
  return Star$0(state);
4201
4279
  }
4202
4280
  }
4203
- var Static$0 = $TV($EXPECT($L117, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
4281
+ var Static$0 = $TV($EXPECT($L115, fail, 'Static "static"'), function($skip, $loc, $0, $1) {
4204
4282
  return { $loc, token: $1 };
4205
4283
  });
4206
- var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L113, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
4284
+ var Static$1 = $TS($S($EXPECT($L8, fail, 'Static "@"'), $N($EXPECT($L111, fail, 'Static "("'))), function($skip, $loc, $0, $1, $2) {
4207
4285
  return { $loc, token: "static " };
4208
4286
  });
4209
4287
  function Static(state) {
@@ -4213,7 +4291,7 @@ var Civet = (() => {
4213
4291
  return Static$0(state) || Static$1(state);
4214
4292
  }
4215
4293
  }
4216
- var SubstitutionStart$0 = $TV($EXPECT($L118, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
4294
+ var SubstitutionStart$0 = $TV($EXPECT($L116, fail, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
4217
4295
  return { $loc, token: $1 };
4218
4296
  });
4219
4297
  function SubstitutionStart(state) {
@@ -4225,7 +4303,7 @@ var Civet = (() => {
4225
4303
  return SubstitutionStart$0(state);
4226
4304
  }
4227
4305
  }
4228
- var Switch$0 = $TS($S($EXPECT($L119, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4306
+ var Switch$0 = $TS($S($EXPECT($L117, fail, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4229
4307
  return { $loc, token: $1 };
4230
4308
  });
4231
4309
  function Switch(state) {
@@ -4237,7 +4315,7 @@ var Civet = (() => {
4237
4315
  return Switch$0(state);
4238
4316
  }
4239
4317
  }
4240
- var Target$0 = $TV($EXPECT($L120, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
4318
+ var Target$0 = $TV($EXPECT($L118, fail, 'Target "target"'), function($skip, $loc, $0, $1) {
4241
4319
  return { $loc, token: $1 };
4242
4320
  });
4243
4321
  function Target(state) {
@@ -4249,7 +4327,7 @@ var Civet = (() => {
4249
4327
  return Target$0(state);
4250
4328
  }
4251
4329
  }
4252
- var Throw$0 = $TS($S($EXPECT($L121, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4330
+ var Throw$0 = $TS($S($EXPECT($L119, fail, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4253
4331
  return { $loc, token: $1 };
4254
4332
  });
4255
4333
  function Throw(state) {
@@ -4261,7 +4339,7 @@ var Civet = (() => {
4261
4339
  return Throw$0(state);
4262
4340
  }
4263
4341
  }
4264
- var TripleDoubleQuote$0 = $TV($EXPECT($L122, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
4342
+ var TripleDoubleQuote$0 = $TV($EXPECT($L120, fail, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
4265
4343
  return { $loc, token: "`" };
4266
4344
  });
4267
4345
  function TripleDoubleQuote(state) {
@@ -4273,7 +4351,7 @@ var Civet = (() => {
4273
4351
  return TripleDoubleQuote$0(state);
4274
4352
  }
4275
4353
  }
4276
- var TripleSingleQuote$0 = $TV($EXPECT($L123, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
4354
+ var TripleSingleQuote$0 = $TV($EXPECT($L121, fail, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
4277
4355
  return { $loc, token: "`" };
4278
4356
  });
4279
4357
  function TripleSingleQuote(state) {
@@ -4285,7 +4363,7 @@ var Civet = (() => {
4285
4363
  return TripleSingleQuote$0(state);
4286
4364
  }
4287
4365
  }
4288
- var TripleTick$0 = $TV($EXPECT($L124, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
4366
+ var TripleTick$0 = $TV($EXPECT($L122, fail, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
4289
4367
  return { $loc, token: "`" };
4290
4368
  });
4291
4369
  function TripleTick(state) {
@@ -4297,7 +4375,7 @@ var Civet = (() => {
4297
4375
  return TripleTick$0(state);
4298
4376
  }
4299
4377
  }
4300
- var Try$0 = $TV($EXPECT($L125, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
4378
+ var Try$0 = $TV($EXPECT($L123, fail, 'Try "try"'), function($skip, $loc, $0, $1) {
4301
4379
  return { $loc, token: $1 };
4302
4380
  });
4303
4381
  function Try(state) {
@@ -4309,7 +4387,7 @@ var Civet = (() => {
4309
4387
  return Try$0(state);
4310
4388
  }
4311
4389
  }
4312
- var Typeof$0 = $TS($S($EXPECT($L126, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4390
+ var Typeof$0 = $TS($S($EXPECT($L124, fail, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4313
4391
  return { $loc, token: $1 };
4314
4392
  });
4315
4393
  function Typeof(state) {
@@ -4321,7 +4399,7 @@ var Civet = (() => {
4321
4399
  return Typeof$0(state);
4322
4400
  }
4323
4401
  }
4324
- var Unless$0 = $TV($EXPECT($L127, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
4402
+ var Unless$0 = $TV($EXPECT($L125, fail, 'Unless "unless"'), function($skip, $loc, $0, $1) {
4325
4403
  return { $loc, token: $1 };
4326
4404
  });
4327
4405
  function Unless(state) {
@@ -4333,7 +4411,19 @@ var Civet = (() => {
4333
4411
  return Unless$0(state);
4334
4412
  }
4335
4413
  }
4336
- var Var$0 = $TV($EXPECT($L128, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
4414
+ var Until$0 = $TS($S($EXPECT($L126, fail, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4415
+ return { $loc, token: $1 };
4416
+ });
4417
+ function Until(state) {
4418
+ if (state.verbose)
4419
+ console.log("ENTER:", "Until");
4420
+ if (state.tokenize) {
4421
+ return $TOKEN("Until", state, Until$0(state));
4422
+ } else {
4423
+ return Until$0(state);
4424
+ }
4425
+ }
4426
+ var Var$0 = $TV($EXPECT($L127, fail, 'Var "var"'), function($skip, $loc, $0, $1) {
4337
4427
  return { $loc, token: $1 };
4338
4428
  });
4339
4429
  function Var(state) {
@@ -4345,7 +4435,7 @@ var Civet = (() => {
4345
4435
  return Var$0(state);
4346
4436
  }
4347
4437
  }
4348
- var Void$0 = $TS($S($EXPECT($L129, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4438
+ var Void$0 = $TS($S($EXPECT($L128, fail, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4349
4439
  return { $loc, token: $1 };
4350
4440
  });
4351
4441
  function Void(state) {
@@ -4357,7 +4447,7 @@ var Civet = (() => {
4357
4447
  return Void$0(state);
4358
4448
  }
4359
4449
  }
4360
- var When$0 = $TS($S($EXPECT($L130, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4450
+ var When$0 = $TS($S($EXPECT($L129, fail, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4361
4451
  return { $loc, token: "case" };
4362
4452
  });
4363
4453
  function When(state) {
@@ -4369,6 +4459,18 @@ var Civet = (() => {
4369
4459
  return When$0(state);
4370
4460
  }
4371
4461
  }
4462
+ var While$0 = $TS($S($EXPECT($L130, fail, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4463
+ return { $loc, token: $1 };
4464
+ });
4465
+ function While(state) {
4466
+ if (state.verbose)
4467
+ console.log("ENTER:", "While");
4468
+ if (state.tokenize) {
4469
+ return $TOKEN("While", state, While$0(state));
4470
+ } else {
4471
+ return While$0(state);
4472
+ }
4473
+ }
4372
4474
  var Yield$0 = $TS($S($EXPECT($L131, fail, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
4373
4475
  return { $loc, token: $1 };
4374
4476
  });
@@ -4814,7 +4916,7 @@ var Civet = (() => {
4814
4916
  }
4815
4917
  }
4816
4918
  var TypeUnaryOp$0 = $EXPECT($L142, fail, 'TypeUnaryOp "keyof"');
4817
- var TypeUnaryOp$1 = $EXPECT($L126, fail, 'TypeUnaryOp "typeof"');
4919
+ var TypeUnaryOp$1 = $EXPECT($L124, fail, 'TypeUnaryOp "typeof"');
4818
4920
  var TypeUnaryOp$2 = $EXPECT($L143, fail, 'TypeUnaryOp "infer"');
4819
4921
  function TypeUnaryOp(state) {
4820
4922
  if (state.tokenize) {
@@ -4905,7 +5007,7 @@ var Civet = (() => {
4905
5007
  }
4906
5008
  }
4907
5009
  var TypeLiteral$0 = Literal;
4908
- var TypeLiteral$1 = $TV($EXPECT($L129, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
5010
+ var TypeLiteral$1 = $TV($EXPECT($L128, fail, 'TypeLiteral "void"'), function($skip, $loc, $0, $1) {
4909
5011
  return { $loc, token: "void" };
4910
5012
  });
4911
5013
  var TypeLiteral$2 = $TV($EXPECT($L144, fail, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
@@ -5406,6 +5508,16 @@ var Civet = (() => {
5406
5508
  insertReturn(block);
5407
5509
  return block;
5408
5510
  };
5511
+ module.isWhitespaceOrEmpty = function(node) {
5512
+ if (!node)
5513
+ return true;
5514
+ if (!node.length)
5515
+ return true;
5516
+ if (typeof node === "string")
5517
+ return node.match(/^\s*$/);
5518
+ if (Array.isArray(node))
5519
+ return node.every(module.isWhitespaceOrEmpty);
5520
+ };
5409
5521
  module.expandChainedComparisons = function([first, binops]) {
5410
5522
  const relationalOps = ["==", "===", "!=", "!==", "<", "<=", ">", ">=", "in", "instanceof"];
5411
5523
  const lowerPrecedenceOps = ["??", "&&", "||", "&", "|", "^"];