@weborigami/language 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -205,7 +205,7 @@ function peg$parse(input, options) {
205
205
  var peg$FAILED = {};
206
206
  var peg$source = options.grammarSource;
207
207
 
208
- var peg$startRuleFunctions = { __: peg$parse__, additiveExpression: peg$parseadditiveExpression, additiveOperator: peg$parseadditiveOperator, angleBracketLiteral: peg$parseangleBracketLiteral, angleBracketPath: peg$parseangleBracketPath, angleBracketKey: peg$parseangleBracketKey, angleBracketPathChar: peg$parseangleBracketPathChar, arguments: peg$parsearguments, arrayLiteral: peg$parsearrayLiteral, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, arrowFunction: peg$parsearrowFunction, bitwiseAndExpression: peg$parsebitwiseAndExpression, bitwiseAndOperator: peg$parsebitwiseAndOperator, bitwiseOrExpression: peg$parsebitwiseOrExpression, bitwiseOrOperator: peg$parsebitwiseOrOperator, bitwiseXorExpression: peg$parsebitwiseXorExpression, bitwiseXorOperator: peg$parsebitwiseXorOperator, callExpression: peg$parsecallExpression, commaExpression: peg$parsecommaExpression, comment: peg$parsecomment, computedPropertyAccess: peg$parsecomputedPropertyAccess, computedPropertySpace: peg$parsecomputedPropertySpace, conditionalExpression: peg$parseconditionalExpression, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, equalityExpression: peg$parseequalityExpression, equalityOperator: peg$parseequalityOperator, escapedChar: peg$parseescapedChar, expectBacktick: peg$parseexpectBacktick, expectClosingBrace: peg$parseexpectClosingBrace, expectClosingBracket: peg$parseexpectClosingBracket, expectClosingParenthesis: peg$parseexpectClosingParenthesis, expectDoubleQuote: peg$parseexpectDoubleQuote, expectExpression: peg$parseexpectExpression, expectFrontDelimiter: peg$parseexpectFrontDelimiter, expectGuillemet: peg$parseexpectGuillemet, expectSingleQuote: peg$parseexpectSingleQuote, expectPipelineExpression: peg$parseexpectPipelineExpression, expectUnaryExpression: peg$parseexpectUnaryExpression, exponentiationExpression: peg$parseexponentiationExpression, expression: peg$parseexpression, floatLiteral: peg$parsefloatLiteral, frontDelimiter: peg$parsefrontDelimiter, frontMatterExpression: peg$parsefrontMatterExpression, frontMatterText: peg$parsefrontMatterText, frontMatterYaml: peg$parsefrontMatterYaml, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, host: peg$parsehost, hostname: peg$parsehostname, identifier: peg$parseidentifier, identifierLiteral: peg$parseidentifierLiteral, identifierPart: peg$parseidentifierPart, identifierStart: peg$parseidentifierStart, implicitParenthesesCallExpression: peg$parseimplicitParenthesesCallExpression, implicitParensthesesArguments: peg$parseimplicitParensthesesArguments, inlineSpace: peg$parseinlineSpace, integerLiteral: peg$parseintegerLiteral, key: peg$parsekey, keyChar: peg$parsekeyChar, keyCharStart: peg$parsekeyCharStart, list: peg$parselist, logicalAndExpression: peg$parselogicalAndExpression, logicalOrExpression: peg$parselogicalOrExpression, minus: peg$parseminus, multiLineComment: peg$parsemultiLineComment, multiplicativeExpression: peg$parsemultiplicativeExpression, multiplicativeOperator: peg$parsemultiplicativeOperator, newExpression: peg$parsenewExpression, newLine: peg$parsenewLine, numericLiteral: peg$parsenumericLiteral, nullishCoalescingExpression: peg$parsenullishCoalescingExpression, objectLiteral: peg$parseobjectLiteral, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, optionalChaining: peg$parseoptionalChaining, parameter: peg$parseparameter, parameterList: peg$parseparameterList, parameterSingleton: peg$parseparameterSingleton, parenthesesArguments: peg$parseparenthesesArguments, pathArguments: peg$parsepathArguments, pathKeys: peg$parsepathKeys, pathLiteral: peg$parsepathLiteral, pathSegment: peg$parsepathSegment, pipelineExpression: peg$parsepipelineExpression, primary: peg$parseprimary, program: peg$parseprogram, programMode: peg$parseprogramMode, propertyAccess: peg$parsepropertyAccess, regexFlags: peg$parseregexFlags, regexLiteral: peg$parseregexLiteral, regexLiteralChar: peg$parseregexLiteralChar, relationalExpression: peg$parserelationalExpression, relationalOperator: peg$parserelationalOperator, separator: peg$parseseparator, shebang: peg$parseshebang, shellMode: peg$parseshellMode, shiftExpression: peg$parseshiftExpression, shiftOperator: peg$parseshiftOperator, shorthandFunction: peg$parseshorthandFunction, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, slash: peg$parseslash, slashes: peg$parseslashes, slashFollows: peg$parseslashFollows, spreadElement: peg$parsespreadElement, stringLiteral: peg$parsestringLiteral, templateBody: peg$parsetemplateBody, templateBodyChar: peg$parsetemplateBodyChar, templateBodyText: peg$parsetemplateBodyText, templateDocument: peg$parsetemplateDocument, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, unaryExpression: peg$parseunaryExpression, uri: peg$parseuri, uriExpression: peg$parseuriExpression, uriKey: peg$parseuriKey, uriKeyChar: peg$parseuriKeyChar, uriPath: peg$parseuriPath, uriScheme: peg$parseuriScheme, unaryOperator: peg$parseunaryOperator, whitespace: peg$parsewhitespace, whitespaceChar: peg$parsewhitespaceChar, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
208
+ var peg$startRuleFunctions = { __: peg$parse__, additiveExpression: peg$parseadditiveExpression, additiveOperator: peg$parseadditiveOperator, angleBracketLiteral: peg$parseangleBracketLiteral, angleBracketPath: peg$parseangleBracketPath, angleBracketKey: peg$parseangleBracketKey, angleBracketPathChar: peg$parseangleBracketPathChar, arguments: peg$parsearguments, arrayLiteral: peg$parsearrayLiteral, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, arrowFunction: peg$parsearrowFunction, bitwiseAndExpression: peg$parsebitwiseAndExpression, bitwiseAndOperator: peg$parsebitwiseAndOperator, bitwiseOrExpression: peg$parsebitwiseOrExpression, bitwiseOrOperator: peg$parsebitwiseOrOperator, bitwiseXorExpression: peg$parsebitwiseXorExpression, bitwiseXorOperator: peg$parsebitwiseXorOperator, callExpression: peg$parsecallExpression, commaExpression: peg$parsecommaExpression, comment: peg$parsecomment, computedPropertyAccess: peg$parsecomputedPropertyAccess, computedPropertySpace: peg$parsecomputedPropertySpace, conditionalExpression: peg$parseconditionalExpression, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, equalityExpression: peg$parseequalityExpression, equalityOperator: peg$parseequalityOperator, escapedChar: peg$parseescapedChar, expectBacktick: peg$parseexpectBacktick, expectClosingBrace: peg$parseexpectClosingBrace, expectClosingBracket: peg$parseexpectClosingBracket, expectClosingParenthesis: peg$parseexpectClosingParenthesis, expectDoubleQuote: peg$parseexpectDoubleQuote, expectExpression: peg$parseexpectExpression, expectFrontDelimiter: peg$parseexpectFrontDelimiter, expectGuillemet: peg$parseexpectGuillemet, expectSingleQuote: peg$parseexpectSingleQuote, expectPipelineExpression: peg$parseexpectPipelineExpression, expectUnaryExpression: peg$parseexpectUnaryExpression, exponentiationExpression: peg$parseexponentiationExpression, expression: peg$parseexpression, floatLiteral: peg$parsefloatLiteral, frontDelimiter: peg$parsefrontDelimiter, frontMatterExpression: peg$parsefrontMatterExpression, frontMatterText: peg$parsefrontMatterText, frontMatterYaml: peg$parsefrontMatterYaml, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, host: peg$parsehost, hostname: peg$parsehostname, identifier: peg$parseidentifier, identifierLiteral: peg$parseidentifierLiteral, identifierPart: peg$parseidentifierPart, identifierStart: peg$parseidentifierStart, implicitParenthesesCallExpression: peg$parseimplicitParenthesesCallExpression, implicitParensthesesArguments: peg$parseimplicitParensthesesArguments, inlineSpace: peg$parseinlineSpace, integerLiteral: peg$parseintegerLiteral, key: peg$parsekey, keyChar: peg$parsekeyChar, keyCharStart: peg$parsekeyCharStart, list: peg$parselist, logicalAndExpression: peg$parselogicalAndExpression, logicalOrExpression: peg$parselogicalOrExpression, minus: peg$parseminus, multiLineComment: peg$parsemultiLineComment, multiplicativeExpression: peg$parsemultiplicativeExpression, multiplicativeOperator: peg$parsemultiplicativeOperator, newExpression: peg$parsenewExpression, newLine: peg$parsenewLine, numericLiteral: peg$parsenumericLiteral, nullishCoalescingExpression: peg$parsenullishCoalescingExpression, objectLiteral: peg$parseobjectLiteral, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, optionalChaining: peg$parseoptionalChaining, parameter: peg$parseparameter, parameterList: peg$parseparameterList, parameterSingleton: peg$parseparameterSingleton, parenthesesArguments: peg$parseparenthesesArguments, pathArguments: peg$parsepathArguments, pathKeys: peg$parsepathKeys, pathLiteral: peg$parsepathLiteral, pathSegment: peg$parsepathSegment, pipelineExpression: peg$parsepipelineExpression, primary: peg$parseprimary, program: peg$parseprogram, programMode: peg$parseprogramMode, propertyAccess: peg$parsepropertyAccess, regexFlags: peg$parseregexFlags, regexLiteral: peg$parseregexLiteral, regexLiteralChar: peg$parseregexLiteralChar, relationalExpression: peg$parserelationalExpression, relationalOperator: peg$parserelationalOperator, separator: peg$parseseparator, shebang: peg$parseshebang, shellMode: peg$parseshellMode, shiftExpression: peg$parseshiftExpression, shiftOperator: peg$parseshiftOperator, shorthandFunction: peg$parseshorthandFunction, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, slash: peg$parseslash, slashes: peg$parseslashes, slashFollows: peg$parseslashFollows, spreadElement: peg$parsespreadElement, stringLiteral: peg$parsestringLiteral, templateBody: peg$parsetemplateBody, templateBodyChar: peg$parsetemplateBodyChar, templateBodyText: peg$parsetemplateBodyText, templateDocument: peg$parsetemplateDocument, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, unaryExpression: peg$parseunaryExpression, uri: peg$parseuri, uriExpression: peg$parseuriExpression, uriKey: peg$parseuriKey, uriKeyChar: peg$parseuriKeyChar, uriPath: peg$parseuriPath, uriScheme: peg$parseuriScheme, unaryOperator: peg$parseunaryOperator, whitespace: peg$parsewhitespace, whitespaceChar: peg$parsewhitespaceChar, whitespaceOptionalForProgram: peg$parsewhitespaceOptionalForProgram, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
209
209
  var peg$startRuleFunction = peg$parse__;
210
210
 
211
211
  var peg$c0 = "+";
@@ -484,104 +484,107 @@ function peg$parse(input, options) {
484
484
  var peg$f18 = function(chars) {
485
485
  return annotate([ops.literal, chars.join("")], location());
486
486
  };
487
- var peg$f19 = function(head, tail) {
487
+ var peg$f19 = function() {
488
+ console.warn("The use of the Unicode ellipsis character for an object spread is deprecated; use `...` (three periods) instead.");
489
+ };
490
+ var peg$f20 = function(head, tail) {
488
491
  return tail.reduce(makeBinaryOperation, head);
489
492
  };
490
- var peg$f20 = function() { return "\0"; };
491
- var peg$f21 = function() { return "\b"; };
492
- var peg$f22 = function() { return "\f"; };
493
- var peg$f23 = function() { return "\n"; };
494
- var peg$f24 = function() { return "\r"; };
495
- var peg$f25 = function() { return "\t"; };
496
- var peg$f26 = function() { return "\v"; };
497
- var peg$f27 = function() {
493
+ var peg$f21 = function() { return "\0"; };
494
+ var peg$f22 = function() { return "\b"; };
495
+ var peg$f23 = function() { return "\f"; };
496
+ var peg$f24 = function() { return "\n"; };
497
+ var peg$f25 = function() { return "\r"; };
498
+ var peg$f26 = function() { return "\t"; };
499
+ var peg$f27 = function() { return "\v"; };
500
+ var peg$f28 = function() {
498
501
  error("Expected closing backtick");
499
502
  };
500
- var peg$f28 = function() {
503
+ var peg$f29 = function() {
501
504
  error(`An object ended without a closing brace, or contained something that wasn't expected.\nThe top level of an object can only contain definitions ("a: b" or "a = b") or spreads ("...a").`);
502
505
  };
503
- var peg$f29 = function() {
506
+ var peg$f30 = function() {
504
507
  error("Expected right bracket");
505
508
  };
506
- var peg$f30 = function() {
509
+ var peg$f31 = function() {
507
510
  error("Expected right parenthesis");
508
511
  };
509
- var peg$f31 = function() {
512
+ var peg$f32 = function() {
510
513
  error("Expected closing quote");
511
514
  };
512
- var peg$f32 = function() {
515
+ var peg$f33 = function() {
513
516
  error("Expected an expression");
514
517
  };
515
- var peg$f33 = function() {
518
+ var peg$f34 = function() {
516
519
  error("Expected \"---\"");
517
520
  };
518
- var peg$f34 = function() {
521
+ var peg$f35 = function() {
519
522
  error("Expected closing guillemet");
520
523
  };
521
- var peg$f35 = function() {
524
+ var peg$f36 = function() {
522
525
  error("Expected closing quote");
523
526
  };
524
- var peg$f36 = function() {
527
+ var peg$f37 = function() {
525
528
  error("Expected an expression");
526
529
  };
527
- var peg$f37 = function() {
530
+ var peg$f38 = function() {
528
531
  error("Expected an expression");
529
532
  };
530
- var peg$f38 = function(left, right) {
533
+ var peg$f39 = function(left, right) {
531
534
  return right ? annotate([ops.exponentiation, left, right], location()) : left;
532
535
  };
533
- var peg$f39 = function() {
536
+ var peg$f40 = function() {
534
537
  return annotate([ops.literal, parseFloat(text())], location());
535
538
  };
536
- var peg$f40 = function() {
539
+ var peg$f41 = function() {
537
540
  return isOrigamiFrontMatter(input.slice(location().end.offset))
538
541
  };
539
- var peg$f41 = function(chars) {
542
+ var peg$f42 = function(chars) {
540
543
  return chars.join("");
541
544
  };
542
- var peg$f42 = function(yaml) {
545
+ var peg$f43 = function(yaml) {
543
546
  return makeYamlObject(yaml, location());
544
547
  };
545
- var peg$f43 = function(expression) {
548
+ var peg$f44 = function(expression) {
546
549
  return annotate(expression, location());
547
550
  };
548
- var peg$f44 = function(chars) {
551
+ var peg$f45 = function(chars) {
549
552
  return annotate([ops.literal, chars.join("")], location());
550
553
  };
551
- var peg$f45 = function(name, port, slashFollows) {
554
+ var peg$f46 = function(name, port, slashFollows) {
552
555
  const portText = port ? `:${port[1]}` : "";
553
556
  const slashText = slashFollows ? "/" : "";
554
557
  const host = name + portText + slashText;
555
558
  return annotate([ops.literal, host], location());
556
559
  };
557
- var peg$f46 = function() {
560
+ var peg$f47 = function() {
558
561
  return text();
559
562
  };
560
- var peg$f47 = function(id) {
563
+ var peg$f48 = function(id) {
561
564
  return id;
562
565
  };
563
- var peg$f48 = function(id) {
566
+ var peg$f49 = function(id) {
564
567
  return annotate([ops.literal, id], location());
565
568
  };
566
- var peg$f49 = function(char) { return char.match(/[$_\p{ID_Continue}]/u) };
567
- var peg$f50 = function(char) { return char.match(/[$_\p{ID_Start}]/u) };
568
- var peg$f51 = function(head, args) {
569
+ var peg$f50 = function(char) { return char.match(/[$_\p{ID_Continue}]/u) };
570
+ var peg$f51 = function(char) { return char.match(/[$_\p{ID_Start}]/u) };
571
+ var peg$f52 = function(head, args) {
569
572
  return args ? makeCall(head, args, location()) : head;
570
573
  };
571
- var peg$f52 = function(values) {
574
+ var peg$f53 = function(values) {
572
575
  return annotate(values, location());
573
576
  };
574
- var peg$f53 = function() {
577
+ var peg$f54 = function() {
575
578
  return annotate([ops.literal, parseInt(text())], location());
576
579
  };
577
- var peg$f54 = function() {
580
+ var peg$f55 = function() {
578
581
  return text();
579
582
  };
580
- var peg$f55 = function(char) { return char.match(/[$_\p{ID_Continue}]/u) };
581
- var peg$f56 = function(values) {
583
+ var peg$f56 = function(char) { return char.match(/[$_\p{ID_Continue}]/u) };
584
+ var peg$f57 = function(values) {
582
585
  return annotate(values, location());
583
586
  };
584
- var peg$f57 = function(head, tail) {
587
+ var peg$f58 = function(head, tail) {
585
588
  return tail.length === 0
586
589
  ? head
587
590
  : annotate(
@@ -589,7 +592,7 @@ function peg$parse(input, options) {
589
592
  location()
590
593
  );
591
594
  };
592
- var peg$f58 = function(head, tail) {
595
+ var peg$f59 = function(head, tail) {
593
596
  return tail.length === 0
594
597
  ? head
595
598
  : annotate(
@@ -597,19 +600,19 @@ function peg$parse(input, options) {
597
600
  location()
598
601
  );
599
602
  };
600
- var peg$f59 = function() { return null; };
601
- var peg$f60 = function(head, tail) {
603
+ var peg$f60 = function() { return null; };
604
+ var peg$f61 = function(head, tail) {
602
605
  return tail.reduce(makeBinaryOperation, head);
603
606
  };
604
- var peg$f61 = function(head, tail) {
607
+ var peg$f62 = function(head, tail) {
605
608
  const args = tail?.[0] !== undefined ? tail : [];
606
609
  return annotate([ops.construct, head, ...args], location());
607
610
  };
608
- var peg$f62 = function(head, tail) {
611
+ var peg$f63 = function(head, tail) {
609
612
  const args = tail?.[0] !== undefined ? tail : [];
610
613
  return annotate([ops.construct, head, ...args], location());
611
614
  };
612
- var peg$f63 = function(head, tail) {
615
+ var peg$f64 = function(head, tail) {
613
616
  return tail.length === 0
614
617
  ? head
615
618
  : annotate(
@@ -617,93 +620,93 @@ function peg$parse(input, options) {
617
620
  location()
618
621
  );
619
622
  };
620
- var peg$f64 = function(entries) {
623
+ var peg$f65 = function(entries) {
621
624
  return makeObject(entries ?? [], location());
622
625
  };
623
- var peg$f65 = function(entries) {
626
+ var peg$f66 = function(entries) {
624
627
  return annotate(entries, location());
625
628
  };
626
- var peg$f66 = function(key, pipeline) {
629
+ var peg$f67 = function(key, pipeline) {
627
630
  const getter = annotate([ops.getter, pipeline], location());
628
631
  return annotate([key, getter], location());
629
632
  };
630
- var peg$f67 = function(hiddenKey) { return hiddenKey.join(""); };
631
- var peg$f68 = function(key, pipeline) {
633
+ var peg$f68 = function(hiddenKey) { return hiddenKey.join(""); };
634
+ var peg$f69 = function(key, pipeline) {
632
635
  return annotate([key, pipeline], location());
633
636
  };
634
- var peg$f69 = function(key) {
637
+ var peg$f70 = function(key) {
635
638
  const reference = annotate([markers.reference, key], location());
636
639
  const traverse = annotate([markers.traverse, reference], location());
637
640
  return annotate([key, traverse], location());
638
641
  };
639
- var peg$f70 = function(path) {
642
+ var peg$f71 = function(path) {
640
643
  let lastKey = path.at(-1);
641
644
  if (lastKey instanceof Array) {
642
645
  lastKey = lastKey[1]; // get scope identifier or literal
643
646
  }
644
647
  return annotate([lastKey, path], location());
645
648
  };
646
- var peg$f71 = function(key, slash) {
649
+ var peg$f72 = function(key, slash) {
647
650
  return text();
648
651
  };
649
- var peg$f72 = function(string) {
652
+ var peg$f73 = function(string) {
650
653
  // Remove `ops.literal` from the string code
651
654
  return string[1];
652
655
  };
653
- var peg$f73 = function(property) {
656
+ var peg$f74 = function(property) {
654
657
  return annotate([ops.optionalTraverse, property], location());
655
658
  };
656
- var peg$f74 = function(key) {
659
+ var peg$f75 = function(key) {
657
660
  return annotate([ops.literal, key], location());
658
661
  };
659
- var peg$f75 = function(list) {
662
+ var peg$f76 = function(list) {
660
663
  return annotate(list, location());
661
664
  };
662
- var peg$f76 = function(param) {
665
+ var peg$f77 = function(param) {
663
666
  return annotate([param], location());
664
667
  };
665
- var peg$f77 = function(list) {
668
+ var peg$f78 = function(list) {
666
669
  return annotate(list ?? [undefined], location());
667
670
  };
668
- var peg$f78 = function(keys) {
671
+ var peg$f79 = function(keys) {
669
672
  const args = keys ?? [];
670
673
  return annotate([markers.traverse, ...args], location());
671
674
  };
672
- var peg$f79 = function(keys) {
675
+ var peg$f80 = function(keys) {
673
676
  return makePath(keys);
674
677
  };
675
- var peg$f80 = function(key) {
678
+ var peg$f81 = function(key) {
676
679
  return annotate([ops.literal, text()], location());
677
680
  };
678
- var peg$f81 = function() {
681
+ var peg$f82 = function() {
679
682
  return annotate([ops.literal, text()], location());
680
683
  };
681
- var peg$f82 = function(head, tail) {
684
+ var peg$f83 = function(head, tail) {
682
685
  return annotate(
683
686
  tail.reduce((arg, fn) => makePipeline(arg, fn, location()), head),
684
687
  location()
685
688
  );
686
689
  };
687
- var peg$f83 = function() { return options.mode === "program" };
688
- var peg$f84 = function(property) {
690
+ var peg$f84 = function() { return options.mode === "program" };
691
+ var peg$f85 = function(property) {
689
692
  return annotate([markers.property, property], location());
690
693
  };
691
- var peg$f85 = function(flags) {
694
+ var peg$f86 = function(flags) {
692
695
  return flags.join("");
693
696
  };
694
- var peg$f86 = function(chars, flags) {
697
+ var peg$f87 = function(chars, flags) {
695
698
  const regex = new RegExp(chars.join(""), flags);
696
699
  return annotate([ops.literal, regex], location());
697
700
  };
698
- var peg$f87 = function(head, tail) {
701
+ var peg$f88 = function(head, tail) {
699
702
  return tail.reduce(makeBinaryOperation, head);
700
703
  };
701
- var peg$f88 = function() { return null; };
702
- var peg$f89 = function() { return options.mode === "shell" };
703
- var peg$f90 = function(head, tail) {
704
+ var peg$f89 = function() { return null; };
705
+ var peg$f90 = function() { return options.mode === "shell" };
706
+ var peg$f91 = function(head, tail) {
704
707
  return tail.reduce(makeBinaryOperation, head);
705
708
  };
706
- var peg$f91 = function(definition) {
709
+ var peg$f92 = function(definition) {
707
710
  if (options.mode === "program") {
708
711
  console.warn("Warning: the shorthand function syntax is deprecated in Origami programs. Use arrow syntax instead.");
709
712
  }
@@ -713,41 +716,35 @@ function peg$parse(input, options) {
713
716
  );
714
717
  return annotate([ops.lambda, lambdaParameters, definition], location());
715
718
  };
716
- var peg$f92 = function() { return null; };
717
- var peg$f93 = function(chars) {
719
+ var peg$f93 = function() { return null; };
720
+ var peg$f94 = function(chars) {
718
721
  return annotate([ops.literal, chars.join("")], location());
719
722
  };
720
- var peg$f94 = function() {
723
+ var peg$f95 = function() {
721
724
  return annotate([ops.literal, "/"], location());
722
725
  };
723
- var peg$f95 = function() {
726
+ var peg$f96 = function() {
724
727
  return annotate([ops.literal, "/"], location());
725
728
  };
726
- var peg$f96 = function() {
729
+ var peg$f97 = function() {
727
730
  return true;
728
731
  };
729
- var peg$f97 = function(value) {
732
+ var peg$f98 = function(value) {
730
733
  return annotate([ops.spread, value], location());
731
734
  };
732
- var peg$f98 = function(head, tail) {
735
+ var peg$f99 = function(head, tail) {
733
736
  return makeTemplate(ops.templateIndent, head, tail, location());
734
737
  };
735
- var peg$f99 = function(chars) {
738
+ var peg$f100 = function(chars) {
736
739
  return annotate([ops.literal, chars.join("")], location());
737
740
  };
738
- var peg$f100 = function(front, body) {
739
- // TODO: Deprecate @template
740
- const macroName = text().includes("@template") ? "@template" : "_template";
741
- if (macroName === "@template") {
742
- // If the front matter is a macro, apply it to the body
743
- console.warn("Warning: the @template() macro is deprecated. Use _template() instead.");
744
- }
745
- return annotate(applyMacro(front, macroName, body), location());
746
- };
747
741
  var peg$f101 = function(front, body) {
742
+ return annotate(applyMacro(front, "_template", body), location());
743
+ };
744
+ var peg$f102 = function(front, body) {
748
745
  return makeDocument(front, body, location());
749
746
  };
750
- var peg$f102 = function(body) {
747
+ var peg$f103 = function(body) {
751
748
  if (options.front) {
752
749
  return makeDocument(options.front, body, location());
753
750
  }
@@ -757,43 +754,43 @@ function peg$parse(input, options) {
757
754
  );
758
755
  return annotate([ops.lambda, lambdaParameters, body], location());
759
756
  };
760
- var peg$f103 = function(head, tail) {
757
+ var peg$f104 = function(head, tail) {
761
758
  return makeTemplate(ops.templateTree, head, tail, location());
762
759
  };
763
- var peg$f104 = function(chars) {
760
+ var peg$f105 = function(chars) {
764
761
  return annotate([ops.literal, chars.join("")], location());
765
762
  };
766
- var peg$f105 = function(expression) {
763
+ var peg$f106 = function(expression) {
767
764
  return annotate(expression, location());
768
765
  };
769
- var peg$f106 = function(operator, expression) {
766
+ var peg$f107 = function(operator, expression) {
770
767
  return makeUnaryOperation(operator, expression, location());
771
768
  };
772
- var peg$f107 = function(scheme, host, path) {
769
+ var peg$f108 = function(scheme, host, path) {
773
770
  const rest = path ? path[1] : [];
774
771
  const keys = annotate([host, ...rest], location());
775
772
  return makeCall(scheme, keys, location());
776
773
  };
777
- var peg$f108 = function(scheme, keys) {
774
+ var peg$f109 = function(scheme, keys) {
778
775
  return makeCall(scheme, keys, location());
779
776
  };
780
- var peg$f109 = function(chars) {
777
+ var peg$f110 = function(chars) {
781
778
  return annotate([ops.literal, text()], location());
782
779
  };
783
- var peg$f110 = function() {
780
+ var peg$f111 = function() {
784
781
  // A single slash is a path key
785
782
  return annotate([ops.literal, ""], location());
786
783
  };
787
- var peg$f111 = function(char) { return /\s/.test(char); };
788
- var peg$f112 = function(char) { return char; };
789
- var peg$f113 = function(keys) {
784
+ var peg$f112 = function(char) { return /\s/.test(char); };
785
+ var peg$f113 = function(char) { return char; };
786
+ var peg$f114 = function(keys) {
790
787
  return annotate(keys, location());
791
788
  };
792
- var peg$f114 = function() {
789
+ var peg$f115 = function() {
793
790
  return annotate([markers.global, text()], location());
794
791
  };
795
- var peg$f115 = function(char) { return /\s/.test(char); };
796
- var peg$f116 = function(char) { return char; };
792
+ var peg$f116 = function(char) { return /\s/.test(char); };
793
+ var peg$f117 = function(char) { return char; };
797
794
  var peg$currPos = options.peg$currPos | 0;
798
795
  var peg$savedPos = peg$currPos;
799
796
  var peg$posDetailsCache = [{ line: 1, column: 1 }];
@@ -2174,7 +2171,7 @@ function peg$parse(input, options) {
2174
2171
  }
2175
2172
 
2176
2173
  function peg$parseellipsis() {
2177
- var s0;
2174
+ var s0, s1;
2178
2175
 
2179
2176
  if (input.substr(peg$currPos, 3) === peg$c19) {
2180
2177
  s0 = peg$c19;
@@ -2184,13 +2181,19 @@ function peg$parse(input, options) {
2184
2181
  if (peg$silentFails === 0) { peg$fail(peg$e26); }
2185
2182
  }
2186
2183
  if (s0 === peg$FAILED) {
2184
+ s0 = peg$currPos;
2187
2185
  if (input.charCodeAt(peg$currPos) === 8230) {
2188
- s0 = peg$c20;
2186
+ s1 = peg$c20;
2189
2187
  peg$currPos++;
2190
2188
  } else {
2191
- s0 = peg$FAILED;
2189
+ s1 = peg$FAILED;
2192
2190
  if (peg$silentFails === 0) { peg$fail(peg$e27); }
2193
2191
  }
2192
+ if (s1 !== peg$FAILED) {
2193
+ peg$savedPos = s0;
2194
+ s1 = peg$f19();
2195
+ }
2196
+ s0 = s1;
2194
2197
  }
2195
2198
 
2196
2199
  return s0;
@@ -2239,7 +2242,7 @@ function peg$parse(input, options) {
2239
2242
  }
2240
2243
  }
2241
2244
  peg$savedPos = s0;
2242
- s0 = peg$f19(s1, s2);
2245
+ s0 = peg$f20(s1, s2);
2243
2246
  } else {
2244
2247
  peg$currPos = s0;
2245
2248
  s0 = peg$FAILED;
@@ -2303,7 +2306,7 @@ function peg$parse(input, options) {
2303
2306
  }
2304
2307
  if (s1 !== peg$FAILED) {
2305
2308
  peg$savedPos = s0;
2306
- s1 = peg$f20();
2309
+ s1 = peg$f21();
2307
2310
  }
2308
2311
  s0 = s1;
2309
2312
  if (s0 === peg$FAILED) {
@@ -2317,7 +2320,7 @@ function peg$parse(input, options) {
2317
2320
  }
2318
2321
  if (s1 !== peg$FAILED) {
2319
2322
  peg$savedPos = s0;
2320
- s1 = peg$f21();
2323
+ s1 = peg$f22();
2321
2324
  }
2322
2325
  s0 = s1;
2323
2326
  if (s0 === peg$FAILED) {
@@ -2331,7 +2334,7 @@ function peg$parse(input, options) {
2331
2334
  }
2332
2335
  if (s1 !== peg$FAILED) {
2333
2336
  peg$savedPos = s0;
2334
- s1 = peg$f22();
2337
+ s1 = peg$f23();
2335
2338
  }
2336
2339
  s0 = s1;
2337
2340
  if (s0 === peg$FAILED) {
@@ -2345,7 +2348,7 @@ function peg$parse(input, options) {
2345
2348
  }
2346
2349
  if (s1 !== peg$FAILED) {
2347
2350
  peg$savedPos = s0;
2348
- s1 = peg$f23();
2351
+ s1 = peg$f24();
2349
2352
  }
2350
2353
  s0 = s1;
2351
2354
  if (s0 === peg$FAILED) {
@@ -2359,7 +2362,7 @@ function peg$parse(input, options) {
2359
2362
  }
2360
2363
  if (s1 !== peg$FAILED) {
2361
2364
  peg$savedPos = s0;
2362
- s1 = peg$f24();
2365
+ s1 = peg$f25();
2363
2366
  }
2364
2367
  s0 = s1;
2365
2368
  if (s0 === peg$FAILED) {
@@ -2373,7 +2376,7 @@ function peg$parse(input, options) {
2373
2376
  }
2374
2377
  if (s1 !== peg$FAILED) {
2375
2378
  peg$savedPos = s0;
2376
- s1 = peg$f25();
2379
+ s1 = peg$f26();
2377
2380
  }
2378
2381
  s0 = s1;
2379
2382
  if (s0 === peg$FAILED) {
@@ -2387,7 +2390,7 @@ function peg$parse(input, options) {
2387
2390
  }
2388
2391
  if (s1 !== peg$FAILED) {
2389
2392
  peg$savedPos = s0;
2390
- s1 = peg$f26();
2393
+ s1 = peg$f27();
2391
2394
  }
2392
2395
  s0 = s1;
2393
2396
  if (s0 === peg$FAILED) {
@@ -2456,7 +2459,7 @@ function peg$parse(input, options) {
2456
2459
  s1 = null;
2457
2460
  }
2458
2461
  peg$savedPos = s0;
2459
- s1 = peg$f27();
2462
+ s1 = peg$f28();
2460
2463
  s0 = s1;
2461
2464
  }
2462
2465
 
@@ -2486,7 +2489,7 @@ function peg$parse(input, options) {
2486
2489
  s1 = null;
2487
2490
  }
2488
2491
  peg$savedPos = s0;
2489
- s1 = peg$f28();
2492
+ s1 = peg$f29();
2490
2493
  s0 = s1;
2491
2494
  }
2492
2495
 
@@ -2516,7 +2519,7 @@ function peg$parse(input, options) {
2516
2519
  s1 = null;
2517
2520
  }
2518
2521
  peg$savedPos = s0;
2519
- s1 = peg$f29();
2522
+ s1 = peg$f30();
2520
2523
  s0 = s1;
2521
2524
  }
2522
2525
 
@@ -2546,7 +2549,7 @@ function peg$parse(input, options) {
2546
2549
  s1 = null;
2547
2550
  }
2548
2551
  peg$savedPos = s0;
2549
- s1 = peg$f30();
2552
+ s1 = peg$f31();
2550
2553
  s0 = s1;
2551
2554
  }
2552
2555
 
@@ -2576,7 +2579,7 @@ function peg$parse(input, options) {
2576
2579
  s1 = null;
2577
2580
  }
2578
2581
  peg$savedPos = s0;
2579
- s1 = peg$f31();
2582
+ s1 = peg$f32();
2580
2583
  s0 = s1;
2581
2584
  }
2582
2585
 
@@ -2600,7 +2603,7 @@ function peg$parse(input, options) {
2600
2603
  s1 = null;
2601
2604
  }
2602
2605
  peg$savedPos = s0;
2603
- s1 = peg$f32();
2606
+ s1 = peg$f33();
2604
2607
  s0 = s1;
2605
2608
  }
2606
2609
 
@@ -2624,7 +2627,7 @@ function peg$parse(input, options) {
2624
2627
  s1 = null;
2625
2628
  }
2626
2629
  peg$savedPos = s0;
2627
- s1 = peg$f33();
2630
+ s1 = peg$f34();
2628
2631
  s0 = s1;
2629
2632
  }
2630
2633
 
@@ -2654,7 +2657,7 @@ function peg$parse(input, options) {
2654
2657
  s1 = null;
2655
2658
  }
2656
2659
  peg$savedPos = s0;
2657
- s1 = peg$f34();
2660
+ s1 = peg$f35();
2658
2661
  s0 = s1;
2659
2662
  }
2660
2663
 
@@ -2684,7 +2687,7 @@ function peg$parse(input, options) {
2684
2687
  s1 = null;
2685
2688
  }
2686
2689
  peg$savedPos = s0;
2687
- s1 = peg$f35();
2690
+ s1 = peg$f36();
2688
2691
  s0 = s1;
2689
2692
  }
2690
2693
 
@@ -2708,7 +2711,7 @@ function peg$parse(input, options) {
2708
2711
  s1 = null;
2709
2712
  }
2710
2713
  peg$savedPos = s0;
2711
- s1 = peg$f36();
2714
+ s1 = peg$f37();
2712
2715
  s0 = s1;
2713
2716
  }
2714
2717
 
@@ -2732,7 +2735,7 @@ function peg$parse(input, options) {
2732
2735
  s1 = null;
2733
2736
  }
2734
2737
  peg$savedPos = s0;
2735
- s1 = peg$f37();
2738
+ s1 = peg$f38();
2736
2739
  s0 = s1;
2737
2740
  }
2738
2741
 
@@ -2781,7 +2784,7 @@ function peg$parse(input, options) {
2781
2784
  s2 = null;
2782
2785
  }
2783
2786
  peg$savedPos = s0;
2784
- s0 = peg$f38(s1, s2);
2787
+ s0 = peg$f39(s1, s2);
2785
2788
  } else {
2786
2789
  peg$currPos = s0;
2787
2790
  s0 = peg$FAILED;
@@ -2827,7 +2830,7 @@ function peg$parse(input, options) {
2827
2830
  s3 = peg$parsedigits();
2828
2831
  if (s3 !== peg$FAILED) {
2829
2832
  peg$savedPos = s0;
2830
- s0 = peg$f39();
2833
+ s0 = peg$f40();
2831
2834
  } else {
2832
2835
  peg$currPos = s0;
2833
2836
  s0 = peg$FAILED;
@@ -2866,7 +2869,7 @@ function peg$parse(input, options) {
2866
2869
  s1 = peg$parsefrontDelimiter();
2867
2870
  if (s1 !== peg$FAILED) {
2868
2871
  peg$savedPos = peg$currPos;
2869
- s2 = peg$f40();
2872
+ s2 = peg$f41();
2870
2873
  if (s2) {
2871
2874
  s2 = undefined;
2872
2875
  } else {
@@ -2965,7 +2968,7 @@ function peg$parse(input, options) {
2965
2968
  }
2966
2969
  }
2967
2970
  peg$savedPos = s0;
2968
- s1 = peg$f41(s1);
2971
+ s1 = peg$f42(s1);
2969
2972
  s0 = s1;
2970
2973
 
2971
2974
  return s0;
@@ -2982,7 +2985,7 @@ function peg$parse(input, options) {
2982
2985
  s3 = peg$parsefrontDelimiter();
2983
2986
  if (s3 !== peg$FAILED) {
2984
2987
  peg$savedPos = s0;
2985
- s0 = peg$f42(s2);
2988
+ s0 = peg$f43(s2);
2986
2989
  } else {
2987
2990
  peg$currPos = s0;
2988
2991
  s0 = peg$FAILED;
@@ -3018,7 +3021,7 @@ function peg$parse(input, options) {
3018
3021
  s3 = peg$parseexpectClosingParenthesis();
3019
3022
  if (s3 !== peg$FAILED) {
3020
3023
  peg$savedPos = s0;
3021
- s0 = peg$f43(s2);
3024
+ s0 = peg$f44(s2);
3022
3025
  } else {
3023
3026
  peg$currPos = s0;
3024
3027
  s0 = peg$FAILED;
@@ -3062,7 +3065,7 @@ function peg$parse(input, options) {
3062
3065
  s3 = peg$parseexpectGuillemet();
3063
3066
  if (s3 !== peg$FAILED) {
3064
3067
  peg$savedPos = s0;
3065
- s0 = peg$f44(s2);
3068
+ s0 = peg$f45(s2);
3066
3069
  } else {
3067
3070
  peg$currPos = s0;
3068
3071
  s0 = peg$FAILED;
@@ -3154,7 +3157,7 @@ function peg$parse(input, options) {
3154
3157
  s3 = null;
3155
3158
  }
3156
3159
  peg$savedPos = s0;
3157
- s0 = peg$f45(s1, s2, s3);
3160
+ s0 = peg$f46(s1, s2, s3);
3158
3161
  } else {
3159
3162
  peg$currPos = s0;
3160
3163
  s0 = peg$FAILED;
@@ -3175,7 +3178,7 @@ function peg$parse(input, options) {
3175
3178
  s1 = peg$parsekey();
3176
3179
  if (s1 !== peg$FAILED) {
3177
3180
  peg$savedPos = s0;
3178
- s1 = peg$f46();
3181
+ s1 = peg$f47();
3179
3182
  }
3180
3183
  s0 = s1;
3181
3184
 
@@ -3209,7 +3212,7 @@ function peg$parse(input, options) {
3209
3212
  }
3210
3213
  if (s1 !== peg$FAILED) {
3211
3214
  peg$savedPos = s0;
3212
- s1 = peg$f47(s1);
3215
+ s1 = peg$f48(s1);
3213
3216
  }
3214
3217
  s0 = s1;
3215
3218
 
@@ -3223,7 +3226,7 @@ function peg$parse(input, options) {
3223
3226
  s1 = peg$parseidentifier();
3224
3227
  if (s1 !== peg$FAILED) {
3225
3228
  peg$savedPos = s0;
3226
- s1 = peg$f48(s1);
3229
+ s1 = peg$f49(s1);
3227
3230
  }
3228
3231
  s0 = s1;
3229
3232
 
@@ -3244,7 +3247,7 @@ function peg$parse(input, options) {
3244
3247
  }
3245
3248
  if (s1 !== peg$FAILED) {
3246
3249
  peg$savedPos = peg$currPos;
3247
- s2 = peg$f49(s1);
3250
+ s2 = peg$f50(s1);
3248
3251
  if (s2) {
3249
3252
  s2 = undefined;
3250
3253
  } else {
@@ -3284,7 +3287,7 @@ function peg$parse(input, options) {
3284
3287
  }
3285
3288
  if (s1 !== peg$FAILED) {
3286
3289
  peg$savedPos = peg$currPos;
3287
- s2 = peg$f50(s1);
3290
+ s2 = peg$f51(s1);
3288
3291
  if (s2) {
3289
3292
  s2 = undefined;
3290
3293
  } else {
@@ -3344,7 +3347,7 @@ function peg$parse(input, options) {
3344
3347
  s2 = null;
3345
3348
  }
3346
3349
  peg$savedPos = s0;
3347
- s0 = peg$f51(s1, s2);
3350
+ s0 = peg$f52(s1, s2);
3348
3351
  } else {
3349
3352
  peg$currPos = s0;
3350
3353
  s0 = peg$FAILED;
@@ -3395,7 +3398,7 @@ function peg$parse(input, options) {
3395
3398
  s3 = null;
3396
3399
  }
3397
3400
  peg$savedPos = s0;
3398
- s0 = peg$f52(s2);
3401
+ s0 = peg$f53(s2);
3399
3402
  } else {
3400
3403
  peg$currPos = s0;
3401
3404
  s0 = peg$FAILED;
@@ -3430,7 +3433,7 @@ function peg$parse(input, options) {
3430
3433
  s1 = peg$parsedigits();
3431
3434
  if (s1 !== peg$FAILED) {
3432
3435
  peg$savedPos = s0;
3433
- s1 = peg$f53();
3436
+ s1 = peg$f54();
3434
3437
  }
3435
3438
  s0 = s1;
3436
3439
  peg$silentFails--;
@@ -3455,7 +3458,7 @@ function peg$parse(input, options) {
3455
3458
  s3 = peg$parsekeyChar();
3456
3459
  }
3457
3460
  peg$savedPos = s0;
3458
- s0 = peg$f54();
3461
+ s0 = peg$f55();
3459
3462
  } else {
3460
3463
  peg$currPos = s0;
3461
3464
  s0 = peg$FAILED;
@@ -3506,7 +3509,7 @@ function peg$parse(input, options) {
3506
3509
  }
3507
3510
  if (s1 !== peg$FAILED) {
3508
3511
  peg$savedPos = peg$currPos;
3509
- s2 = peg$f55(s1);
3512
+ s2 = peg$f56(s1);
3510
3513
  if (s2) {
3511
3514
  s2 = undefined;
3512
3515
  } else {
@@ -3572,7 +3575,7 @@ function peg$parse(input, options) {
3572
3575
  s2 = null;
3573
3576
  }
3574
3577
  peg$savedPos = s0;
3575
- s0 = peg$f56(s1);
3578
+ s0 = peg$f57(s1);
3576
3579
  } else {
3577
3580
  peg$currPos = s0;
3578
3581
  s0 = peg$FAILED;
@@ -3641,7 +3644,7 @@ function peg$parse(input, options) {
3641
3644
  }
3642
3645
  }
3643
3646
  peg$savedPos = s0;
3644
- s0 = peg$f57(s1, s2);
3647
+ s0 = peg$f58(s1, s2);
3645
3648
  } else {
3646
3649
  peg$currPos = s0;
3647
3650
  s0 = peg$FAILED;
@@ -3705,7 +3708,7 @@ function peg$parse(input, options) {
3705
3708
  }
3706
3709
  }
3707
3710
  peg$savedPos = s0;
3708
- s0 = peg$f58(s1, s2);
3711
+ s0 = peg$f59(s1, s2);
3709
3712
  } else {
3710
3713
  peg$currPos = s0;
3711
3714
  s0 = peg$FAILED;
@@ -3874,7 +3877,7 @@ function peg$parse(input, options) {
3874
3877
  }
3875
3878
  if (s3 !== peg$FAILED) {
3876
3879
  peg$savedPos = s0;
3877
- s0 = peg$f59();
3880
+ s0 = peg$f60();
3878
3881
  } else {
3879
3882
  peg$currPos = s0;
3880
3883
  s0 = peg$FAILED;
@@ -3950,7 +3953,7 @@ function peg$parse(input, options) {
3950
3953
  }
3951
3954
  }
3952
3955
  peg$savedPos = s0;
3953
- s0 = peg$f60(s1, s2);
3956
+ s0 = peg$f61(s1, s2);
3954
3957
  } else {
3955
3958
  peg$currPos = s0;
3956
3959
  s0 = peg$FAILED;
@@ -3993,7 +3996,7 @@ function peg$parse(input, options) {
3993
3996
  s4 = null;
3994
3997
  }
3995
3998
  peg$savedPos = s0;
3996
- s0 = peg$f61(s3, s4);
3999
+ s0 = peg$f62(s3, s4);
3997
4000
  } else {
3998
4001
  peg$currPos = s0;
3999
4002
  s0 = peg$FAILED;
@@ -4017,7 +4020,7 @@ function peg$parse(input, options) {
4017
4020
  s3 = peg$parseparenthesesArguments();
4018
4021
  if (s3 !== peg$FAILED) {
4019
4022
  peg$savedPos = s0;
4020
- s0 = peg$f62(s2, s3);
4023
+ s0 = peg$f63(s2, s3);
4021
4024
  } else {
4022
4025
  peg$currPos = s0;
4023
4026
  s0 = peg$FAILED;
@@ -4139,7 +4142,7 @@ function peg$parse(input, options) {
4139
4142
  }
4140
4143
  }
4141
4144
  peg$savedPos = s0;
4142
- s0 = peg$f63(s1, s2);
4145
+ s0 = peg$f64(s1, s2);
4143
4146
  } else {
4144
4147
  peg$currPos = s0;
4145
4148
  s0 = peg$FAILED;
@@ -4170,7 +4173,7 @@ function peg$parse(input, options) {
4170
4173
  s5 = peg$parseexpectClosingBrace();
4171
4174
  if (s5 !== peg$FAILED) {
4172
4175
  peg$savedPos = s0;
4173
- s0 = peg$f64(s3);
4176
+ s0 = peg$f65(s3);
4174
4177
  } else {
4175
4178
  peg$currPos = s0;
4176
4179
  s0 = peg$FAILED;
@@ -4223,7 +4226,7 @@ function peg$parse(input, options) {
4223
4226
  s2 = null;
4224
4227
  }
4225
4228
  peg$savedPos = s0;
4226
- s0 = peg$f65(s1);
4229
+ s0 = peg$f66(s1);
4227
4230
  } else {
4228
4231
  peg$currPos = s0;
4229
4232
  s0 = peg$FAILED;
@@ -4269,7 +4272,7 @@ function peg$parse(input, options) {
4269
4272
  s5 = peg$parseexpectPipelineExpression();
4270
4273
  if (s5 !== peg$FAILED) {
4271
4274
  peg$savedPos = s0;
4272
- s0 = peg$f66(s1, s5);
4275
+ s0 = peg$f67(s1, s5);
4273
4276
  } else {
4274
4277
  peg$currPos = s0;
4275
4278
  s0 = peg$FAILED;
@@ -4330,7 +4333,7 @@ function peg$parse(input, options) {
4330
4333
  }
4331
4334
  if (s1 !== peg$FAILED) {
4332
4335
  peg$savedPos = s0;
4333
- s1 = peg$f67(s1);
4336
+ s1 = peg$f68(s1);
4334
4337
  }
4335
4338
  s0 = s1;
4336
4339
 
@@ -4374,7 +4377,7 @@ function peg$parse(input, options) {
4374
4377
  s5 = peg$parseexpectPipelineExpression();
4375
4378
  if (s5 !== peg$FAILED) {
4376
4379
  peg$savedPos = s0;
4377
- s0 = peg$f68(s1, s5);
4380
+ s0 = peg$f69(s1, s5);
4378
4381
  } else {
4379
4382
  peg$currPos = s0;
4380
4383
  s0 = peg$FAILED;
@@ -4404,7 +4407,7 @@ function peg$parse(input, options) {
4404
4407
  s1 = peg$parseobjectPublicKey();
4405
4408
  if (s1 !== peg$FAILED) {
4406
4409
  peg$savedPos = s0;
4407
- s1 = peg$f69(s1);
4410
+ s1 = peg$f70(s1);
4408
4411
  }
4409
4412
  s0 = s1;
4410
4413
  if (s0 === peg$FAILED) {
@@ -4412,7 +4415,7 @@ function peg$parse(input, options) {
4412
4415
  s1 = peg$parseangleBracketLiteral();
4413
4416
  if (s1 !== peg$FAILED) {
4414
4417
  peg$savedPos = s0;
4415
- s1 = peg$f70(s1);
4418
+ s1 = peg$f71(s1);
4416
4419
  }
4417
4420
  s0 = s1;
4418
4421
  }
@@ -4442,7 +4445,7 @@ function peg$parse(input, options) {
4442
4445
  s2 = null;
4443
4446
  }
4444
4447
  peg$savedPos = s0;
4445
- s0 = peg$f71(s1, s2);
4448
+ s0 = peg$f72(s1, s2);
4446
4449
  } else {
4447
4450
  peg$currPos = s0;
4448
4451
  s0 = peg$FAILED;
@@ -4452,7 +4455,7 @@ function peg$parse(input, options) {
4452
4455
  s1 = peg$parsestringLiteral();
4453
4456
  if (s1 !== peg$FAILED) {
4454
4457
  peg$savedPos = s0;
4455
- s1 = peg$f72(s1);
4458
+ s1 = peg$f73(s1);
4456
4459
  }
4457
4460
  s0 = s1;
4458
4461
  }
@@ -4477,7 +4480,7 @@ function peg$parse(input, options) {
4477
4480
  s4 = peg$parseidentifier();
4478
4481
  if (s4 !== peg$FAILED) {
4479
4482
  peg$savedPos = s0;
4480
- s0 = peg$f73(s4);
4483
+ s0 = peg$f74(s4);
4481
4484
  } else {
4482
4485
  peg$currPos = s0;
4483
4486
  s0 = peg$FAILED;
@@ -4497,7 +4500,7 @@ function peg$parse(input, options) {
4497
4500
  s1 = peg$parsekey();
4498
4501
  if (s1 !== peg$FAILED) {
4499
4502
  peg$savedPos = s0;
4500
- s1 = peg$f74(s1);
4503
+ s1 = peg$f75(s1);
4501
4504
  }
4502
4505
  s0 = s1;
4503
4506
 
@@ -4539,7 +4542,7 @@ function peg$parse(input, options) {
4539
4542
  s2 = null;
4540
4543
  }
4541
4544
  peg$savedPos = s0;
4542
- s0 = peg$f75(s1);
4545
+ s0 = peg$f76(s1);
4543
4546
  } else {
4544
4547
  peg$currPos = s0;
4545
4548
  s0 = peg$FAILED;
@@ -4555,7 +4558,7 @@ function peg$parse(input, options) {
4555
4558
  s1 = peg$parseparameter();
4556
4559
  if (s1 !== peg$FAILED) {
4557
4560
  peg$savedPos = s0;
4558
- s1 = peg$f76(s1);
4561
+ s1 = peg$f77(s1);
4559
4562
  }
4560
4563
  s0 = s1;
4561
4564
 
@@ -4584,7 +4587,7 @@ function peg$parse(input, options) {
4584
4587
  s5 = peg$parseexpectClosingParenthesis();
4585
4588
  if (s5 !== peg$FAILED) {
4586
4589
  peg$savedPos = s0;
4587
- s0 = peg$f77(s3);
4590
+ s0 = peg$f78(s3);
4588
4591
  } else {
4589
4592
  peg$currPos = s0;
4590
4593
  s0 = peg$FAILED;
@@ -4619,7 +4622,7 @@ function peg$parse(input, options) {
4619
4622
  s2 = null;
4620
4623
  }
4621
4624
  peg$savedPos = s0;
4622
- s0 = peg$f78(s2);
4625
+ s0 = peg$f79(s2);
4623
4626
  } else {
4624
4627
  peg$currPos = s0;
4625
4628
  s0 = peg$FAILED;
@@ -4655,7 +4658,7 @@ function peg$parse(input, options) {
4655
4658
  s1 = peg$parsepathKeys();
4656
4659
  if (s1 !== peg$FAILED) {
4657
4660
  peg$savedPos = s0;
4658
- s1 = peg$f79(s1);
4661
+ s1 = peg$f80(s1);
4659
4662
  }
4660
4663
  s0 = s1;
4661
4664
 
@@ -4679,7 +4682,7 @@ function peg$parse(input, options) {
4679
4682
  s2 = null;
4680
4683
  }
4681
4684
  peg$savedPos = s0;
4682
- s0 = peg$f80(s1);
4685
+ s0 = peg$f81(s1);
4683
4686
  } else {
4684
4687
  peg$currPos = s0;
4685
4688
  s0 = peg$FAILED;
@@ -4695,7 +4698,7 @@ function peg$parse(input, options) {
4695
4698
  }
4696
4699
  if (s1 !== peg$FAILED) {
4697
4700
  peg$savedPos = s0;
4698
- s1 = peg$f81();
4701
+ s1 = peg$f82();
4699
4702
  }
4700
4703
  s0 = s1;
4701
4704
  }
@@ -4746,7 +4749,7 @@ function peg$parse(input, options) {
4746
4749
  }
4747
4750
  }
4748
4751
  peg$savedPos = s0;
4749
- s0 = peg$f82(s1, s2);
4752
+ s0 = peg$f83(s1, s2);
4750
4753
  } else {
4751
4754
  peg$currPos = s0;
4752
4755
  s0 = peg$FAILED;
@@ -4838,7 +4841,7 @@ function peg$parse(input, options) {
4838
4841
  var s0;
4839
4842
 
4840
4843
  peg$savedPos = peg$currPos;
4841
- s0 = peg$f83();
4844
+ s0 = peg$f84();
4842
4845
  if (s0) {
4843
4846
  s0 = undefined;
4844
4847
  } else {
@@ -4852,20 +4855,30 @@ function peg$parse(input, options) {
4852
4855
  var s0, s1, s2, s3, s4;
4853
4856
 
4854
4857
  s0 = peg$currPos;
4855
- s1 = peg$parse__();
4856
- if (input.charCodeAt(peg$currPos) === 46) {
4857
- s2 = peg$c38;
4858
- peg$currPos++;
4859
- } else {
4860
- s2 = peg$FAILED;
4861
- if (peg$silentFails === 0) { peg$fail(peg$e48); }
4862
- }
4863
- if (s2 !== peg$FAILED) {
4864
- s3 = peg$parse__();
4865
- s4 = peg$parseidentifierLiteral();
4866
- if (s4 !== peg$FAILED) {
4867
- peg$savedPos = s0;
4868
- s0 = peg$f84(s4);
4858
+ s1 = peg$parsewhitespaceOptionalForProgram();
4859
+ if (s1 !== peg$FAILED) {
4860
+ if (input.charCodeAt(peg$currPos) === 46) {
4861
+ s2 = peg$c38;
4862
+ peg$currPos++;
4863
+ } else {
4864
+ s2 = peg$FAILED;
4865
+ if (peg$silentFails === 0) { peg$fail(peg$e48); }
4866
+ }
4867
+ if (s2 !== peg$FAILED) {
4868
+ s3 = peg$parsewhitespaceOptionalForProgram();
4869
+ if (s3 !== peg$FAILED) {
4870
+ s4 = peg$parseidentifierLiteral();
4871
+ if (s4 !== peg$FAILED) {
4872
+ peg$savedPos = s0;
4873
+ s0 = peg$f85(s4);
4874
+ } else {
4875
+ peg$currPos = s0;
4876
+ s0 = peg$FAILED;
4877
+ }
4878
+ } else {
4879
+ peg$currPos = s0;
4880
+ s0 = peg$FAILED;
4881
+ }
4869
4882
  } else {
4870
4883
  peg$currPos = s0;
4871
4884
  s0 = peg$FAILED;
@@ -4901,7 +4914,7 @@ function peg$parse(input, options) {
4901
4914
  }
4902
4915
  }
4903
4916
  peg$savedPos = s0;
4904
- s1 = peg$f85(s1);
4917
+ s1 = peg$f86(s1);
4905
4918
  s0 = s1;
4906
4919
 
4907
4920
  return s0;
@@ -4935,7 +4948,7 @@ function peg$parse(input, options) {
4935
4948
  if (s3 !== peg$FAILED) {
4936
4949
  s4 = peg$parseregexFlags();
4937
4950
  peg$savedPos = s0;
4938
- s0 = peg$f86(s2, s4);
4951
+ s0 = peg$f87(s2, s4);
4939
4952
  } else {
4940
4953
  peg$currPos = s0;
4941
4954
  s0 = peg$FAILED;
@@ -5018,7 +5031,7 @@ function peg$parse(input, options) {
5018
5031
  }
5019
5032
  }
5020
5033
  peg$savedPos = s0;
5021
- s0 = peg$f87(s1, s2);
5034
+ s0 = peg$f88(s1, s2);
5022
5035
  } else {
5023
5036
  peg$currPos = s0;
5024
5037
  s0 = peg$FAILED;
@@ -5133,7 +5146,7 @@ function peg$parse(input, options) {
5133
5146
  }
5134
5147
  }
5135
5148
  peg$savedPos = s0;
5136
- s0 = peg$f88();
5149
+ s0 = peg$f89();
5137
5150
  } else {
5138
5151
  peg$currPos = s0;
5139
5152
  s0 = peg$FAILED;
@@ -5146,7 +5159,7 @@ function peg$parse(input, options) {
5146
5159
  var s0;
5147
5160
 
5148
5161
  peg$savedPos = peg$currPos;
5149
- s0 = peg$f89();
5162
+ s0 = peg$f90();
5150
5163
  if (s0) {
5151
5164
  s0 = undefined;
5152
5165
  } else {
@@ -5199,7 +5212,7 @@ function peg$parse(input, options) {
5199
5212
  }
5200
5213
  }
5201
5214
  peg$savedPos = s0;
5202
- s0 = peg$f90(s1, s2);
5215
+ s0 = peg$f91(s1, s2);
5203
5216
  } else {
5204
5217
  peg$currPos = s0;
5205
5218
  s0 = peg$FAILED;
@@ -5279,7 +5292,7 @@ function peg$parse(input, options) {
5279
5292
  s5 = peg$parseimplicitParenthesesCallExpression();
5280
5293
  if (s5 !== peg$FAILED) {
5281
5294
  peg$savedPos = s0;
5282
- s0 = peg$f91(s5);
5295
+ s0 = peg$f92(s5);
5283
5296
  } else {
5284
5297
  peg$currPos = s0;
5285
5298
  s0 = peg$FAILED;
@@ -5362,7 +5375,7 @@ function peg$parse(input, options) {
5362
5375
  }
5363
5376
  }
5364
5377
  peg$savedPos = s0;
5365
- s0 = peg$f92();
5378
+ s0 = peg$f93();
5366
5379
  } else {
5367
5380
  peg$currPos = s0;
5368
5381
  s0 = peg$FAILED;
@@ -5393,7 +5406,7 @@ function peg$parse(input, options) {
5393
5406
  s3 = peg$parseexpectSingleQuote();
5394
5407
  if (s3 !== peg$FAILED) {
5395
5408
  peg$savedPos = s0;
5396
- s0 = peg$f93(s2);
5409
+ s0 = peg$f94(s2);
5397
5410
  } else {
5398
5411
  peg$currPos = s0;
5399
5412
  s0 = peg$FAILED;
@@ -5457,7 +5470,7 @@ function peg$parse(input, options) {
5457
5470
  s1 = peg$parseslashFollows();
5458
5471
  if (s1 !== peg$FAILED) {
5459
5472
  peg$savedPos = s0;
5460
- s1 = peg$f94();
5473
+ s1 = peg$f95();
5461
5474
  }
5462
5475
  s0 = s1;
5463
5476
 
@@ -5492,7 +5505,7 @@ function peg$parse(input, options) {
5492
5505
  }
5493
5506
  if (s1 !== peg$FAILED) {
5494
5507
  peg$savedPos = s0;
5495
- s1 = peg$f95();
5508
+ s1 = peg$f96();
5496
5509
  }
5497
5510
  s0 = s1;
5498
5511
 
@@ -5521,7 +5534,7 @@ function peg$parse(input, options) {
5521
5534
  }
5522
5535
  if (s1 !== peg$FAILED) {
5523
5536
  peg$savedPos = s0;
5524
- s1 = peg$f96();
5537
+ s1 = peg$f97();
5525
5538
  }
5526
5539
  s0 = s1;
5527
5540
 
@@ -5538,7 +5551,7 @@ function peg$parse(input, options) {
5538
5551
  s3 = peg$parseexpectPipelineExpression();
5539
5552
  if (s3 !== peg$FAILED) {
5540
5553
  peg$savedPos = s0;
5541
- s0 = peg$f97(s3);
5554
+ s0 = peg$f98(s3);
5542
5555
  } else {
5543
5556
  peg$currPos = s0;
5544
5557
  s0 = peg$FAILED;
@@ -5615,7 +5628,7 @@ function peg$parse(input, options) {
5615
5628
  }
5616
5629
  }
5617
5630
  peg$savedPos = s0;
5618
- s0 = peg$f98(s1, s2);
5631
+ s0 = peg$f99(s1, s2);
5619
5632
  peg$silentFails--;
5620
5633
  s1 = peg$FAILED;
5621
5634
  if (peg$silentFails === 0) { peg$fail(peg$e102); }
@@ -5671,7 +5684,7 @@ function peg$parse(input, options) {
5671
5684
  s2 = peg$parsetemplateBodyChar();
5672
5685
  }
5673
5686
  peg$savedPos = s0;
5674
- s1 = peg$f99(s1);
5687
+ s1 = peg$f100(s1);
5675
5688
  s0 = s1;
5676
5689
  peg$silentFails--;
5677
5690
  s1 = peg$FAILED;
@@ -5690,7 +5703,7 @@ function peg$parse(input, options) {
5690
5703
  s2 = peg$parse__();
5691
5704
  s3 = peg$parsetemplateBody();
5692
5705
  peg$savedPos = s0;
5693
- s0 = peg$f100(s1, s3);
5706
+ s0 = peg$f101(s1, s3);
5694
5707
  } else {
5695
5708
  peg$currPos = s0;
5696
5709
  s0 = peg$FAILED;
@@ -5701,7 +5714,7 @@ function peg$parse(input, options) {
5701
5714
  if (s1 !== peg$FAILED) {
5702
5715
  s2 = peg$parsetemplateBody();
5703
5716
  peg$savedPos = s0;
5704
- s0 = peg$f101(s1, s2);
5717
+ s0 = peg$f102(s1, s2);
5705
5718
  } else {
5706
5719
  peg$currPos = s0;
5707
5720
  s0 = peg$FAILED;
@@ -5710,7 +5723,7 @@ function peg$parse(input, options) {
5710
5723
  s0 = peg$currPos;
5711
5724
  s1 = peg$parsetemplateBody();
5712
5725
  peg$savedPos = s0;
5713
- s1 = peg$f102(s1);
5726
+ s1 = peg$f103(s1);
5714
5727
  s0 = s1;
5715
5728
  }
5716
5729
  }
@@ -5764,7 +5777,7 @@ function peg$parse(input, options) {
5764
5777
  s4 = peg$parseexpectBacktick();
5765
5778
  if (s4 !== peg$FAILED) {
5766
5779
  peg$savedPos = s0;
5767
- s0 = peg$f103(s2, s3);
5780
+ s0 = peg$f104(s2, s3);
5768
5781
  } else {
5769
5782
  peg$currPos = s0;
5770
5783
  s0 = peg$FAILED;
@@ -5838,7 +5851,7 @@ function peg$parse(input, options) {
5838
5851
  s2 = peg$parsetemplateLiteralChar();
5839
5852
  }
5840
5853
  peg$savedPos = s0;
5841
- s1 = peg$f104(s1);
5854
+ s1 = peg$f105(s1);
5842
5855
  s0 = s1;
5843
5856
 
5844
5857
  return s0;
@@ -5868,7 +5881,7 @@ function peg$parse(input, options) {
5868
5881
  }
5869
5882
  if (s3 !== peg$FAILED) {
5870
5883
  peg$savedPos = s0;
5871
- s0 = peg$f105(s2);
5884
+ s0 = peg$f106(s2);
5872
5885
  } else {
5873
5886
  peg$currPos = s0;
5874
5887
  s0 = peg$FAILED;
@@ -5917,7 +5930,7 @@ function peg$parse(input, options) {
5917
5930
  s3 = peg$parseexpectUnaryExpression();
5918
5931
  if (s3 !== peg$FAILED) {
5919
5932
  peg$savedPos = s0;
5920
- s0 = peg$f106(s1, s3);
5933
+ s0 = peg$f107(s1, s3);
5921
5934
  } else {
5922
5935
  peg$currPos = s0;
5923
5936
  s0 = peg$FAILED;
@@ -5974,7 +5987,7 @@ function peg$parse(input, options) {
5974
5987
  s4 = null;
5975
5988
  }
5976
5989
  peg$savedPos = s0;
5977
- s0 = peg$f107(s1, s3, s4);
5990
+ s0 = peg$f108(s1, s3, s4);
5978
5991
  } else {
5979
5992
  peg$currPos = s0;
5980
5993
  s0 = peg$FAILED;
@@ -5994,7 +6007,7 @@ function peg$parse(input, options) {
5994
6007
  s2 = peg$parsepathKeys();
5995
6008
  if (s2 !== peg$FAILED) {
5996
6009
  peg$savedPos = s0;
5997
- s0 = peg$f108(s1, s2);
6010
+ s0 = peg$f109(s1, s2);
5998
6011
  } else {
5999
6012
  peg$currPos = s0;
6000
6013
  s0 = peg$FAILED;
@@ -6048,7 +6061,7 @@ function peg$parse(input, options) {
6048
6061
  s2 = null;
6049
6062
  }
6050
6063
  peg$savedPos = s0;
6051
- s0 = peg$f109(s1);
6064
+ s0 = peg$f110(s1);
6052
6065
  } else {
6053
6066
  peg$currPos = s0;
6054
6067
  s0 = peg$FAILED;
@@ -6064,7 +6077,7 @@ function peg$parse(input, options) {
6064
6077
  }
6065
6078
  if (s1 !== peg$FAILED) {
6066
6079
  peg$savedPos = s0;
6067
- s1 = peg$f110();
6080
+ s1 = peg$f111();
6068
6081
  }
6069
6082
  s0 = s1;
6070
6083
  }
@@ -6087,7 +6100,7 @@ function peg$parse(input, options) {
6087
6100
  s2 = peg$currPos;
6088
6101
  peg$silentFails++;
6089
6102
  peg$savedPos = peg$currPos;
6090
- s3 = peg$f111(s1);
6103
+ s3 = peg$f112(s1);
6091
6104
  if (s3) {
6092
6105
  s3 = undefined;
6093
6106
  } else {
@@ -6102,7 +6115,7 @@ function peg$parse(input, options) {
6102
6115
  }
6103
6116
  if (s2 !== peg$FAILED) {
6104
6117
  peg$savedPos = s0;
6105
- s0 = peg$f112(s1);
6118
+ s0 = peg$f113(s1);
6106
6119
  } else {
6107
6120
  peg$currPos = s0;
6108
6121
  s0 = peg$FAILED;
@@ -6138,7 +6151,7 @@ function peg$parse(input, options) {
6138
6151
  }
6139
6152
  if (s1 !== peg$FAILED) {
6140
6153
  peg$savedPos = s0;
6141
- s1 = peg$f113(s1);
6154
+ s1 = peg$f114(s1);
6142
6155
  }
6143
6156
  s0 = s1;
6144
6157
  peg$silentFails--;
@@ -6189,7 +6202,7 @@ function peg$parse(input, options) {
6189
6202
  }
6190
6203
  if (s3 !== peg$FAILED) {
6191
6204
  peg$savedPos = s0;
6192
- s0 = peg$f114();
6205
+ s0 = peg$f115();
6193
6206
  } else {
6194
6207
  peg$currPos = s0;
6195
6208
  s0 = peg$FAILED;
@@ -6292,7 +6305,7 @@ function peg$parse(input, options) {
6292
6305
  }
6293
6306
  if (s1 !== peg$FAILED) {
6294
6307
  peg$savedPos = peg$currPos;
6295
- s2 = peg$f115(s1);
6308
+ s2 = peg$f116(s1);
6296
6309
  if (s2) {
6297
6310
  s2 = undefined;
6298
6311
  } else {
@@ -6300,7 +6313,7 @@ function peg$parse(input, options) {
6300
6313
  }
6301
6314
  if (s2 !== peg$FAILED) {
6302
6315
  peg$savedPos = s0;
6303
- s0 = peg$f116(s1);
6316
+ s0 = peg$f117(s1);
6304
6317
  } else {
6305
6318
  peg$currPos = s0;
6306
6319
  s0 = peg$FAILED;
@@ -6313,6 +6326,26 @@ function peg$parse(input, options) {
6313
6326
  return s0;
6314
6327
  }
6315
6328
 
6329
+ function peg$parsewhitespaceOptionalForProgram() {
6330
+ var s0, s1, s2;
6331
+
6332
+ s0 = peg$currPos;
6333
+ s1 = peg$parseprogramMode();
6334
+ if (s1 !== peg$FAILED) {
6335
+ s2 = peg$parse__();
6336
+ s1 = [s1, s2];
6337
+ s0 = s1;
6338
+ } else {
6339
+ peg$currPos = s0;
6340
+ s0 = peg$FAILED;
6341
+ }
6342
+ if (s0 === peg$FAILED) {
6343
+ s0 = peg$parseshellMode();
6344
+ }
6345
+
6346
+ return s0;
6347
+ }
6348
+
6316
6349
  function peg$parsewhitespaceWithNewLine() {
6317
6350
  var s0, s1, s2, s3, s4;
6318
6351
 
@@ -6508,6 +6541,7 @@ const peg$allowedStartRules = [
6508
6541
  "unaryOperator",
6509
6542
  "whitespace",
6510
6543
  "whitespaceChar",
6544
+ "whitespaceOptionalForProgram",
6511
6545
  "whitespaceWithNewLine"
6512
6546
  ];
6513
6547