@weborigami/language 0.0.69 → 0.0.71-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -192,7 +192,7 @@ function peg$parse(input, options) {
192
192
  var peg$FAILED = {};
193
193
  var peg$source = options.grammarSource;
194
194
 
195
- var peg$startRuleFunctions = { __: peg$parse__, absoluteFilePath: peg$parseabsoluteFilePath, args: peg$parseargs, array: peg$parsearray, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, callTarget: peg$parsecallTarget, closingBrace: peg$parseclosingBrace, closingBracket: peg$parseclosingBracket, closingParen: peg$parseclosingParen, comment: peg$parsecomment, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, escapedChar: peg$parseescapedChar, expr: peg$parseexpr, expression: peg$parseexpression, float: peg$parsefloat, functionComposition: peg$parsefunctionComposition, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, identifierList: peg$parseidentifierList, implicitParensArgs: peg$parseimplicitParensArgs, inlineSpace: peg$parseinlineSpace, integer: peg$parseinteger, lambda: peg$parselambda, leadingSlashPath: peg$parseleadingSlashPath, list: peg$parselist, multiLineComment: peg$parsemultiLineComment, newLine: peg$parsenewLine, number: peg$parsenumber, object: peg$parseobject, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, parameterizedLambda: peg$parseparameterizedLambda, parensArgs: peg$parseparensArgs, pipeline: peg$parsepipeline, path: peg$parsepath, pathElement: peg$parsepathElement, pathKeyChar: peg$parsepathKeyChar, pathTail: peg$parsepathTail, protocolCall: peg$parseprotocolCall, protocol: peg$parseprotocol, reservedProtocol: peg$parsereservedProtocol, scopeReference: peg$parsescopeReference, scopeTraverse: peg$parsescopeTraverse, separator: peg$parseseparator, shebang: peg$parseshebang, sign: peg$parsesign, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, spread: peg$parsespread, step: peg$parsestep, start: peg$parsestart, string: peg$parsestring, templateDocument: peg$parsetemplateDocument, templateDocumentChar: peg$parsetemplateDocumentChar, templateDocumentContents: peg$parsetemplateDocumentContents, templateDocumentText: peg$parsetemplateDocumentText, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralContents: peg$parsetemplateLiteralContents, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
195
+ var peg$startRuleFunctions = { __: peg$parse__, absoluteFilePath: peg$parseabsoluteFilePath, args: peg$parseargs, array: peg$parsearray, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, callTarget: peg$parsecallTarget, closingBrace: peg$parseclosingBrace, closingBracket: peg$parseclosingBracket, closingParen: peg$parseclosingParen, comment: peg$parsecomment, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, escapedChar: peg$parseescapedChar, expr: peg$parseexpr, expression: peg$parseexpression, float: peg$parsefloat, functionComposition: peg$parsefunctionComposition, group: peg$parsegroup, guillemetString: peg$parseguillemetString, guillemetStringChar: peg$parseguillemetStringChar, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, identifierList: peg$parseidentifierList, implicitParensArgs: peg$parseimplicitParensArgs, inlineSpace: peg$parseinlineSpace, integer: peg$parseinteger, lambda: peg$parselambda, leadingSlashPath: peg$parseleadingSlashPath, list: peg$parselist, multiLineComment: peg$parsemultiLineComment, newLine: peg$parsenewLine, number: peg$parsenumber, object: peg$parseobject, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectGetter: peg$parseobjectGetter, objectHiddenKey: peg$parseobjectHiddenKey, objectKey: peg$parseobjectKey, objectProperty: peg$parseobjectProperty, objectShorthandProperty: peg$parseobjectShorthandProperty, objectPublicKey: peg$parseobjectPublicKey, parameterizedLambda: peg$parseparameterizedLambda, parensArgs: peg$parseparensArgs, pipeline: peg$parsepipeline, path: peg$parsepath, pathElement: peg$parsepathElement, pathKeyChar: peg$parsepathKeyChar, pathTail: peg$parsepathTail, protocolCall: peg$parseprotocolCall, protocol: peg$parseprotocol, reservedProtocol: peg$parsereservedProtocol, scopeReference: peg$parsescopeReference, scopeTraverse: peg$parsescopeTraverse, separator: peg$parseseparator, shebang: peg$parseshebang, sign: peg$parsesign, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, spread: peg$parsespread, step: peg$parsestep, start: peg$parsestart, string: peg$parsestring, taggedTemplate: peg$parsetaggedTemplate, templateDocument: peg$parsetemplateDocument, templateDocumentChar: peg$parsetemplateDocumentChar, templateDocumentContents: peg$parsetemplateDocumentContents, templateDocumentText: peg$parsetemplateDocumentText, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralContents: peg$parsetemplateLiteralContents, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
196
196
  var peg$startRuleFunction = peg$parse__;
197
197
 
198
198
  var peg$c0 = "//";
@@ -241,8 +241,8 @@ function peg$parse(input, options) {
241
241
  var peg$c43 = "\u2192";
242
242
  var peg$c44 = "->";
243
243
  var peg$c45 = "'";
244
- var peg$c46 = "${";
245
- var peg$c47 = "`";
244
+ var peg$c46 = "`";
245
+ var peg$c47 = "${";
246
246
 
247
247
  var peg$r0 = /^[0-9]/;
248
248
  var peg$r1 = /^[^(){}[\]<>\-=,\/:`"'\xAB\xBB\\ \u2192\u21D2\t\n\r]/;
@@ -337,11 +337,11 @@ function peg$parse(input, options) {
337
337
  var peg$e83 = peg$otherExpectation("single quote string");
338
338
  var peg$e84 = peg$literalExpectation("'", false);
339
339
  var peg$e85 = peg$otherExpectation("string");
340
- var peg$e86 = peg$otherExpectation("template");
341
- var peg$e87 = peg$literalExpectation("${", false);
342
- var peg$e88 = peg$otherExpectation("template text");
343
- var peg$e89 = peg$otherExpectation("template literal");
344
- var peg$e90 = peg$literalExpectation("`", false);
340
+ var peg$e86 = peg$literalExpectation("`", false);
341
+ var peg$e87 = peg$otherExpectation("template");
342
+ var peg$e88 = peg$literalExpectation("${", false);
343
+ var peg$e89 = peg$otherExpectation("template text");
344
+ var peg$e90 = peg$otherExpectation("template literal");
345
345
  var peg$e91 = peg$otherExpectation("template substitution");
346
346
 
347
347
  var peg$f0 = function() {
@@ -369,7 +369,7 @@ function peg$parse(input, options) {
369
369
  error("Expected right parenthesis");
370
370
  };
371
371
  var peg$f8 = function(chars) {
372
- return annotate([ops.primitive, chars.join("")], location());
372
+ return annotate([ops.literal, chars.join("")], location());
373
373
  };
374
374
  var peg$f9 = function() { return "\0"; };
375
375
  var peg$f10 = function() { return "\b"; };
@@ -379,7 +379,7 @@ function peg$parse(input, options) {
379
379
  var peg$f14 = function() { return "\t"; };
380
380
  var peg$f15 = function() { return "\v"; };
381
381
  var peg$f16 = function() {
382
- return annotate([ops.primitive, parseFloat(text())], location());
382
+ return annotate([ops.literal, parseFloat(text())], location());
383
383
  };
384
384
  var peg$f17 = function(target, chain, end) {
385
385
  if (end) {
@@ -387,128 +387,132 @@ function peg$parse(input, options) {
387
387
  }
388
388
  return annotate(makeFunctionCall(target, chain, location()), location());
389
389
  };
390
- var peg$f18 = function(expr) {
390
+ var peg$f18 = function(target, chain, end) {
391
+ if (end) {
392
+ chain.push(end);
393
+ }
394
+ return annotate(makeFunctionCall(target, chain, location()), location());
395
+ };
396
+ var peg$f19 = function(expr) {
391
397
  return annotate(expr, location());
392
398
  };
393
- var peg$f19 = function(chars) {
394
- return annotate([ops.primitive, chars.join("")], location());
399
+ var peg$f20 = function(chars) {
400
+ return annotate([ops.literal, chars.join("")], location());
395
401
  };
396
- var peg$f20 = function(identifier, port) {
402
+ var peg$f21 = function(identifier, port) {
397
403
  const portText = port ? `:${port[1]}` : "";
398
404
  const hostText = identifier + portText;
399
- return annotate([ops.primitive, hostText], location());
405
+ return annotate([ops.literal, hostText], location());
400
406
  };
401
- var peg$f21 = function(chars) { return chars.join(""); };
402
- var peg$f22 = function(list) {
407
+ var peg$f22 = function(chars) { return chars.join(""); };
408
+ var peg$f23 = function(list) {
403
409
  return annotate(list, location());
404
410
  };
405
- var peg$f23 = function(args) {
411
+ var peg$f24 = function(args) {
406
412
  /* Stuff */
407
413
  return annotate(args, location());
408
414
  };
409
- var peg$f24 = function() {
410
- return annotate([ops.primitive, parseInt(text())], location());
415
+ var peg$f25 = function() {
416
+ return annotate([ops.literal, parseInt(text())], location());
411
417
  };
412
- var peg$f25 = function(expr) {
413
- return annotate([ops.lambda, null, expr], location());
418
+ var peg$f26 = function(expr) {
419
+ return annotate([ops.lambda, ["_"], expr], location());
414
420
  };
415
- var peg$f26 = function(path) {
421
+ var peg$f27 = function(path) {
416
422
  return annotate(path ?? [], location());
417
423
  };
418
- var peg$f27 = function(list) {
424
+ var peg$f28 = function(list) {
419
425
  return annotate(list, location());
420
426
  };
421
- var peg$f28 = function() { return null; };
422
- var peg$f29 = function(entries) {
427
+ var peg$f29 = function() { return null; };
428
+ var peg$f30 = function(entries) {
423
429
  return annotate(makeObject(entries ?? [], ops.object), location());
424
430
  };
425
- var peg$f30 = function(entries) {
431
+ var peg$f31 = function(entries) {
426
432
  return annotate(entries, location());
427
433
  };
428
- var peg$f31 = function(key, value) {
434
+ var peg$f32 = function(key, value) {
429
435
  return annotate(makeProperty(key, [ops.getter, value]), location());
430
436
  };
431
- var peg$f32 = function(hiddenKey) { return hiddenKey.join(""); };
432
- var peg$f33 = function(key, value) {
437
+ var peg$f33 = function(hiddenKey) { return hiddenKey.join(""); };
438
+ var peg$f34 = function(key, value) {
433
439
  return annotate(makeProperty(key, value), location());
434
440
  };
435
- var peg$f34 = function(key) {
441
+ var peg$f35 = function(key) {
436
442
  return annotate([key, [ops.inherited, key]], location());
437
443
  };
438
- var peg$f35 = function(identifier, slash) {
444
+ var peg$f36 = function(identifier, slash) {
439
445
  return identifier + (slash ?? "");
440
446
  };
441
- var peg$f36 = function(string) {
442
- // Remove `ops.primitive` from the string code
447
+ var peg$f37 = function(string) {
448
+ // Remove `ops.literal` from the string code
443
449
  return string[1];
444
450
  };
445
- var peg$f37 = function(parameters, expr) {
451
+ var peg$f38 = function(parameters, expr) {
446
452
  return annotate([ops.lambda, parameters ?? [], expr], location());
447
453
  };
448
- var peg$f38 = function(list) {
454
+ var peg$f39 = function(list) {
449
455
  return annotate(list ?? [undefined], location());
450
456
  };
451
- var peg$f39 = function(steps) {
457
+ var peg$f40 = function(steps) {
452
458
  return annotate(makePipeline(steps), location());
453
459
  };
454
- var peg$f40 = function(head, tail) {
460
+ var peg$f41 = function(head, tail) {
455
461
  let path = tail ? [...head, tail] : head;
456
462
  // Remove parts for consecutive slashes
457
463
  path = path.filter((part) => part[1] !== "/");
458
464
  return annotate(path, location());
459
465
  };
460
- var peg$f41 = function(chars) {
461
- return annotate([ops.primitive, chars.join("") + "/"], location());
462
- };
463
466
  var peg$f42 = function(chars) {
464
- return annotate([ops.primitive, chars.join("")], location());
467
+ return annotate([ops.literal, chars.join("") + "/"], location());
468
+ };
469
+ var peg$f43 = function(chars) {
470
+ return annotate([ops.literal, chars.join("")], location());
465
471
  };
466
- var peg$f43 = function(protocol, host, path) {
472
+ var peg$f44 = function(protocol, host, path) {
467
473
  return annotate([protocol, host, ...(path ?? [])], location());
468
474
  };
469
- var peg$f44 = function() { return ops.explorableSite; };
470
- var peg$f45 = function() { return ops.https; };
471
- var peg$f46 = function() { return ops.http; };
472
- var peg$f47 = function() { return ops.constructor; };
473
- var peg$f48 = function() { return [ops.scope, "@package"] };
474
- var peg$f49 = function() { return ops.treeHttps; };
475
- var peg$f50 = function() { return ops.treeHttp; };
476
- var peg$f51 = function() { return ops.treeHttps; };
477
- var peg$f52 = function(key) {
475
+ var peg$f45 = function() { return ops.explorableSite; };
476
+ var peg$f46 = function() { return ops.https; };
477
+ var peg$f47 = function() { return ops.http; };
478
+ var peg$f48 = function() { return ops.constructor; };
479
+ var peg$f49 = function() { return [ops.scope, "@package"] };
480
+ var peg$f50 = function() { return ops.treeHttps; };
481
+ var peg$f51 = function() { return ops.treeHttp; };
482
+ var peg$f52 = function() { return ops.treeHttps; };
483
+ var peg$f53 = function(key) {
478
484
  return annotate([ops.scope, key], location());
479
485
  };
480
- var peg$f53 = function(ref, path) {
486
+ var peg$f54 = function(ref, path) {
481
487
  const head = [ops.scope, `${ ref[1] }/`];
488
+ head.location = ref.location;
482
489
  return annotate([ops.traverse, head, ...path], location());
483
490
  };
484
- var peg$f54 = function() { return null; };
485
491
  var peg$f55 = function() { return null; };
486
- var peg$f56 = function(chars) {
487
- return annotate([ops.primitive, chars.join("")], location());
492
+ var peg$f56 = function() { return null; };
493
+ var peg$f57 = function(chars) {
494
+ return annotate([ops.literal, chars.join("")], location());
488
495
  };
489
- var peg$f57 = function(expr) {
496
+ var peg$f58 = function(expr) {
490
497
  return annotate([ops.spread, expr], location());
491
498
  };
492
- var peg$f58 = function(contents) {
493
- return annotate([ops.lambda, null, contents], location());
499
+ var peg$f59 = function(tag, contents) {
500
+ return annotate(makeTemplate(tag, contents[0], contents[1]), location());
494
501
  };
495
- var peg$f59 = function(parts) {
496
- return annotate(makeTemplate(parts), location());
502
+ var peg$f60 = function(contents) {
503
+ return annotate([ops.lambda, ["_"], contents], location());
497
504
  };
498
- var peg$f60 = function(chars) {
499
- return annotate([ops.primitive, chars.join("")], location());
500
- };
501
- var peg$f61 = function(contents) {
502
- return annotate(contents, location());
505
+ var peg$f61 = function(head, tail) {
506
+ return annotate(makeTemplate(ops.template, head, tail), location());
503
507
  };
504
- var peg$f62 = function(parts) {
505
- return annotate(makeTemplate(parts), location());
508
+ var peg$f62 = function(chars) {
509
+ return chars.join("");
506
510
  };
507
- var peg$f63 = function(chars) {
508
- return annotate([ops.primitive, chars.join("")], location());
509
- };
510
- var peg$f64 = function(expr) {
511
- return annotate(expr, location());
511
+ var peg$f63 = function(contents) {
512
+ return annotate(makeTemplate(ops.template, contents[0], contents[1]), location());
513
+ };
514
+ var peg$f64 = function(chars) {
515
+ return chars.join("");
512
516
  };
513
517
  var peg$currPos = options.peg$currPos | 0;
514
518
  var peg$savedPos = peg$currPos;
@@ -1404,20 +1408,52 @@ function peg$parse(input, options) {
1404
1408
  if (s1 !== peg$FAILED) {
1405
1409
  s2 = [];
1406
1410
  s3 = peg$parseargs();
1407
- while (s3 !== peg$FAILED) {
1408
- s2.push(s3);
1409
- s3 = peg$parseargs();
1411
+ if (s3 !== peg$FAILED) {
1412
+ while (s3 !== peg$FAILED) {
1413
+ s2.push(s3);
1414
+ s3 = peg$parseargs();
1415
+ }
1416
+ } else {
1417
+ s2 = peg$FAILED;
1410
1418
  }
1411
- s3 = peg$parseimplicitParensArgs();
1412
- if (s3 === peg$FAILED) {
1413
- s3 = null;
1419
+ if (s2 !== peg$FAILED) {
1420
+ s3 = peg$parseimplicitParensArgs();
1421
+ if (s3 === peg$FAILED) {
1422
+ s3 = null;
1423
+ }
1424
+ peg$savedPos = s0;
1425
+ s0 = peg$f17(s1, s2, s3);
1426
+ } else {
1427
+ peg$currPos = s0;
1428
+ s0 = peg$FAILED;
1414
1429
  }
1415
- peg$savedPos = s0;
1416
- s0 = peg$f17(s1, s2, s3);
1417
1430
  } else {
1418
1431
  peg$currPos = s0;
1419
1432
  s0 = peg$FAILED;
1420
1433
  }
1434
+ if (s0 === peg$FAILED) {
1435
+ s0 = peg$currPos;
1436
+ s1 = peg$parsecallTarget();
1437
+ if (s1 !== peg$FAILED) {
1438
+ s2 = [];
1439
+ s3 = peg$parseargs();
1440
+ while (s3 !== peg$FAILED) {
1441
+ s2.push(s3);
1442
+ s3 = peg$parseargs();
1443
+ }
1444
+ s3 = peg$parseimplicitParensArgs();
1445
+ if (s3 !== peg$FAILED) {
1446
+ peg$savedPos = s0;
1447
+ s0 = peg$f18(s1, s2, s3);
1448
+ } else {
1449
+ peg$currPos = s0;
1450
+ s0 = peg$FAILED;
1451
+ }
1452
+ } else {
1453
+ peg$currPos = s0;
1454
+ s0 = peg$FAILED;
1455
+ }
1456
+ }
1421
1457
  peg$silentFails--;
1422
1458
  if (s0 === peg$FAILED) {
1423
1459
  s1 = peg$FAILED;
@@ -1447,7 +1483,7 @@ function peg$parse(input, options) {
1447
1483
  s5 = peg$parseclosingParen();
1448
1484
  if (s5 !== peg$FAILED) {
1449
1485
  peg$savedPos = s0;
1450
- s0 = peg$f18(s3);
1486
+ s0 = peg$f19(s3);
1451
1487
  } else {
1452
1488
  peg$currPos = s0;
1453
1489
  s0 = peg$FAILED;
@@ -1497,7 +1533,7 @@ function peg$parse(input, options) {
1497
1533
  }
1498
1534
  if (s3 !== peg$FAILED) {
1499
1535
  peg$savedPos = s0;
1500
- s0 = peg$f19(s2);
1536
+ s0 = peg$f20(s2);
1501
1537
  } else {
1502
1538
  peg$currPos = s0;
1503
1539
  s0 = peg$FAILED;
@@ -1585,7 +1621,7 @@ function peg$parse(input, options) {
1585
1621
  s2 = null;
1586
1622
  }
1587
1623
  peg$savedPos = s0;
1588
- s0 = peg$f20(s1, s2);
1624
+ s0 = peg$f21(s1, s2);
1589
1625
  } else {
1590
1626
  peg$currPos = s0;
1591
1627
  s0 = peg$FAILED;
@@ -1616,7 +1652,7 @@ function peg$parse(input, options) {
1616
1652
  }
1617
1653
  if (s1 !== peg$FAILED) {
1618
1654
  peg$savedPos = s0;
1619
- s1 = peg$f21(s1);
1655
+ s1 = peg$f22(s1);
1620
1656
  }
1621
1657
  s0 = s1;
1622
1658
  peg$silentFails--;
@@ -1717,7 +1753,7 @@ function peg$parse(input, options) {
1717
1753
  s2 = null;
1718
1754
  }
1719
1755
  peg$savedPos = s0;
1720
- s0 = peg$f22(s1);
1756
+ s0 = peg$f23(s1);
1721
1757
  } else {
1722
1758
  peg$currPos = s0;
1723
1759
  s0 = peg$FAILED;
@@ -1773,7 +1809,7 @@ function peg$parse(input, options) {
1773
1809
  s3 = null;
1774
1810
  }
1775
1811
  peg$savedPos = s0;
1776
- s0 = peg$f23(s2);
1812
+ s0 = peg$f24(s2);
1777
1813
  } else {
1778
1814
  peg$currPos = s0;
1779
1815
  s0 = peg$FAILED;
@@ -1817,7 +1853,7 @@ function peg$parse(input, options) {
1817
1853
  s2 = peg$parsedigits();
1818
1854
  if (s2 !== peg$FAILED) {
1819
1855
  peg$savedPos = s0;
1820
- s0 = peg$f24();
1856
+ s0 = peg$f25();
1821
1857
  } else {
1822
1858
  peg$currPos = s0;
1823
1859
  s0 = peg$FAILED;
@@ -1848,7 +1884,7 @@ function peg$parse(input, options) {
1848
1884
  s3 = peg$parsepipeline();
1849
1885
  if (s3 !== peg$FAILED) {
1850
1886
  peg$savedPos = s0;
1851
- s0 = peg$f25(s3);
1887
+ s0 = peg$f26(s3);
1852
1888
  } else {
1853
1889
  peg$currPos = s0;
1854
1890
  s0 = peg$FAILED;
@@ -1881,7 +1917,7 @@ function peg$parse(input, options) {
1881
1917
  if (s1 !== peg$FAILED) {
1882
1918
  s2 = peg$parsepath();
1883
1919
  peg$savedPos = s0;
1884
- s0 = peg$f26(s2);
1920
+ s0 = peg$f27(s2);
1885
1921
  } else {
1886
1922
  peg$currPos = s0;
1887
1923
  s0 = peg$FAILED;
@@ -1931,7 +1967,7 @@ function peg$parse(input, options) {
1931
1967
  s2 = null;
1932
1968
  }
1933
1969
  peg$savedPos = s0;
1934
- s0 = peg$f27(s1);
1970
+ s0 = peg$f28(s1);
1935
1971
  } else {
1936
1972
  peg$currPos = s0;
1937
1973
  s0 = peg$FAILED;
@@ -2042,7 +2078,7 @@ function peg$parse(input, options) {
2042
2078
  }
2043
2079
  if (s3 !== peg$FAILED) {
2044
2080
  peg$savedPos = s0;
2045
- s0 = peg$f28();
2081
+ s0 = peg$f29();
2046
2082
  } else {
2047
2083
  peg$currPos = s0;
2048
2084
  s0 = peg$FAILED;
@@ -2126,7 +2162,7 @@ function peg$parse(input, options) {
2126
2162
  s5 = peg$parseclosingBrace();
2127
2163
  if (s5 !== peg$FAILED) {
2128
2164
  peg$savedPos = s0;
2129
- s0 = peg$f29(s3);
2165
+ s0 = peg$f30(s3);
2130
2166
  } else {
2131
2167
  peg$currPos = s0;
2132
2168
  s0 = peg$FAILED;
@@ -2179,7 +2215,7 @@ function peg$parse(input, options) {
2179
2215
  s2 = null;
2180
2216
  }
2181
2217
  peg$savedPos = s0;
2182
- s0 = peg$f30(s1);
2218
+ s0 = peg$f31(s1);
2183
2219
  } else {
2184
2220
  peg$currPos = s0;
2185
2221
  s0 = peg$FAILED;
@@ -2225,7 +2261,7 @@ function peg$parse(input, options) {
2225
2261
  s5 = peg$parsepipeline();
2226
2262
  if (s5 !== peg$FAILED) {
2227
2263
  peg$savedPos = s0;
2228
- s0 = peg$f31(s1, s5);
2264
+ s0 = peg$f32(s1, s5);
2229
2265
  } else {
2230
2266
  peg$currPos = s0;
2231
2267
  s0 = peg$FAILED;
@@ -2286,7 +2322,7 @@ function peg$parse(input, options) {
2286
2322
  }
2287
2323
  if (s1 !== peg$FAILED) {
2288
2324
  peg$savedPos = s0;
2289
- s1 = peg$f32(s1);
2325
+ s1 = peg$f33(s1);
2290
2326
  }
2291
2327
  s0 = s1;
2292
2328
 
@@ -2330,7 +2366,7 @@ function peg$parse(input, options) {
2330
2366
  s5 = peg$parsepipeline();
2331
2367
  if (s5 !== peg$FAILED) {
2332
2368
  peg$savedPos = s0;
2333
- s0 = peg$f33(s1, s5);
2369
+ s0 = peg$f34(s1, s5);
2334
2370
  } else {
2335
2371
  peg$currPos = s0;
2336
2372
  s0 = peg$FAILED;
@@ -2360,7 +2396,7 @@ function peg$parse(input, options) {
2360
2396
  s1 = peg$parseobjectPublicKey();
2361
2397
  if (s1 !== peg$FAILED) {
2362
2398
  peg$savedPos = s0;
2363
- s1 = peg$f34(s1);
2399
+ s1 = peg$f35(s1);
2364
2400
  }
2365
2401
  s0 = s1;
2366
2402
  peg$silentFails--;
@@ -2389,7 +2425,7 @@ function peg$parse(input, options) {
2389
2425
  s2 = null;
2390
2426
  }
2391
2427
  peg$savedPos = s0;
2392
- s0 = peg$f35(s1, s2);
2428
+ s0 = peg$f36(s1, s2);
2393
2429
  } else {
2394
2430
  peg$currPos = s0;
2395
2431
  s0 = peg$FAILED;
@@ -2399,7 +2435,7 @@ function peg$parse(input, options) {
2399
2435
  s1 = peg$parsestring();
2400
2436
  if (s1 !== peg$FAILED) {
2401
2437
  peg$savedPos = s0;
2402
- s1 = peg$f36(s1);
2438
+ s1 = peg$f37(s1);
2403
2439
  }
2404
2440
  s0 = s1;
2405
2441
  }
@@ -2440,7 +2476,7 @@ function peg$parse(input, options) {
2440
2476
  s9 = peg$parsepipeline();
2441
2477
  if (s9 !== peg$FAILED) {
2442
2478
  peg$savedPos = s0;
2443
- s0 = peg$f37(s3, s9);
2479
+ s0 = peg$f38(s3, s9);
2444
2480
  } else {
2445
2481
  peg$currPos = s0;
2446
2482
  s0 = peg$FAILED;
@@ -2489,7 +2525,7 @@ function peg$parse(input, options) {
2489
2525
  }
2490
2526
  if (s5 !== peg$FAILED) {
2491
2527
  peg$savedPos = s0;
2492
- s0 = peg$f38(s3);
2528
+ s0 = peg$f39(s3);
2493
2529
  } else {
2494
2530
  peg$currPos = s0;
2495
2531
  s0 = peg$FAILED;
@@ -2555,7 +2591,7 @@ function peg$parse(input, options) {
2555
2591
  }
2556
2592
  if (s1 !== peg$FAILED) {
2557
2593
  peg$savedPos = s0;
2558
- s1 = peg$f39(s1);
2594
+ s1 = peg$f40(s1);
2559
2595
  }
2560
2596
  s0 = s1;
2561
2597
 
@@ -2578,7 +2614,7 @@ function peg$parse(input, options) {
2578
2614
  s2 = null;
2579
2615
  }
2580
2616
  peg$savedPos = s0;
2581
- s0 = peg$f40(s1, s2);
2617
+ s0 = peg$f41(s1, s2);
2582
2618
  peg$silentFails--;
2583
2619
  s1 = peg$FAILED;
2584
2620
  if (peg$silentFails === 0) { peg$fail(peg$e63); }
@@ -2605,7 +2641,7 @@ function peg$parse(input, options) {
2605
2641
  }
2606
2642
  if (s2 !== peg$FAILED) {
2607
2643
  peg$savedPos = s0;
2608
- s0 = peg$f41(s1);
2644
+ s0 = peg$f42(s1);
2609
2645
  } else {
2610
2646
  peg$currPos = s0;
2611
2647
  s0 = peg$FAILED;
@@ -2647,7 +2683,7 @@ function peg$parse(input, options) {
2647
2683
  }
2648
2684
  if (s1 !== peg$FAILED) {
2649
2685
  peg$savedPos = s0;
2650
- s1 = peg$f42(s1);
2686
+ s1 = peg$f43(s1);
2651
2687
  }
2652
2688
  s0 = s1;
2653
2689
 
@@ -2698,7 +2734,7 @@ function peg$parse(input, options) {
2698
2734
  s5 = null;
2699
2735
  }
2700
2736
  peg$savedPos = s0;
2701
- s0 = peg$f43(s1, s4, s5);
2737
+ s0 = peg$f44(s1, s4, s5);
2702
2738
  } else {
2703
2739
  peg$currPos = s0;
2704
2740
  s0 = peg$FAILED;
@@ -2751,7 +2787,7 @@ function peg$parse(input, options) {
2751
2787
  }
2752
2788
  if (s1 !== peg$FAILED) {
2753
2789
  peg$savedPos = s0;
2754
- s1 = peg$f44();
2790
+ s1 = peg$f45();
2755
2791
  }
2756
2792
  s0 = s1;
2757
2793
  if (s0 === peg$FAILED) {
@@ -2765,7 +2801,7 @@ function peg$parse(input, options) {
2765
2801
  }
2766
2802
  if (s1 !== peg$FAILED) {
2767
2803
  peg$savedPos = s0;
2768
- s1 = peg$f45();
2804
+ s1 = peg$f46();
2769
2805
  }
2770
2806
  s0 = s1;
2771
2807
  if (s0 === peg$FAILED) {
@@ -2779,7 +2815,7 @@ function peg$parse(input, options) {
2779
2815
  }
2780
2816
  if (s1 !== peg$FAILED) {
2781
2817
  peg$savedPos = s0;
2782
- s1 = peg$f46();
2818
+ s1 = peg$f47();
2783
2819
  }
2784
2820
  s0 = s1;
2785
2821
  if (s0 === peg$FAILED) {
@@ -2793,7 +2829,7 @@ function peg$parse(input, options) {
2793
2829
  }
2794
2830
  if (s1 !== peg$FAILED) {
2795
2831
  peg$savedPos = s0;
2796
- s1 = peg$f47();
2832
+ s1 = peg$f48();
2797
2833
  }
2798
2834
  s0 = s1;
2799
2835
  if (s0 === peg$FAILED) {
@@ -2807,7 +2843,7 @@ function peg$parse(input, options) {
2807
2843
  }
2808
2844
  if (s1 !== peg$FAILED) {
2809
2845
  peg$savedPos = s0;
2810
- s1 = peg$f48();
2846
+ s1 = peg$f49();
2811
2847
  }
2812
2848
  s0 = s1;
2813
2849
  if (s0 === peg$FAILED) {
@@ -2821,7 +2857,7 @@ function peg$parse(input, options) {
2821
2857
  }
2822
2858
  if (s1 !== peg$FAILED) {
2823
2859
  peg$savedPos = s0;
2824
- s1 = peg$f49();
2860
+ s1 = peg$f50();
2825
2861
  }
2826
2862
  s0 = s1;
2827
2863
  if (s0 === peg$FAILED) {
@@ -2835,7 +2871,7 @@ function peg$parse(input, options) {
2835
2871
  }
2836
2872
  if (s1 !== peg$FAILED) {
2837
2873
  peg$savedPos = s0;
2838
- s1 = peg$f50();
2874
+ s1 = peg$f51();
2839
2875
  }
2840
2876
  s0 = s1;
2841
2877
  if (s0 === peg$FAILED) {
@@ -2849,7 +2885,7 @@ function peg$parse(input, options) {
2849
2885
  }
2850
2886
  if (s1 !== peg$FAILED) {
2851
2887
  peg$savedPos = s0;
2852
- s1 = peg$f51();
2888
+ s1 = peg$f52();
2853
2889
  }
2854
2890
  s0 = s1;
2855
2891
  }
@@ -2876,7 +2912,7 @@ function peg$parse(input, options) {
2876
2912
  s1 = peg$parseidentifier();
2877
2913
  if (s1 !== peg$FAILED) {
2878
2914
  peg$savedPos = s0;
2879
- s1 = peg$f52(s1);
2915
+ s1 = peg$f53(s1);
2880
2916
  }
2881
2917
  s0 = s1;
2882
2918
  peg$silentFails--;
@@ -2904,7 +2940,7 @@ function peg$parse(input, options) {
2904
2940
  if (s2 !== peg$FAILED) {
2905
2941
  s3 = peg$parsepath();
2906
2942
  peg$savedPos = s0;
2907
- s0 = peg$f53(s1, s3);
2943
+ s0 = peg$f54(s1, s3);
2908
2944
  } else {
2909
2945
  peg$currPos = s0;
2910
2946
  s0 = peg$FAILED;
@@ -2975,7 +3011,7 @@ function peg$parse(input, options) {
2975
3011
  }
2976
3012
  }
2977
3013
  peg$savedPos = s0;
2978
- s0 = peg$f54();
3014
+ s0 = peg$f55();
2979
3015
  } else {
2980
3016
  peg$currPos = s0;
2981
3017
  s0 = peg$FAILED;
@@ -3052,7 +3088,7 @@ function peg$parse(input, options) {
3052
3088
  }
3053
3089
  }
3054
3090
  peg$savedPos = s0;
3055
- s0 = peg$f55();
3091
+ s0 = peg$f56();
3056
3092
  } else {
3057
3093
  peg$currPos = s0;
3058
3094
  s0 = peg$FAILED;
@@ -3089,7 +3125,7 @@ function peg$parse(input, options) {
3089
3125
  }
3090
3126
  if (s3 !== peg$FAILED) {
3091
3127
  peg$savedPos = s0;
3092
- s0 = peg$f56(s2);
3128
+ s0 = peg$f57(s2);
3093
3129
  } else {
3094
3130
  peg$currPos = s0;
3095
3131
  s0 = peg$FAILED;
@@ -3155,7 +3191,7 @@ function peg$parse(input, options) {
3155
3191
  s2 = peg$parsepipeline();
3156
3192
  if (s2 !== peg$FAILED) {
3157
3193
  peg$savedPos = s0;
3158
- s0 = peg$f57(s2);
3194
+ s0 = peg$f58(s2);
3159
3195
  } else {
3160
3196
  peg$currPos = s0;
3161
3197
  s0 = peg$FAILED;
@@ -3193,7 +3229,13 @@ function peg$parse(input, options) {
3193
3229
  if (s0 === peg$FAILED) {
3194
3230
  s0 = peg$parseprotocolCall();
3195
3231
  if (s0 === peg$FAILED) {
3196
- s0 = peg$parsescopeReference();
3232
+ s0 = peg$parsetaggedTemplate();
3233
+ if (s0 === peg$FAILED) {
3234
+ s0 = peg$parsescopeTraverse();
3235
+ if (s0 === peg$FAILED) {
3236
+ s0 = peg$parsescopeReference();
3237
+ }
3238
+ }
3197
3239
  }
3198
3240
  }
3199
3241
  }
@@ -3237,6 +3279,47 @@ function peg$parse(input, options) {
3237
3279
  return s0;
3238
3280
  }
3239
3281
 
3282
+ function peg$parsetaggedTemplate() {
3283
+ var s0, s1, s2, s3, s4;
3284
+
3285
+ s0 = peg$currPos;
3286
+ s1 = peg$parsecallTarget();
3287
+ if (s1 !== peg$FAILED) {
3288
+ if (input.charCodeAt(peg$currPos) === 96) {
3289
+ s2 = peg$c46;
3290
+ peg$currPos++;
3291
+ } else {
3292
+ s2 = peg$FAILED;
3293
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
3294
+ }
3295
+ if (s2 !== peg$FAILED) {
3296
+ s3 = peg$parsetemplateLiteralContents();
3297
+ if (input.charCodeAt(peg$currPos) === 96) {
3298
+ s4 = peg$c46;
3299
+ peg$currPos++;
3300
+ } else {
3301
+ s4 = peg$FAILED;
3302
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
3303
+ }
3304
+ if (s4 !== peg$FAILED) {
3305
+ peg$savedPos = s0;
3306
+ s0 = peg$f59(s1, s3);
3307
+ } else {
3308
+ peg$currPos = s0;
3309
+ s0 = peg$FAILED;
3310
+ }
3311
+ } else {
3312
+ peg$currPos = s0;
3313
+ s0 = peg$FAILED;
3314
+ }
3315
+ } else {
3316
+ peg$currPos = s0;
3317
+ s0 = peg$FAILED;
3318
+ }
3319
+
3320
+ return s0;
3321
+ }
3322
+
3240
3323
  function peg$parsetemplateDocument() {
3241
3324
  var s0, s1;
3242
3325
 
@@ -3244,11 +3327,11 @@ function peg$parse(input, options) {
3244
3327
  s0 = peg$currPos;
3245
3328
  s1 = peg$parsetemplateDocumentContents();
3246
3329
  peg$savedPos = s0;
3247
- s1 = peg$f58(s1);
3330
+ s1 = peg$f60(s1);
3248
3331
  s0 = s1;
3249
3332
  peg$silentFails--;
3250
3333
  s1 = peg$FAILED;
3251
- if (peg$silentFails === 0) { peg$fail(peg$e86); }
3334
+ if (peg$silentFails === 0) { peg$fail(peg$e87); }
3252
3335
 
3253
3336
  return s0;
3254
3337
  }
@@ -3259,12 +3342,12 @@ function peg$parse(input, options) {
3259
3342
  s0 = peg$currPos;
3260
3343
  s1 = peg$currPos;
3261
3344
  peg$silentFails++;
3262
- if (input.substr(peg$currPos, 2) === peg$c46) {
3263
- s2 = peg$c46;
3345
+ if (input.substr(peg$currPos, 2) === peg$c47) {
3346
+ s2 = peg$c47;
3264
3347
  peg$currPos += 2;
3265
3348
  } else {
3266
3349
  s2 = peg$FAILED;
3267
- if (peg$silentFails === 0) { peg$fail(peg$e87); }
3350
+ if (peg$silentFails === 0) { peg$fail(peg$e88); }
3268
3351
  }
3269
3352
  peg$silentFails--;
3270
3353
  if (s2 === peg$FAILED) {
@@ -3290,24 +3373,36 @@ function peg$parse(input, options) {
3290
3373
  }
3291
3374
 
3292
3375
  function peg$parsetemplateDocumentContents() {
3293
- var s0, s1, s2;
3376
+ var s0, s1, s2, s3, s4, s5;
3294
3377
 
3295
3378
  s0 = peg$currPos;
3296
- s1 = [];
3297
- s2 = peg$parsetemplateDocumentText();
3298
- if (s2 === peg$FAILED) {
3299
- s2 = peg$parsetemplateSubstitution();
3379
+ s1 = peg$parsetemplateDocumentText();
3380
+ s2 = [];
3381
+ s3 = peg$currPos;
3382
+ s4 = peg$parsetemplateSubstitution();
3383
+ if (s4 !== peg$FAILED) {
3384
+ s5 = peg$parsetemplateDocumentText();
3385
+ s4 = [s4, s5];
3386
+ s3 = s4;
3387
+ } else {
3388
+ peg$currPos = s3;
3389
+ s3 = peg$FAILED;
3300
3390
  }
3301
- while (s2 !== peg$FAILED) {
3302
- s1.push(s2);
3303
- s2 = peg$parsetemplateDocumentText();
3304
- if (s2 === peg$FAILED) {
3305
- s2 = peg$parsetemplateSubstitution();
3391
+ while (s3 !== peg$FAILED) {
3392
+ s2.push(s3);
3393
+ s3 = peg$currPos;
3394
+ s4 = peg$parsetemplateSubstitution();
3395
+ if (s4 !== peg$FAILED) {
3396
+ s5 = peg$parsetemplateDocumentText();
3397
+ s4 = [s4, s5];
3398
+ s3 = s4;
3399
+ } else {
3400
+ peg$currPos = s3;
3401
+ s3 = peg$FAILED;
3306
3402
  }
3307
3403
  }
3308
3404
  peg$savedPos = s0;
3309
- s1 = peg$f59(s1);
3310
- s0 = s1;
3405
+ s0 = peg$f61(s1, s2);
3311
3406
 
3312
3407
  return s0;
3313
3408
  }
@@ -3319,24 +3414,16 @@ function peg$parse(input, options) {
3319
3414
  s0 = peg$currPos;
3320
3415
  s1 = [];
3321
3416
  s2 = peg$parsetemplateDocumentChar();
3322
- if (s2 !== peg$FAILED) {
3323
- while (s2 !== peg$FAILED) {
3324
- s1.push(s2);
3325
- s2 = peg$parsetemplateDocumentChar();
3326
- }
3327
- } else {
3328
- s1 = peg$FAILED;
3329
- }
3330
- if (s1 !== peg$FAILED) {
3331
- peg$savedPos = s0;
3332
- s1 = peg$f60(s1);
3417
+ while (s2 !== peg$FAILED) {
3418
+ s1.push(s2);
3419
+ s2 = peg$parsetemplateDocumentChar();
3333
3420
  }
3421
+ peg$savedPos = s0;
3422
+ s1 = peg$f62(s1);
3334
3423
  s0 = s1;
3335
3424
  peg$silentFails--;
3336
- if (s0 === peg$FAILED) {
3337
- s1 = peg$FAILED;
3338
- if (peg$silentFails === 0) { peg$fail(peg$e88); }
3339
- }
3425
+ s1 = peg$FAILED;
3426
+ if (peg$silentFails === 0) { peg$fail(peg$e89); }
3340
3427
 
3341
3428
  return s0;
3342
3429
  }
@@ -3347,24 +3434,24 @@ function peg$parse(input, options) {
3347
3434
  peg$silentFails++;
3348
3435
  s0 = peg$currPos;
3349
3436
  if (input.charCodeAt(peg$currPos) === 96) {
3350
- s1 = peg$c47;
3437
+ s1 = peg$c46;
3351
3438
  peg$currPos++;
3352
3439
  } else {
3353
3440
  s1 = peg$FAILED;
3354
- if (peg$silentFails === 0) { peg$fail(peg$e90); }
3441
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
3355
3442
  }
3356
3443
  if (s1 !== peg$FAILED) {
3357
3444
  s2 = peg$parsetemplateLiteralContents();
3358
3445
  if (input.charCodeAt(peg$currPos) === 96) {
3359
- s3 = peg$c47;
3446
+ s3 = peg$c46;
3360
3447
  peg$currPos++;
3361
3448
  } else {
3362
3449
  s3 = peg$FAILED;
3363
- if (peg$silentFails === 0) { peg$fail(peg$e90); }
3450
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
3364
3451
  }
3365
3452
  if (s3 !== peg$FAILED) {
3366
3453
  peg$savedPos = s0;
3367
- s0 = peg$f61(s2);
3454
+ s0 = peg$f63(s2);
3368
3455
  } else {
3369
3456
  peg$currPos = s0;
3370
3457
  s0 = peg$FAILED;
@@ -3376,7 +3463,7 @@ function peg$parse(input, options) {
3376
3463
  peg$silentFails--;
3377
3464
  if (s0 === peg$FAILED) {
3378
3465
  s1 = peg$FAILED;
3379
- if (peg$silentFails === 0) { peg$fail(peg$e89); }
3466
+ if (peg$silentFails === 0) { peg$fail(peg$e90); }
3380
3467
  }
3381
3468
 
3382
3469
  return s0;
@@ -3389,19 +3476,19 @@ function peg$parse(input, options) {
3389
3476
  s1 = peg$currPos;
3390
3477
  peg$silentFails++;
3391
3478
  if (input.charCodeAt(peg$currPos) === 96) {
3392
- s2 = peg$c47;
3479
+ s2 = peg$c46;
3393
3480
  peg$currPos++;
3394
3481
  } else {
3395
3482
  s2 = peg$FAILED;
3396
- if (peg$silentFails === 0) { peg$fail(peg$e90); }
3483
+ if (peg$silentFails === 0) { peg$fail(peg$e86); }
3397
3484
  }
3398
3485
  if (s2 === peg$FAILED) {
3399
- if (input.substr(peg$currPos, 2) === peg$c46) {
3400
- s2 = peg$c46;
3486
+ if (input.substr(peg$currPos, 2) === peg$c47) {
3487
+ s2 = peg$c47;
3401
3488
  peg$currPos += 2;
3402
3489
  } else {
3403
3490
  s2 = peg$FAILED;
3404
- if (peg$silentFails === 0) { peg$fail(peg$e87); }
3491
+ if (peg$silentFails === 0) { peg$fail(peg$e88); }
3405
3492
  }
3406
3493
  }
3407
3494
  peg$silentFails--;
@@ -3428,23 +3515,35 @@ function peg$parse(input, options) {
3428
3515
  }
3429
3516
 
3430
3517
  function peg$parsetemplateLiteralContents() {
3431
- var s0, s1, s2;
3518
+ var s0, s1, s2, s3, s4, s5;
3432
3519
 
3433
3520
  s0 = peg$currPos;
3434
- s1 = [];
3435
- s2 = peg$parsetemplateLiteralText();
3436
- if (s2 === peg$FAILED) {
3437
- s2 = peg$parsetemplateSubstitution();
3521
+ s1 = peg$parsetemplateLiteralText();
3522
+ s2 = [];
3523
+ s3 = peg$currPos;
3524
+ s4 = peg$parsetemplateSubstitution();
3525
+ if (s4 !== peg$FAILED) {
3526
+ s5 = peg$parsetemplateLiteralText();
3527
+ s4 = [s4, s5];
3528
+ s3 = s4;
3529
+ } else {
3530
+ peg$currPos = s3;
3531
+ s3 = peg$FAILED;
3438
3532
  }
3439
- while (s2 !== peg$FAILED) {
3440
- s1.push(s2);
3441
- s2 = peg$parsetemplateLiteralText();
3442
- if (s2 === peg$FAILED) {
3443
- s2 = peg$parsetemplateSubstitution();
3533
+ while (s3 !== peg$FAILED) {
3534
+ s2.push(s3);
3535
+ s3 = peg$currPos;
3536
+ s4 = peg$parsetemplateSubstitution();
3537
+ if (s4 !== peg$FAILED) {
3538
+ s5 = peg$parsetemplateLiteralText();
3539
+ s4 = [s4, s5];
3540
+ s3 = s4;
3541
+ } else {
3542
+ peg$currPos = s3;
3543
+ s3 = peg$FAILED;
3444
3544
  }
3445
3545
  }
3446
- peg$savedPos = s0;
3447
- s1 = peg$f62(s1);
3546
+ s1 = [s1, s2];
3448
3547
  s0 = s1;
3449
3548
 
3450
3549
  return s0;
@@ -3456,18 +3555,12 @@ function peg$parse(input, options) {
3456
3555
  s0 = peg$currPos;
3457
3556
  s1 = [];
3458
3557
  s2 = peg$parsetemplateLiteralChar();
3459
- if (s2 !== peg$FAILED) {
3460
- while (s2 !== peg$FAILED) {
3461
- s1.push(s2);
3462
- s2 = peg$parsetemplateLiteralChar();
3463
- }
3464
- } else {
3465
- s1 = peg$FAILED;
3466
- }
3467
- if (s1 !== peg$FAILED) {
3468
- peg$savedPos = s0;
3469
- s1 = peg$f63(s1);
3558
+ while (s2 !== peg$FAILED) {
3559
+ s1.push(s2);
3560
+ s2 = peg$parsetemplateLiteralChar();
3470
3561
  }
3562
+ peg$savedPos = s0;
3563
+ s1 = peg$f64(s1);
3471
3564
  s0 = s1;
3472
3565
 
3473
3566
  return s0;
@@ -3478,12 +3571,12 @@ function peg$parse(input, options) {
3478
3571
 
3479
3572
  peg$silentFails++;
3480
3573
  s0 = peg$currPos;
3481
- if (input.substr(peg$currPos, 2) === peg$c46) {
3482
- s1 = peg$c46;
3574
+ if (input.substr(peg$currPos, 2) === peg$c47) {
3575
+ s1 = peg$c47;
3483
3576
  peg$currPos += 2;
3484
3577
  } else {
3485
3578
  s1 = peg$FAILED;
3486
- if (peg$silentFails === 0) { peg$fail(peg$e87); }
3579
+ if (peg$silentFails === 0) { peg$fail(peg$e88); }
3487
3580
  }
3488
3581
  if (s1 !== peg$FAILED) {
3489
3582
  s2 = peg$parse__();
@@ -3498,8 +3591,7 @@ function peg$parse(input, options) {
3498
3591
  if (peg$silentFails === 0) { peg$fail(peg$e6); }
3499
3592
  }
3500
3593
  if (s5 !== peg$FAILED) {
3501
- peg$savedPos = s0;
3502
- s0 = peg$f64(s3);
3594
+ s0 = s3;
3503
3595
  } else {
3504
3596
  peg$currPos = s0;
3505
3597
  s0 = peg$FAILED;
@@ -3663,6 +3755,7 @@ const peg$allowedStartRules = [
3663
3755
  "step",
3664
3756
  "start",
3665
3757
  "string",
3758
+ "taggedTemplate",
3666
3759
  "templateDocument",
3667
3760
  "templateDocumentChar",
3668
3761
  "templateDocumentContents",