occam-parsers 23.0.52 → 23.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +7 -7
  2. package/example.js +494 -167
  3. package/lib/bnf/bnf.js +2 -2
  4. package/lib/bnf/parser.js +4 -4
  5. package/lib/definition/{lookAheadModifierRule.js → callAheadModifierRule.js} +11 -11
  6. package/lib/definition/partRule/nonTerminal/ruleName.js +3 -3
  7. package/lib/example/basic/bnf.js +14 -0
  8. package/lib/example/basic/entries.js +18 -0
  9. package/lib/example/basic/lexer.js +136 -0
  10. package/lib/example/basic/parser.js +134 -0
  11. package/lib/example/view/basic.js +8 -8
  12. package/lib/example/view/div/sizeable.js +2 -2
  13. package/lib/node/bnf/{lookAheadModifier.js → callAheadModifier.js} +12 -12
  14. package/lib/node/bnf/choiceOfParts.js +4 -4
  15. package/lib/node/bnf/definition.js +3 -3
  16. package/lib/node/bnf/endOfLine.js +2 -2
  17. package/lib/node/bnf/epsilon.js +2 -2
  18. package/lib/node/bnf/noWhitespacePart.js +2 -2
  19. package/lib/node/bnf/part/nonTerminal.js +6 -6
  20. package/lib/node/bnf/part/terminal.js +3 -3
  21. package/lib/node/bnf/part.js +5 -5
  22. package/lib/node/bnf/partChoice.js +4 -4
  23. package/lib/node/bnf/regularExpression.js +2 -2
  24. package/lib/node/bnf/ruleName.js +3 -3
  25. package/lib/node/bnf/sequenceOfParts.js +4 -4
  26. package/lib/node/bnf/significantTokenType.js +2 -2
  27. package/lib/node/bnf/startOfContentPart.js +2 -2
  28. package/lib/node/bnf/terminalSymbol.js +2 -2
  29. package/lib/node/bnf/wildcard.js +2 -2
  30. package/lib/part/nonTerminal/choiceOfParts.js +4 -4
  31. package/lib/part/nonTerminal/oneOrMoreParts.js +4 -4
  32. package/lib/part/nonTerminal/optionalPart.js +4 -4
  33. package/lib/part/nonTerminal/ruleName.js +8 -8
  34. package/lib/part/nonTerminal/sequenceOfParts.js +4 -4
  35. package/lib/part/nonTerminal/zeroOrMoreParts.js +4 -4
  36. package/lib/part/nonTerminal.js +6 -6
  37. package/lib/part/terminal.js +5 -5
  38. package/lib/rule/{lookAheadModifier.js → callAheadModifier.js} +15 -15
  39. package/lib/rule.js +15 -9
  40. package/lib/ruleNames.js +5 -5
  41. package/lib/utilities/bnf.js +9 -9
  42. package/lib/utilities/parse.js +28 -28
  43. package/package.json +3 -3
  44. package/src/bnf/bnf.js +2 -2
  45. package/src/bnf/parser.js +3 -3
  46. package/src/definition/{lookAheadModifierRule.js → callAheadModifierRule.js} +3 -3
  47. package/src/definition/partRule/nonTerminal/ruleName.js +4 -4
  48. package/src/example/basic/bnf.js +27 -0
  49. package/src/example/basic/entries.js +9 -0
  50. package/src/example/basic/lexer.js +17 -0
  51. package/src/example/basic/parser.js +15 -0
  52. package/src/example/view/basic.js +13 -10
  53. package/src/example/view/div/sizeable.js +1 -1
  54. package/src/node/bnf/callAheadModifier.js +7 -0
  55. package/src/node/bnf/choiceOfParts.js +3 -3
  56. package/src/node/bnf/definition.js +2 -2
  57. package/src/node/bnf/endOfLine.js +1 -1
  58. package/src/node/bnf/epsilon.js +1 -1
  59. package/src/node/bnf/noWhitespacePart.js +1 -1
  60. package/src/node/bnf/part/nonTerminal.js +6 -6
  61. package/src/node/bnf/part/terminal.js +2 -2
  62. package/src/node/bnf/part.js +4 -4
  63. package/src/node/bnf/partChoice.js +3 -3
  64. package/src/node/bnf/regularExpression.js +1 -1
  65. package/src/node/bnf/ruleName.js +2 -2
  66. package/src/node/bnf/sequenceOfParts.js +3 -3
  67. package/src/node/bnf/significantTokenType.js +1 -1
  68. package/src/node/bnf/startOfContentPart.js +1 -1
  69. package/src/node/bnf/terminalSymbol.js +1 -1
  70. package/src/node/bnf/wildcard.js +1 -1
  71. package/src/part/nonTerminal/choiceOfParts.js +4 -4
  72. package/src/part/nonTerminal/oneOrMoreParts.js +4 -4
  73. package/src/part/nonTerminal/optionalPart.js +4 -4
  74. package/src/part/nonTerminal/ruleName.js +9 -9
  75. package/src/part/nonTerminal/sequenceOfParts.js +4 -4
  76. package/src/part/nonTerminal/zeroOrMoreParts.js +4 -4
  77. package/src/part/nonTerminal.js +4 -4
  78. package/src/part/terminal.js +3 -3
  79. package/src/rule/callAheadModifier.js +22 -0
  80. package/src/rule.js +21 -15
  81. package/src/ruleNames.js +1 -1
  82. package/src/utilities/bnf.js +6 -6
  83. package/src/utilities/parse.js +38 -28
  84. package/src/node/bnf/lookAheadModifier.js +0 -7
  85. package/src/rule/lookAheadModifier.js +0 -22
@@ -9,12 +9,12 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ isNodeCallAheadModifierNode: function() {
13
+ return isNodeCallAheadModifierNode;
14
+ },
12
15
  isNodeChoiceNode: function() {
13
16
  return isNodeChoiceNode;
14
17
  },
15
- isNodeLookAheadModifierNode: function() {
16
- return isNodeLookAheadModifierNode;
17
- },
18
18
  isNodeQuantifierNode: function() {
19
19
  return isNodeQuantifierNode;
20
20
  },
@@ -55,14 +55,14 @@ function isNodeQuantifierNode(node) {
55
55
  }
56
56
  return nodeQuantifierNode;
57
57
  }
58
- function isNodeLookAheadModifierNode(node) {
59
- var nodeLookAheadModifierNode = false;
58
+ function isNodeCallAheadModifierNode(node) {
59
+ var nodeCallAheadModifierNode = false;
60
60
  var nodeNonTerminalNode = node.isNonTerminalNode();
61
61
  if (nodeNonTerminalNode) {
62
- var nonTerminalNode = node, ruleName = nonTerminalNode.getRuleName(), ruleNameLookAheadModifierRuleName = ruleName === _ruleNames.lookAheadModifierRuleName;
63
- nodeLookAheadModifierNode = ruleNameLookAheadModifierRuleName; ///
62
+ var nonTerminalNode = node, ruleName = nonTerminalNode.getRuleName(), ruleNameCallAheadModifierRuleName = ruleName === _ruleNames.callAheadModifierRuleName;
63
+ nodeCallAheadModifierNode = ruleNameCallAheadModifierRuleName; ///
64
64
  }
65
- return nodeLookAheadModifierNode;
65
+ return nodeCallAheadModifierNode;
66
66
  }
67
67
  function ruleNameFromQuantifierNode(quantifierNode) {
68
68
  var nonTerminalNode;
@@ -73,4 +73,4 @@ function ruleNameFromQuantifierNode(quantifierNode) {
73
73
  return ruleName;
74
74
  }
75
75
 
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgcnVsZU5hbWVSdWxlTmFtZSwgcXVhbnRpZmllclJ1bGVOYW1lLCBsb29rQWhlYWRNb2RpZmllclJ1bGVOYW1lIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUNob2ljZU5vZGUobm9kZSkge1xuICBsZXQgbm9kZU5vQ2hvaWNlTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlQ29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICBub2RlTm9DaG9pY2VOb2RlID0gKHRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFwifFwiKTtcbiAgfVxuXG4gIHJldHVybiBub2RlTm9DaG9pY2VOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlUnVsZU5hbWVOb2RlKG5vZGUpIHtcbiAgbGV0IG5vZGVSdWxlTmFtZU5vZGUgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBub2RlTm9uVGVybWluYWxOb2RlID0gIW5vZGVUZXJtaW5hbE5vZGU7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgbm9kZVJ1bGVOYW1lTm9kZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcnVsZU5hbWVSdWxlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZVJ1bGVOYW1lTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVF1YW50aWZpZXJOb2RlKG5vZGUpIHtcbiAgbGV0IG5vZGVRdWFudGlmaWVyTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgIHJ1bGVOYW1lUXVhbnRpZmllclJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBxdWFudGlmaWVyUnVsZU5hbWUpO1xuXG4gICAgbm9kZVF1YW50aWZpZXJOb2RlID0gcnVsZU5hbWVRdWFudGlmaWVyUnVsZU5hbWU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBub2RlUXVhbnRpZmllck5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVMb29rQWhlYWRNb2RpZmllck5vZGUobm9kZSkge1xuICBsZXQgbm9kZUxvb2tBaGVhZE1vZGlmaWVyTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgIHJ1bGVOYW1lTG9va0FoZWFkTW9kaWZpZXJSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gbG9va0FoZWFkTW9kaWZpZXJSdWxlTmFtZSk7XG5cbiAgICBub2RlTG9va0FoZWFkTW9kaWZpZXJOb2RlID0gcnVsZU5hbWVMb29rQWhlYWRNb2RpZmllclJ1bGVOYW1lOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZUxvb2tBaGVhZE1vZGlmaWVyTm9kZTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZU5hbWVGcm9tUXVhbnRpZmllck5vZGUocXVhbnRpZmllck5vZGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBub25UZXJtaW5hbE5vZGUgPSBxdWFudGlmaWVyTm9kZTsgLy8vXG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGZpcnN0Q2hpbGROb2RlID0gZmlyc3QoY2hpbGROb2Rlcyk7XG5cbiAgbm9uVGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGU7ICAvLy9cblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIHJldHVybiBydWxlTmFtZTtcbn1cbiJdLCJuYW1lcyI6WyJpc05vZGVDaG9pY2VOb2RlIiwiaXNOb2RlTG9va0FoZWFkTW9kaWZpZXJOb2RlIiwiaXNOb2RlUXVhbnRpZmllck5vZGUiLCJpc05vZGVSdWxlTmFtZU5vZGUiLCJydWxlTmFtZUZyb21RdWFudGlmaWVyTm9kZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJub2RlIiwibm9kZU5vQ2hvaWNlTm9kZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwibm9kZVJ1bGVOYW1lTm9kZSIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicnVsZU5hbWVSdWxlTmFtZSIsIm5vZGVRdWFudGlmaWVyTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwicnVsZU5hbWUiLCJydWxlTmFtZVF1YW50aWZpZXJSdWxlTmFtZSIsInF1YW50aWZpZXJSdWxlTmFtZSIsIm5vZGVMb29rQWhlYWRNb2RpZmllck5vZGUiLCJydWxlTmFtZUxvb2tBaGVhZE1vZGlmaWVyUnVsZU5hbWUiLCJsb29rQWhlYWRNb2RpZmllclJ1bGVOYW1lIiwicXVhbnRpZmllck5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImZpcnN0Q2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFRZ0JBLGdCQUFnQjtlQUFoQkE7O0lBK0NBQywyQkFBMkI7ZUFBM0JBOztJQWhCQUMsb0JBQW9CO2VBQXBCQTs7SUFoQkFDLGtCQUFrQjtlQUFsQkE7O0lBaURBQywwQkFBMEI7ZUFBMUJBOzs7eUJBdEVlO3lCQUVpRDtBQUVoRixJQUFNLEFBQUVDLFFBQVVDLHlCQUFjLENBQXhCRDtBQUVELFNBQVNMLGlCQUFpQk8sSUFBSTtJQUNuQyxJQUFJQyxtQkFBbUI7SUFFdkIsSUFBTUMsbUJBQW1CRixLQUFLRyxjQUFjO0lBRTVDLElBQUlELGtCQUFrQjtRQUNwQixJQUFNRSxlQUFlSixNQUNmSyxzQkFBc0JELGFBQWFFLFVBQVU7UUFFbkRMLG1CQUFvQkksd0JBQXdCO0lBQzlDO0lBRUEsT0FBT0o7QUFDVDtBQUVPLFNBQVNMLG1CQUFtQkksSUFBSTtJQUNyQyxJQUFJTyxtQkFBbUI7SUFFdkIsSUFBTUwsbUJBQW1CRixLQUFLRyxjQUFjLElBQ3RDSyxzQkFBc0IsQ0FBQ047SUFFN0IsSUFBSU0scUJBQXFCO1FBQ3ZCLElBQU1DLGtCQUFrQlQsTUFDbEJVLDBCQUEwQkQsZ0JBQWdCRSxXQUFXO1FBRTNESixtQkFBb0JHLDRCQUE0QkUsMkJBQWdCO0lBQ2xFO0lBRUEsT0FBT0w7QUFDVDtBQUVPLFNBQVNaLHFCQUFxQkssSUFBSTtJQUN2QyxJQUFJYSxxQkFBcUI7SUFFekIsSUFBTUwsc0JBQXNCUixLQUFLYyxpQkFBaUI7SUFFbEQsSUFBSU4scUJBQXFCO1FBQ3ZCLElBQU1DLGtCQUFrQlQsTUFDbEJlLFdBQVdOLGdCQUFnQkUsV0FBVyxJQUN0Q0ssNkJBQThCRCxhQUFhRSw2QkFBa0I7UUFFbkVKLHFCQUFxQkcsNEJBQTZCLEdBQUc7SUFDdkQ7SUFFQSxPQUFPSDtBQUNUO0FBRU8sU0FBU25CLDRCQUE0Qk0sSUFBSTtJQUM5QyxJQUFJa0IsNEJBQTRCO0lBRWhDLElBQU1WLHNCQUFzQlIsS0FBS2MsaUJBQWlCO0lBRWxELElBQUlOLHFCQUFxQjtRQUN2QixJQUFNQyxrQkFBa0JULE1BQ2xCZSxXQUFXTixnQkFBZ0JFLFdBQVcsSUFDdENRLG9DQUFxQ0osYUFBYUssb0NBQXlCO1FBRWpGRiw0QkFBNEJDLG1DQUFvQyxHQUFHO0lBQ3JFO0lBRUEsT0FBT0Q7QUFFVDtBQUVPLFNBQVNyQiwyQkFBMkJ3QixjQUFjO0lBQ3ZELElBQUlaO0lBRUpBLGtCQUFrQlksZ0JBQWdCLEdBQUc7SUFFckMsSUFBTUMsYUFBYWIsZ0JBQWdCYyxhQUFhLElBQzFDQyxpQkFBaUIxQixNQUFNd0I7SUFFN0JiLGtCQUFrQmUsZ0JBQWlCLEdBQUc7SUFFdEMsSUFBTVQsV0FBV04sZ0JBQWdCRSxXQUFXO0lBRTVDLE9BQU9JO0FBQ1QifQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgcnVsZU5hbWVSdWxlTmFtZSwgcXVhbnRpZmllclJ1bGVOYW1lLCBjYWxsQWhlYWRNb2RpZmllclJ1bGVOYW1lIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUNob2ljZU5vZGUobm9kZSkge1xuICBsZXQgbm9kZU5vQ2hvaWNlTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlQ29udGVudCA9IHRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCk7XG5cbiAgICBub2RlTm9DaG9pY2VOb2RlID0gKHRlcm1pbmFsTm9kZUNvbnRlbnQgPT09IFwifFwiKTtcbiAgfVxuXG4gIHJldHVybiBub2RlTm9DaG9pY2VOb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlUnVsZU5hbWVOb2RlKG5vZGUpIHtcbiAgbGV0IG5vZGVSdWxlTmFtZU5vZGUgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBub2RlTm9uVGVybWluYWxOb2RlID0gIW5vZGVUZXJtaW5hbE5vZGU7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgbm9kZVJ1bGVOYW1lTm9kZSA9IChub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gcnVsZU5hbWVSdWxlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gbm9kZVJ1bGVOYW1lTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVF1YW50aWZpZXJOb2RlKG5vZGUpIHtcbiAgbGV0IG5vZGVRdWFudGlmaWVyTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgIHJ1bGVOYW1lUXVhbnRpZmllclJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBxdWFudGlmaWVyUnVsZU5hbWUpO1xuXG4gICAgbm9kZVF1YW50aWZpZXJOb2RlID0gcnVsZU5hbWVRdWFudGlmaWVyUnVsZU5hbWU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBub2RlUXVhbnRpZmllck5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVDYWxsQWhlYWRNb2RpZmllck5vZGUobm9kZSkge1xuICBsZXQgbm9kZUNhbGxBaGVhZE1vZGlmaWVyTm9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgIHJ1bGVOYW1lQ2FsbEFoZWFkTW9kaWZpZXJSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gY2FsbEFoZWFkTW9kaWZpZXJSdWxlTmFtZSk7XG5cbiAgICBub2RlQ2FsbEFoZWFkTW9kaWZpZXJOb2RlID0gcnVsZU5hbWVDYWxsQWhlYWRNb2RpZmllclJ1bGVOYW1lOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZUNhbGxBaGVhZE1vZGlmaWVyTm9kZTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZU5hbWVGcm9tUXVhbnRpZmllck5vZGUocXVhbnRpZmllck5vZGUpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZTtcblxuICBub25UZXJtaW5hbE5vZGUgPSBxdWFudGlmaWVyTm9kZTsgLy8vXG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGZpcnN0Q2hpbGROb2RlID0gZmlyc3QoY2hpbGROb2Rlcyk7XG5cbiAgbm9uVGVybWluYWxOb2RlID0gZmlyc3RDaGlsZE5vZGU7ICAvLy9cblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIHJldHVybiBydWxlTmFtZTtcbn1cbiJdLCJuYW1lcyI6WyJpc05vZGVDYWxsQWhlYWRNb2RpZmllck5vZGUiLCJpc05vZGVDaG9pY2VOb2RlIiwiaXNOb2RlUXVhbnRpZmllck5vZGUiLCJpc05vZGVSdWxlTmFtZU5vZGUiLCJydWxlTmFtZUZyb21RdWFudGlmaWVyTm9kZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJub2RlIiwibm9kZU5vQ2hvaWNlTm9kZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZUNvbnRlbnQiLCJnZXRDb250ZW50Iiwibm9kZVJ1bGVOYW1lTm9kZSIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicnVsZU5hbWVSdWxlTmFtZSIsIm5vZGVRdWFudGlmaWVyTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwicnVsZU5hbWUiLCJydWxlTmFtZVF1YW50aWZpZXJSdWxlTmFtZSIsInF1YW50aWZpZXJSdWxlTmFtZSIsIm5vZGVDYWxsQWhlYWRNb2RpZmllck5vZGUiLCJydWxlTmFtZUNhbGxBaGVhZE1vZGlmaWVyUnVsZU5hbWUiLCJjYWxsQWhlYWRNb2RpZmllclJ1bGVOYW1lIiwicXVhbnRpZmllck5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImZpcnN0Q2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF1RGdCQSwyQkFBMkI7ZUFBM0JBOztJQS9DQUMsZ0JBQWdCO2VBQWhCQTs7SUErQkFDLG9CQUFvQjtlQUFwQkE7O0lBaEJBQyxrQkFBa0I7ZUFBbEJBOztJQWlEQUMsMEJBQTBCO2VBQTFCQTs7O3lCQXRFZTt5QkFFaUQ7QUFFaEYsSUFBTSxBQUFFQyxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFRCxTQUFTSixpQkFBaUJNLElBQUk7SUFDbkMsSUFBSUMsbUJBQW1CO0lBRXZCLElBQU1DLG1CQUFtQkYsS0FBS0csY0FBYztJQUU1QyxJQUFJRCxrQkFBa0I7UUFDcEIsSUFBTUUsZUFBZUosTUFDZkssc0JBQXNCRCxhQUFhRSxVQUFVO1FBRW5ETCxtQkFBb0JJLHdCQUF3QjtJQUM5QztJQUVBLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTTCxtQkFBbUJJLElBQUk7SUFDckMsSUFBSU8sbUJBQW1CO0lBRXZCLElBQU1MLG1CQUFtQkYsS0FBS0csY0FBYyxJQUN0Q0ssc0JBQXNCLENBQUNOO0lBRTdCLElBQUlNLHFCQUFxQjtRQUN2QixJQUFNQyxrQkFBa0JULE1BQ2xCVSwwQkFBMEJELGdCQUFnQkUsV0FBVztRQUUzREosbUJBQW9CRyw0QkFBNEJFLDJCQUFnQjtJQUNsRTtJQUVBLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTWixxQkFBcUJLLElBQUk7SUFDdkMsSUFBSWEscUJBQXFCO0lBRXpCLElBQU1MLHNCQUFzQlIsS0FBS2MsaUJBQWlCO0lBRWxELElBQUlOLHFCQUFxQjtRQUN2QixJQUFNQyxrQkFBa0JULE1BQ2xCZSxXQUFXTixnQkFBZ0JFLFdBQVcsSUFDdENLLDZCQUE4QkQsYUFBYUUsNkJBQWtCO1FBRW5FSixxQkFBcUJHLDRCQUE2QixHQUFHO0lBQ3ZEO0lBRUEsT0FBT0g7QUFDVDtBQUVPLFNBQVNwQiw0QkFBNEJPLElBQUk7SUFDOUMsSUFBSWtCLDRCQUE0QjtJQUVoQyxJQUFNVixzQkFBc0JSLEtBQUtjLGlCQUFpQjtJQUVsRCxJQUFJTixxQkFBcUI7UUFDdkIsSUFBTUMsa0JBQWtCVCxNQUNsQmUsV0FBV04sZ0JBQWdCRSxXQUFXLElBQ3RDUSxvQ0FBcUNKLGFBQWFLLG9DQUF5QjtRQUVqRkYsNEJBQTRCQyxtQ0FBb0MsR0FBRztJQUNyRTtJQUVBLE9BQU9EO0FBRVQ7QUFFTyxTQUFTckIsMkJBQTJCd0IsY0FBYztJQUN2RCxJQUFJWjtJQUVKQSxrQkFBa0JZLGdCQUFnQixHQUFHO0lBRXJDLElBQU1DLGFBQWFiLGdCQUFnQmMsYUFBYSxJQUMxQ0MsaUJBQWlCMUIsTUFBTXdCO0lBRTdCYixrQkFBa0JlLGdCQUFpQixHQUFHO0lBRXRDLElBQU1ULFdBQVdOLGdCQUFnQkUsV0FBVztJQUU1QyxPQUFPSTtBQUNUIn0=
@@ -17,7 +17,7 @@ _export(exports, {
17
17
  }
18
18
  });
19
19
  var _necessary = require("necessary");
20
- var push = _necessary.arrayUtilities.push;
20
+ var push = _necessary.arrayUtilities.push, clear = _necessary.arrayUtilities.clear;
21
21
  function parsePart(part, nodes, state, callback, callAhead) {
22
22
  var parsed;
23
23
  var index = 0, parts = [
@@ -38,35 +38,35 @@ function parsePartOfParts(index, parts, nodes, state, callback, callAhead) {
38
38
  if (index === partsLength) {
39
39
  parsed = callback !== null ? callback() : true;
40
40
  } else {
41
- var part = parts[index];
41
+ var part = parts[index], partCallAhead = callAhead === null ? part.isCallAhead() : true;
42
42
  index++;
43
- if (callAhead === null) {
44
- var partLookAhead = part.isLookAhead();
45
- if (partLookAhead) {
46
- var partNodes;
47
- parsed = part.parse(nodes, state, callback, function() {
48
- partNodes = [];
49
- var _$nodes = partNodes, parsed = parsePartOfParts(index, parts, _$nodes, state, callback, callAhead);
50
- return parsed;
51
- });
52
- if (parsed) {
53
- push(nodes, partNodes);
54
- }
55
- } else {
56
- parsed = part.parse(nodes, state, callback, callAhead);
57
- if (parsed) {
58
- parsed = parsePartOfParts(index, parts, nodes, state, callback, callAhead);
59
- }
60
- }
61
- } else {
62
- parsed = part.parse(nodes, state, callback, function() {
63
- var parsed;
64
- parsed = parsePartOfParts(index, parts, nodes, state, callback, callAhead);
65
- return parsed;
66
- });
67
- }
43
+ parsed = partCallAhead ? parsePartWithCallAhead(part, index, parts, nodes, state, callback, callAhead) : parsePartWithoutCallAhead(part, index, parts, nodes, state, callback, callAhead);
44
+ }
45
+ return parsed;
46
+ }
47
+ function parsePartWithCallAhead(part, index, parts, nodes, state, callback, callAhead) {
48
+ var parsed;
49
+ var partNodes = [];
50
+ callAhead = function() {
51
+ var parsed;
52
+ clear(partNodes);
53
+ var _$nodes = partNodes; ///
54
+ parsed = parsePartOfParts(index, parts, _$nodes, state, callback, callAhead);
55
+ return parsed;
56
+ };
57
+ parsed = part.parse(nodes, state, callback, callAhead);
58
+ if (parsed) {
59
+ push(nodes, partNodes);
60
+ }
61
+ return parsed;
62
+ }
63
+ function parsePartWithoutCallAhead(part, index, parts, nodes, state, callback, callAhead) {
64
+ var parsed;
65
+ parsed = part.parse(nodes, state, callback, callAhead);
66
+ if (parsed) {
67
+ parsed = parsePartOfParts(index, parts, nodes, state, callback, callAhead);
68
68
  }
69
69
  return parsed;
70
70
  }
71
71
 
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFyc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IHB1c2ggfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQYXJ0KHBhcnQsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCkge1xuICBsZXQgcGFyc2VkO1xuXG4gIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgcGFydHMgPSBbXG4gICAgICAgICAgcGFydFxuICAgICAgICBdO1xuXG4gIHBhcnNlZCA9IHBhcnNlUGFydE9mUGFydHMoaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhcnRzKHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpIHtcbiAgbGV0IHBhcnNlZDtcblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcGFyc2VkID0gcGFyc2VQYXJ0T2ZQYXJ0cyhpbmRleCwgcGFydHMsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJ0T2ZQYXJ0cyhpbmRleCwgcGFydHMsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCkge1xuICBsZXQgcGFyc2VkO1xuXG4gIGNvbnN0IHBhcnRzTGVuZ3RoID0gcGFydHMubGVuZ3RoO1xuXG4gIGlmIChpbmRleCA9PT0gcGFydHNMZW5ndGgpIHtcbiAgICBwYXJzZWQgPSAoY2FsbGJhY2sgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgIGNhbGxiYWNrKCkgOlxuICAgICAgICAgICAgICAgICB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1tpbmRleF07XG5cbiAgICBpbmRleCsrO1xuXG4gICAgaWYgKGNhbGxBaGVhZCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFydExvb2tBaGVhZCA9IHBhcnQuaXNMb29rQWhlYWQoKTtcblxuICAgICAgaWYgKHBhcnRMb29rQWhlYWQpIHtcbiAgICAgICAgbGV0IHBhcnROb2RlcztcblxuICAgICAgICBwYXJzZWQgPSBwYXJ0LnBhcnNlKG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssICgpID0+IHtcbiAgICAgICAgICBwYXJ0Tm9kZXMgPSBbXTtcblxuICAgICAgICAgIGNvbnN0IG5vZGVzID0gcGFydE5vZGVzLCAgLy8vXG4gICAgICAgICAgICAgICAgcGFyc2VkID0gcGFyc2VQYXJ0T2ZQYXJ0cyhpbmRleCwgcGFydHMsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCk7XG5cbiAgICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgcHVzaChub2RlcywgcGFydE5vZGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkID0gcGFydC5wYXJzZShub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpO1xuXG4gICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICBwYXJzZWQgPSBwYXJzZVBhcnRPZlBhcnRzKGluZGV4LCBwYXJ0cywgbm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWQgPSBwYXJ0LnBhcnNlKG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssICgpID0+IHtcbiAgICAgICAgbGV0IHBhcnNlZDtcblxuICAgICAgICBwYXJzZWQgPSBwYXJzZVBhcnRPZlBhcnRzKGluZGV4LCBwYXJ0cywgbm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKTtcblxuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcnQiLCJwYXJzZVBhcnRzIiwicHVzaCIsImFycmF5VXRpbGl0aWVzIiwicGFydCIsIm5vZGVzIiwic3RhdGUiLCJjYWxsYmFjayIsImNhbGxBaGVhZCIsInBhcnNlZCIsImluZGV4IiwicGFydHMiLCJwYXJzZVBhcnRPZlBhcnRzIiwicGFydHNMZW5ndGgiLCJsZW5ndGgiLCJwYXJ0TG9va0FoZWFkIiwiaXNMb29rQWhlYWQiLCJwYXJ0Tm9kZXMiLCJwYXJzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBTWdCQSxTQUFTO2VBQVRBOztJQWFBQyxVQUFVO2VBQVZBOzs7eUJBakJlO0FBRS9CLElBQU0sQUFBRUMsT0FBU0MseUJBQWMsQ0FBdkJEO0FBRUQsU0FBU0YsVUFBVUksSUFBSSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxTQUFTO0lBQy9ELElBQUlDO0lBRUosSUFBTUMsUUFBUSxHQUNSQyxRQUFRO1FBQ05QO0tBQ0Q7SUFFUEssU0FBU0csaUJBQWlCRixPQUFPQyxPQUFPTixPQUFPQyxPQUFPQyxVQUFVQztJQUVoRSxPQUFPQztBQUNUO0FBRU8sU0FBU1IsV0FBV1UsS0FBSyxFQUFFTixLQUFLLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxTQUFTO0lBQ2pFLElBQUlDO0lBRUosSUFBTUMsUUFBUTtJQUVkRCxTQUFTRyxpQkFBaUJGLE9BQU9DLE9BQU9OLE9BQU9DLE9BQU9DLFVBQVVDO0lBRWhFLE9BQU9DO0FBQ1Q7QUFFQSxTQUFTRyxpQkFBaUJGLEtBQUssRUFBRUMsS0FBSyxFQUFFTixLQUFLLEVBQUVDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxTQUFTO0lBQ3ZFLElBQUlDO0lBRUosSUFBTUksY0FBY0YsTUFBTUcsTUFBTTtJQUVoQyxJQUFJSixVQUFVRyxhQUFhO1FBQ3pCSixTQUFTLEFBQUNGLGFBQWEsT0FDWkEsYUFDRTtJQUNmLE9BQU87UUFDTCxJQUFNSCxPQUFPTyxLQUFLLENBQUNELE1BQU07UUFFekJBO1FBRUEsSUFBSUYsY0FBYyxNQUFNO1lBQ3RCLElBQU1PLGdCQUFnQlgsS0FBS1ksV0FBVztZQUV0QyxJQUFJRCxlQUFlO2dCQUNqQixJQUFJRTtnQkFFSlIsU0FBU0wsS0FBS2MsS0FBSyxDQUFDYixPQUFPQyxPQUFPQyxVQUFVO29CQUMxQ1UsWUFBWSxFQUFFO29CQUVkLElBQU1aLFVBQVFZLFdBQ1JSLFNBQVNHLGlCQUFpQkYsT0FBT0MsT0FBT04sU0FBT0MsT0FBT0MsVUFBVUM7b0JBRXRFLE9BQU9DO2dCQUNUO2dCQUVBLElBQUlBLFFBQVE7b0JBQ1ZQLEtBQUtHLE9BQU9ZO2dCQUNkO1lBQ0YsT0FBTztnQkFDTFIsU0FBU0wsS0FBS2MsS0FBSyxDQUFDYixPQUFPQyxPQUFPQyxVQUFVQztnQkFFNUMsSUFBSUMsUUFBUTtvQkFDVkEsU0FBU0csaUJBQWlCRixPQUFPQyxPQUFPTixPQUFPQyxPQUFPQyxVQUFVQztnQkFDbEU7WUFDRjtRQUNGLE9BQU87WUFDTEMsU0FBU0wsS0FBS2MsS0FBSyxDQUFDYixPQUFPQyxPQUFPQyxVQUFVO2dCQUMxQyxJQUFJRTtnQkFFSkEsU0FBU0csaUJBQWlCRixPQUFPQyxPQUFPTixPQUFPQyxPQUFPQyxVQUFVQztnQkFFaEUsT0FBT0M7WUFDVDtRQUNGO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUIn0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFyc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IHB1c2gsIGNsZWFyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFydChwYXJ0LCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpIHtcbiAgbGV0IHBhcnNlZDtcblxuICBjb25zdCBpbmRleCA9IDAsXG4gICAgICAgIHBhcnRzID0gW1xuICAgICAgICAgIHBhcnRcbiAgICAgICAgXTtcblxuICBwYXJzZWQgPSBwYXJzZVBhcnRPZlBhcnRzKGluZGV4LCBwYXJ0cywgbm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKTtcblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQYXJ0cyhwYXJ0cywgbm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKSB7XG4gIGxldCBwYXJzZWQ7XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHBhcnNlZCA9IHBhcnNlUGFydE9mUGFydHMoaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFydE9mUGFydHMoaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpIHtcbiAgbGV0IHBhcnNlZDtcblxuICBjb25zdCBwYXJ0c0xlbmd0aCA9IHBhcnRzLmxlbmd0aDtcblxuICBpZiAoaW5kZXggPT09IHBhcnRzTGVuZ3RoKSB7XG4gICAgcGFyc2VkID0gKGNhbGxiYWNrICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICBjYWxsYmFjaygpIDpcbiAgICAgICAgICAgICAgICAgdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJ0ID0gcGFydHNbaW5kZXhdLFxuICAgICAgICAgIHBhcnRDYWxsQWhlYWQgPSAoY2FsbEFoZWFkID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC5pc0NhbGxBaGVhZCgpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWU7XG5cbiAgICBpbmRleCsrO1xuXG4gICAgcGFyc2VkID0gcGFydENhbGxBaGVhZCA/XG4gICAgICAgICAgICAgICBwYXJzZVBhcnRXaXRoQ2FsbEFoZWFkKHBhcnQsIGluZGV4LCBwYXJ0cywgbm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKSA6XG4gICAgICAgICAgICAgICAgIHBhcnNlUGFydFdpdGhvdXRDYWxsQWhlYWQocGFydCwgaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJ0V2l0aENhbGxBaGVhZChwYXJ0LCBpbmRleCwgcGFydHMsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCkge1xuICBsZXQgcGFyc2VkO1xuXG4gIGNvbnN0IHBhcnROb2RlcyA9IFtdO1xuXG4gIGNhbGxBaGVhZCA9ICgpID0+IHsgLy8vXG4gICAgbGV0IHBhcnNlZDtcblxuICAgIGNsZWFyKHBhcnROb2Rlcyk7XG5cbiAgICBjb25zdCBub2RlcyA9IHBhcnROb2RlczsgIC8vL1xuXG4gICAgcGFyc2VkID0gcGFyc2VQYXJ0T2ZQYXJ0cyhpbmRleCwgcGFydHMsIG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCk7XG5cbiAgICByZXR1cm4gcGFyc2VkO1xuICB9O1xuXG4gIHBhcnNlZCA9IHBhcnQucGFyc2Uobm9kZXMsIHN0YXRlLCBjYWxsYmFjaywgY2FsbEFoZWFkKTtcblxuICBpZiAocGFyc2VkKSB7XG4gICAgcHVzaChub2RlcywgcGFydE5vZGVzKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFydFdpdGhvdXRDYWxsQWhlYWQocGFydCwgaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpIHtcbiAgbGV0IHBhcnNlZDtcblxuICBwYXJzZWQgPSBwYXJ0LnBhcnNlKG5vZGVzLCBzdGF0ZSwgY2FsbGJhY2ssIGNhbGxBaGVhZCk7XG5cbiAgaWYgKHBhcnNlZCkge1xuICAgIHBhcnNlZCA9IHBhcnNlUGFydE9mUGFydHMoaW5kZXgsIHBhcnRzLCBub2Rlcywgc3RhdGUsIGNhbGxiYWNrLCBjYWxsQWhlYWQpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcnQiLCJwYXJzZVBhcnRzIiwicHVzaCIsImFycmF5VXRpbGl0aWVzIiwiY2xlYXIiLCJwYXJ0Iiwibm9kZXMiLCJzdGF0ZSIsImNhbGxiYWNrIiwiY2FsbEFoZWFkIiwicGFyc2VkIiwiaW5kZXgiLCJwYXJ0cyIsInBhcnNlUGFydE9mUGFydHMiLCJwYXJ0c0xlbmd0aCIsImxlbmd0aCIsInBhcnRDYWxsQWhlYWQiLCJpc0NhbGxBaGVhZCIsInBhcnNlUGFydFdpdGhDYWxsQWhlYWQiLCJwYXJzZVBhcnRXaXRob3V0Q2FsbEFoZWFkIiwicGFydE5vZGVzIiwicGFyc2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQU1nQkEsU0FBUztlQUFUQTs7SUFhQUMsVUFBVTtlQUFWQTs7O3lCQWpCZTtBQUUvQixJQUFRQyxPQUFnQkMseUJBQWMsQ0FBOUJELE1BQU1FLFFBQVVELHlCQUFjLENBQXhCQztBQUVQLFNBQVNKLFVBQVVLLElBQUksRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRUMsU0FBUztJQUMvRCxJQUFJQztJQUVKLElBQU1DLFFBQVEsR0FDUkMsUUFBUTtRQUNOUDtLQUNEO0lBRVBLLFNBQVNHLGlCQUFpQkYsT0FBT0MsT0FBT04sT0FBT0MsT0FBT0MsVUFBVUM7SUFFaEUsT0FBT0M7QUFDVDtBQUVPLFNBQVNULFdBQVdXLEtBQUssRUFBRU4sS0FBSyxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRUMsU0FBUztJQUNqRSxJQUFJQztJQUVKLElBQU1DLFFBQVE7SUFFZEQsU0FBU0csaUJBQWlCRixPQUFPQyxPQUFPTixPQUFPQyxPQUFPQyxVQUFVQztJQUVoRSxPQUFPQztBQUNUO0FBRUEsU0FBU0csaUJBQWlCRixLQUFLLEVBQUVDLEtBQUssRUFBRU4sS0FBSyxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRUMsU0FBUztJQUN2RSxJQUFJQztJQUVKLElBQU1JLGNBQWNGLE1BQU1HLE1BQU07SUFFaEMsSUFBSUosVUFBVUcsYUFBYTtRQUN6QkosU0FBUyxBQUFDRixhQUFhLE9BQ1pBLGFBQ0U7SUFDZixPQUFPO1FBQ0wsSUFBTUgsT0FBT08sS0FBSyxDQUFDRCxNQUFNLEVBQ25CSyxnQkFBZ0IsQUFBQ1AsY0FBYyxPQUNiSixLQUFLWSxXQUFXLEtBQ2Q7UUFFMUJOO1FBRUFELFNBQVNNLGdCQUNFRSx1QkFBdUJiLE1BQU1NLE9BQU9DLE9BQU9OLE9BQU9DLE9BQU9DLFVBQVVDLGFBQ2pFVSwwQkFBMEJkLE1BQU1NLE9BQU9DLE9BQU9OLE9BQU9DLE9BQU9DLFVBQVVDO0lBQ3JGO0lBRUEsT0FBT0M7QUFDVDtBQUVBLFNBQVNRLHVCQUF1QmIsSUFBSSxFQUFFTSxLQUFLLEVBQUVDLEtBQUssRUFBRU4sS0FBSyxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRUMsU0FBUztJQUNuRixJQUFJQztJQUVKLElBQU1VLFlBQVksRUFBRTtJQUVwQlgsWUFBWTtRQUNWLElBQUlDO1FBRUpOLE1BQU1nQjtRQUVOLElBQU1kLFVBQVFjLFdBQVksR0FBRztRQUU3QlYsU0FBU0csaUJBQWlCRixPQUFPQyxPQUFPTixTQUFPQyxPQUFPQyxVQUFVQztRQUVoRSxPQUFPQztJQUNUO0lBRUFBLFNBQVNMLEtBQUtnQixLQUFLLENBQUNmLE9BQU9DLE9BQU9DLFVBQVVDO0lBRTVDLElBQUlDLFFBQVE7UUFDVlIsS0FBS0ksT0FBT2M7SUFDZDtJQUVBLE9BQU9WO0FBQ1Q7QUFFQSxTQUFTUywwQkFBMEJkLElBQUksRUFBRU0sS0FBSyxFQUFFQyxLQUFLLEVBQUVOLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxRQUFRLEVBQUVDLFNBQVM7SUFDdEYsSUFBSUM7SUFFSkEsU0FBU0wsS0FBS2dCLEtBQUssQ0FBQ2YsT0FBT0MsT0FBT0MsVUFBVUM7SUFFNUMsSUFBSUMsUUFBUTtRQUNWQSxTQUFTRyxpQkFBaUJGLE9BQU9DLE9BQU9OLE9BQU9DLE9BQU9DLFVBQVVDO0lBQ2xFO0lBRUEsT0FBT0M7QUFDVCJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-parsers",
3
3
  "author": "James Smith",
4
- "version": "23.0.52",
4
+ "version": "23.0.54",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
@@ -16,8 +16,8 @@
16
16
  "devDependencies": {
17
17
  "@swc/core": "^1.5.6",
18
18
  "easy": "^23.0.1",
19
- "easy-layout": "^6.0.215",
20
- "easy-with-style": "^3.0.436",
19
+ "easy-layout": "^6.0.216",
20
+ "easy-with-style": "^3.0.438",
21
21
  "esbuild": "^0.9.6",
22
22
  "express": "^4.17.1",
23
23
  "juxtapose": "^4.0.117",
package/src/bnf/bnf.js CHANGED
@@ -22,7 +22,7 @@ const bnf = `
22
22
 
23
23
  | sequenceOfParts
24
24
 
25
- | ruleName lookAheadModifier?
25
+ | ruleName callAheadModifier?
26
26
 
27
27
  ;
28
28
 
@@ -80,7 +80,7 @@ const bnf = `
80
80
 
81
81
  opacityModifier ::= <NO_WHITESPACE>( "." | ".." );
82
82
 
83
- lookAheadModifier ::= <NO_WHITESPACE>"..." ;
83
+ callAheadModifier ::= <NO_WHITESPACE>"..." ;
84
84
 
85
85
  optionalQuantifier ::= <NO_WHITESPACE>"?" ;
86
86
 
package/src/bnf/parser.js CHANGED
@@ -24,7 +24,7 @@ import NonTerminalPartRule from "../rule/nonTerminalPart";
24
24
  import SequenceOfPartsRule from "../rule/sequenceOfParts";
25
25
  import OpacityModifierRule from "../rule/opacityModifier";
26
26
  import NoWhitespacePartRule from "../rule/noWhitespacePart";
27
- import LookAheadModifierRule from "../rule/lookAheadModifier";
27
+ import CallAheadModifierRule from "../rule/callAheadModifier";
28
28
  import RegularExpressionRule from "../rule/regularExpression";
29
29
  import OptionalQuantifierRule from "../rule/optionalQuantifier";
30
30
  import StartOfContentPartRule from "../rule/startOfContentPart";
@@ -93,7 +93,7 @@ export default class BNFParser {
93
93
  opacityModifierRule = OpacityModifierRule.fromNothing(),
94
94
  noWhitespacePartRule = NoWhitespacePartRule.fromNothing(),
95
95
  regularExpressionRule = RegularExpressionRule.fromNothing(),
96
- lookAheadModifierRule = LookAheadModifierRule.fromNothing(),
96
+ callAheadModifierRule = CallAheadModifierRule.fromNothing(),
97
97
  optionalQuantifierRule = OptionalQuantifierRule.fromNothing(),
98
98
  startOfContentPartRule = StartOfContentPartRule.fromNothing(),
99
99
  oneOrMoreQuantifierRule = OneOrMoreQuantifierRule.fromNothing(),
@@ -124,7 +124,7 @@ export default class BNFParser {
124
124
  epsilonRule,
125
125
  quantifierRule,
126
126
  opacityModifierRule,
127
- lookAheadModifierRule,
127
+ callAheadModifierRule,
128
128
  optionalQuantifierRule,
129
129
  oneOrMoreQuantifierRule,
130
130
  zeroOrMoreQuantifierRule,
@@ -8,7 +8,7 @@ import TerminalSymbolPart from "../part/terminal/terminalSymbol";
8
8
 
9
9
  const { ellipsis } = specialSymbols;
10
10
 
11
- export default class LookAheadModifierRuleDefinition extends Definition {
11
+ export default class CallAheadModifierRuleDefinition extends Definition {
12
12
  static fromNothing() {
13
13
  const content = ellipsis, ///
14
14
  noWhitespacePart = NoWhitespacePart.fromNothing(),
@@ -18,8 +18,8 @@ export default class LookAheadModifierRuleDefinition extends Definition {
18
18
  terminalSymbolPart
19
19
  ],
20
20
  precedence = null,
21
- lookAheadModifierRuleDefinition = new LookAheadModifierRuleDefinition(parts, precedence);
21
+ callAheadModifierRuleDefinition = new CallAheadModifierRuleDefinition(parts, precedence);
22
22
 
23
- return lookAheadModifierRuleDefinition;
23
+ return callAheadModifierRuleDefinition;
24
24
  }
25
25
  }
@@ -4,16 +4,16 @@ import Definition from "../../../definition";
4
4
  import RuleNamePart from "../../../part/nonTerminal/ruleName";
5
5
  import OptionalPartPart from "../../../part/nonTerminal/optionalPart";
6
6
 
7
- import { ruleNameRuleName, lookAheadModifierRuleName } from "../../../ruleNames";
7
+ import { ruleNameRuleName, callAheadModifierRuleName } from "../../../ruleNames";
8
8
 
9
9
  export default class RuleNameNonTerminalPartRuleDefinition extends Definition {
10
10
  static fromNothing() {
11
11
  const ruleNameRuleNamePart = RuleNamePart.fromRuleName(ruleNameRuleName),
12
- lookAheadModifierRuleNamePart = RuleNamePart.fromRuleName(lookAheadModifierRuleName),
13
- optionalLookAheadRuleNamePartPart = OptionalPartPart.fromPart(lookAheadModifierRuleNamePart),
12
+ callAheadModifierRuleNamePart = RuleNamePart.fromRuleName(callAheadModifierRuleName),
13
+ optionalCallAheadRuleNamePartPart = OptionalPartPart.fromPart(callAheadModifierRuleNamePart),
14
14
  parts = [
15
15
  ruleNameRuleNamePart,
16
- optionalLookAheadRuleNamePartPart
16
+ optionalCallAheadRuleNamePartPart
17
17
  ],
18
18
  precedence = null,
19
19
  ruleNameNonTerminalPartRuleDefinition = new RuleNameNonTerminalPartRuleDefinition(parts, precedence);
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ const bnf = `
4
+
5
+ S ::= A... <END_OF_LINE> ;
6
+
7
+ A ::= T ":" . ;
8
+
9
+ T ::= T_ T~* ;
10
+
11
+ B ::= T_ T~* B~T ;
12
+
13
+ V ::= . ;
14
+
15
+ T_ ::= V ;
16
+
17
+ T~B ::= ":" B ;
18
+
19
+ B~T ::= ε ;
20
+
21
+ T~ ::= B~T B~* T~B ;
22
+
23
+ B~ ::= T~B T~* B~T ;
24
+
25
+ `;
26
+
27
+ export default bnf;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ const entries = [
4
+ {
5
+ "unassigned": "."
6
+ }
7
+ ];
8
+
9
+ export default entries;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ import { CommonLexer, BasicLexer as BasicLexerBase, EndOfLineSignificantToken } from "occam-lexers";
4
+
5
+ import entries from "./entries";
6
+
7
+ export default class BasicLexer extends BasicLexerBase {
8
+ static entries = entries;
9
+
10
+ static EndOfLineToken = EndOfLineSignificantToken; ///
11
+
12
+ static fromNothing() { return CommonLexer.fromNothing(BasicLexer); }
13
+
14
+ static fromRules(rules) { return CommonLexer.fromRules(BasicLexer, rules); }
15
+
16
+ static fromEntries(entries) { return CommonLexer.fromEntries(BasicLexer, entries); }
17
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import { CommonParser, BasicParser as BasicParserBase } from "../../index"; ///
4
+
5
+ import bnf from "./bnf";
6
+
7
+ export default class BasicParser extends BasicParserBase {
8
+ static bnf = bnf;
9
+
10
+ static fromNothing() { return CommonParser.fromNothing(BasicParser); }
11
+
12
+ static fromBNF(bnf) { return CommonParser.fromBNF(BasicParser, bnf); }
13
+
14
+ static fromRules(rules) { return CommonParser.fromRules(BasicParser, rules); }
15
+ }
@@ -1,24 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import { BasicLexer } from "occam-lexers";
4
- import { BasicParser } from "../../index"; ///
5
-
6
3
  import View from "../view";
4
+ import BasicLexer from "../basic/lexer";
5
+ import BasicParser from "../basic/parser";
7
6
 
8
7
  const { bnf } = BasicParser,
9
8
  { entries } = BasicLexer;
10
9
 
11
- const basicLexer = BasicLexer.fromEntries(entries),
12
- basicParser = BasicParser.fromBNF(bnf);
13
-
14
10
  export default class BasicView extends View {
15
11
  getTokens(content) {
16
- const tokens = basicLexer.tokenise(content);
12
+ const lexicalEntries = this.getLexicalEntries(),
13
+ entries = lexicalEntries, ///
14
+ basicLexer = BasicLexer.fromEntries(entries),
15
+ tokens = basicLexer.tokenise(content);
17
16
 
18
17
  return tokens;
19
18
  }
20
19
 
21
20
  getNode(tokens) {
21
+ const bnf = this.getBNF(),
22
+ basicParser = BasicParser.fromBNF(bnf);
23
+
22
24
  const node = basicParser.parse(tokens);
23
25
 
24
26
  return node;
@@ -28,8 +30,8 @@ export default class BasicView extends View {
28
30
  this.assignContext();
29
31
 
30
32
  const { initialContent } = this.constructor,
31
- content = initialContent, ///
32
- lexicalEntries = entries; ///
33
+ lexicalEntries = entries, ///
34
+ content = initialContent; ///
33
35
 
34
36
  this.setBNF(bnf);
35
37
 
@@ -40,7 +42,8 @@ export default class BasicView extends View {
40
42
  this.keyUpHandler();
41
43
  }
42
44
 
43
- static initialContent = "1+2*3 . 1+2*3 .";
45
+ static initialContent = `f:x:y
46
+ `;
44
47
 
45
48
  static defaultProperties = {
46
49
  className: "basic"
@@ -6,7 +6,7 @@ import { SizeableDiv } from "easy-layout";
6
6
 
7
7
  export default withStyle(SizeableDiv)`
8
8
 
9
- width: 48rem;
9
+ width: 36rem;
10
10
  min-width: 24rem;
11
11
 
12
12
  `;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ export default class CallAheadModifierBNFNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesAndCallAhead(ruleName, childNode, opacity) { return NonTerminalNode.fromRuleNameChildNodesAndCallAhead(CallAheadModifierBNFNode, ruleName, childNode, opacity); }
7
+ }
@@ -7,14 +7,14 @@ import { partChoiceRuleName } from "../../ruleNames";
7
7
  import { nodesFromChildNodesAndRuleName } from "../../utilities/node";
8
8
 
9
9
  export default class ChoiceOfPartsBNFNode extends NonTerminalNode {
10
- generatePart(lookAhead) {
10
+ generatePart(callAhead) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  partChoiceBNFNodes = nodesFromChildNodesAndRuleName(childNodes, partChoiceRuleName);
13
13
 
14
- lookAhead = false; ///
14
+ callAhead = false; ///
15
15
 
16
16
  const partChoices = partChoiceBNFNodes.map((partChoiceBNFNode) => {
17
- const partChoice = partChoiceBNFNode.generatePartChoice(lookAhead);
17
+ const partChoice = partChoiceBNFNode.generatePartChoice(callAhead);
18
18
 
19
19
  return partChoice;
20
20
  }),
@@ -11,9 +11,9 @@ export default class DefinitionBNFNode extends NonTerminalNode {
11
11
  const childNodes = this.getChildNodes(),
12
12
  partBNFNodes = nodesFromChildNodesAndRuleName(childNodes, partRuleName),
13
13
  precedenceBNFNode = nodeFromChildNodesAndRuleName(childNodes, precedenceRuleName),
14
- lookAhead = false, ///
14
+ callAhead = false, ///
15
15
  parts = partBNFNodes.map((partBNFNode) => {
16
- const part = partBNFNode.generatePart(lookAhead);
16
+ const part = partBNFNode.generatePart(callAhead);
17
17
 
18
18
  return part;
19
19
  }),
@@ -4,7 +4,7 @@ import EndOfLinePart from "../../part/terminal/endOfLine";
4
4
  import NonTerminalNode from "../../node/nonTerminal";
5
5
 
6
6
  export default class EndOfLineBNFNode extends NonTerminalNode {
7
- generatePart(lookAhead) {
7
+ generatePart(callAhead) {
8
8
  const endOfLinePart = EndOfLinePart.fromNothing();
9
9
 
10
10
  return endOfLinePart;
@@ -4,7 +4,7 @@ import EpsilonPart from "../../part/terminal/epsilon";
4
4
  import NonTerminalNode from "../../node/nonTerminal";
5
5
 
6
6
  export default class EpsilonBNFNode extends NonTerminalNode {
7
- generatePart(lookAhead) {
7
+ generatePart(callAhead) {
8
8
  const epsilonPart = EpsilonPart.fromNothing();
9
9
 
10
10
  return epsilonPart;
@@ -4,7 +4,7 @@ import NonTerminalNode from "../../node/nonTerminal";
4
4
  import NoWhitespacePart from "../../part/terminal/noWhitespace";
5
5
 
6
6
  export default class NoWhitespacePartBNFNode extends NonTerminalNode {
7
- generatePart(lookAhead) {
7
+ generatePart(callAhead) {
8
8
  const noWhitespacePart = NoWhitespacePart.fromNothing();
9
9
 
10
10
  return noWhitespacePart;
@@ -4,24 +4,24 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import NonTerminalNode from "../../../node/nonTerminal";
6
6
 
7
- import { lookAheadModifierRuleName } from "../../../ruleNames";
7
+ import { callAheadModifierRuleName } from "../../../ruleNames";
8
8
  import { nodeFromChildNodesAndRuleName } from "../../../utilities/node";
9
9
 
10
10
  const { first } = arrayUtilities;
11
11
 
12
12
  export default class NonTerminalPartBNFNode extends NonTerminalNode {
13
- generatePart(lookAhead) {
13
+ generatePart(callAhead) {
14
14
  const childNodes = this.getChildNodes();
15
15
 
16
- if (!lookAhead) {
17
- const lookAheadModifierBNFNode = nodeFromChildNodesAndRuleName(childNodes, lookAheadModifierRuleName);
16
+ if (!callAhead) {
17
+ const callAheadModifierBNFNode = nodeFromChildNodesAndRuleName(childNodes, callAheadModifierRuleName);
18
18
 
19
- lookAhead = (lookAheadModifierBNFNode !== null);
19
+ callAhead = (callAheadModifierBNFNode !== null);
20
20
  }
21
21
 
22
22
  const firstChildNode = first(childNodes),
23
23
  node = firstChildNode, ///
24
- part = node.generatePart(lookAhead);
24
+ part = node.generatePart(callAhead);
25
25
 
26
26
  return part;
27
27
  }
@@ -7,11 +7,11 @@ import NonTerminalNode from "../../../node/nonTerminal";
7
7
  const { first } = arrayUtilities;
8
8
 
9
9
  export default class TerminalPartBNFNode extends NonTerminalNode {
10
- generatePart(lookAhead) {
10
+ generatePart(callAhead) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  firstChildNode = first(childNodes),
13
13
  node = firstChildNode, ///
14
- part = node.generatePart(lookAhead);
14
+ part = node.generatePart(callAhead);
15
15
 
16
16
  return part;
17
17
  }
@@ -13,7 +13,7 @@ import { optionalQuantifierRuleName, oneOrMoreQuantifierRuleName, zeroOrMoreQuan
13
13
  const { last } = arrayUtilities;
14
14
 
15
15
  export default class PartBNFNode extends NonTerminalNode {
16
- generatePart(lookAhead) {
16
+ generatePart(callAhead) {
17
17
  const childNodes = this.getChildNodes(),
18
18
  nodes = childNodes.slice(),
19
19
  part = partFromNodes(nodes);
@@ -25,15 +25,15 @@ export default class PartBNFNode extends NonTerminalNode {
25
25
  }
26
26
 
27
27
  function partFromNodes(nodes) {
28
- let part = null;
28
+ let part;
29
29
 
30
30
  const nodesLength = nodes.length;
31
31
 
32
32
  if (nodesLength === 1) {
33
33
  const node = nodes.pop(),
34
- lookAhead = false;
34
+ callAhead = false;
35
35
 
36
- part = node.generatePart(lookAhead);
36
+ part = node.generatePart(callAhead);
37
37
  } else {
38
38
  const lastNodeQuantifierNode = isLastNodeQuantifierNode(nodes);
39
39
 
@@ -7,14 +7,14 @@ import { nodeFromChildNodesAndRuleName } from "../../utilities/node";
7
7
  import { partRuleName, precedenceRuleName } from "../../ruleNames";
8
8
 
9
9
  export default class PartChoiceBNFNode extends NonTerminalNode {
10
- generatePartChoice(lookAhead) {
10
+ generatePartChoice(callAhead) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  partBNFNode = nodeFromChildNodesAndRuleName(childNodes, partRuleName),
13
13
  precedenceBNFNode = nodeFromChildNodesAndRuleName(childNodes, precedenceRuleName);
14
14
 
15
- lookAhead = false; ///
15
+ callAhead = false; ///
16
16
 
17
- const part = partBNFNode.generatePart(lookAhead),
17
+ const part = partBNFNode.generatePart(callAhead),
18
18
  precedence = (precedenceBNFNode === null) ?
19
19
  null :
20
20
  precedenceBNFNode.getPrecedence(),
@@ -10,7 +10,7 @@ const { first, second } = arrayUtilities;
10
10
  export default class RegularExpressionBNFNode extends NonTerminalNode {
11
11
  regularExpression = /^\/((?:\\.|[^\/])*)\/$/;
12
12
 
13
- generatePart(lookAhead) {
13
+ generatePart(callAhead) {
14
14
  const regularExpression = this.getRegularExpression(),
15
15
  regularExpressionPart = RegularExpressionPart.fromRegularExpression(regularExpression);
16
16
 
@@ -8,13 +8,13 @@ import NonTerminalNode from "../../node/nonTerminal";
8
8
  const { first } = arrayUtilities;
9
9
 
10
10
  export default class RuleNameBNFNode extends NonTerminalNode {
11
- generatePart(lookAhead) {
11
+ generatePart(callAhead) {
12
12
  const childNodes = this.getChildNodes(),
13
13
  firstChildNode = first(childNodes),
14
14
  terminalNode = firstChildNode, ///
15
15
  terminalNodeContent = terminalNode.getContent(),
16
16
  ruleName = terminalNodeContent, ///
17
- ruleNamePart = RuleNamePart.fromLookAheadAndRuleName(lookAhead, ruleName);
17
+ ruleNamePart = RuleNamePart.fromCallAheadAndRuleName(callAhead, ruleName);
18
18
 
19
19
  return ruleNamePart;
20
20
  }
@@ -7,14 +7,14 @@ import { partRuleName } from "../../ruleNames";
7
7
  import { nodesFromChildNodesAndRuleName } from "../../utilities/node";
8
8
 
9
9
  export default class SequenceOfPartsBNFNode extends NonTerminalNode {
10
- generatePart(lookAhead) {
10
+ generatePart(callAhead) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  partBNFNodes = nodesFromChildNodesAndRuleName(childNodes, partRuleName);
13
13
 
14
- lookAhead = false; ///
14
+ callAhead = false; ///
15
15
 
16
16
  const parts = partBNFNodes.map((partBNFNode) => {
17
- const part = partBNFNode.generatePart(lookAhead);
17
+ const part = partBNFNode.generatePart(callAhead);
18
18
 
19
19
  return part;
20
20
  }),
@@ -10,7 +10,7 @@ const { first, second } = arrayUtilities;
10
10
  export default class SignificantTokenTypeBNFNode extends NonTerminalNode {
11
11
  regularExpression = /^\[([^\]]+)]$/;
12
12
 
13
- generatePart(lookAhead) {
13
+ generatePart(callAhead) {
14
14
  const significantTokenType = this.getSignificantTokenType(),
15
15
  significantTokenTypePart = SignificantTokenTypePart.fromSignificantTokenType(significantTokenType);
16
16
 
@@ -4,7 +4,7 @@ import NonTerminalNode from "../../node/nonTerminal";
4
4
  import StartOfContentPart from "../../part/terminal/startOfContent";
5
5
 
6
6
  export default class StartOfContentPartBNFNode extends NonTerminalNode {
7
- generatePart(lookAhead) {
7
+ generatePart(callAhead) {
8
8
  const startOfContentPart = StartOfContentPart.fromNothing();
9
9
 
10
10
  return startOfContentPart;