occam-grammars 1.2.5 → 1.3.3

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.
@@ -133,9 +133,9 @@ var FurtleView = /*#__PURE__*/ function(View) {
133
133
  _define_property(FurtleView, "Lexer", _index.FurtleLexer);
134
134
  _define_property(FurtleView, "Parser", _index.FurtleParser);
135
135
  _define_property(FurtleView, "readOnly", false);
136
- _define_property(FurtleView, "initialContent", 'Node* termNode, statementNode; Boolean* bound = false;\n \nString variableName = variableNameFromTermNode(termNode);\n\nIf (variableName == null) {\n Break;\n}\n\nNodes statementNodes = nodesQuery(statementNode, //statement);\n\nForEach(statementNodes, (Node statementNode) {\n String boundVariableName = boundVariableNameFromStatementNode(statementNode); \n \n If (boundVariableName == variableName) {\n bound = true;\n \n Break;\n }\n});\n \n \nString variableNameFromTermNode(Node termNode) {\n String variableName = null;\n \n Node variableNameTerminalNode = nodeQuery(termNode, /term/variable/@name);\n \n If (variableNameTerminalNode != null) {\n String content;\n \n { content } = variableNameTerminalNode;\n \n variableName = content;\n }\n \n Return variableName;\n}\n\nString boundVariableNameFromStatementNode(Node statementNode) {\n String boundVariableName = null;\n \n Nodes childNodes;\n \n { childNodes } = statementNode;\n \n Node firstChildNode;\n\n [ firstChildNode ] = childNodes;\n \n Boolean firstChildNodeTerminalNode = isTerminalNode(firstChildNode);\n \n If (firstChildNodeTerminalNode) {\n Node terminalNode = firstChildNode;\n \n String content;\n \n { content } = firstChildNode;\n \n If ((content == "∀") || (content == "∃")) {\n Node secondChildNode;\n \n [ _, secondChildNode ] = childNodes;\n \n Node argumentNode = secondChildNode;\n \n Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable/@name);\n \n If (boundVariableNameTerminalNode != null) {\n { content } = boundVariableNameTerminalNode;\n \n boundVariableName = content;\n }\n }\n }\n \n Return boundVariableName;\n}\n');
136
+ _define_property(FurtleView, "initialContent", 'Boolean isBound(Node termNode, Node statementNode) {\n Boolean bound = false;\n \n String variableName = variableNameFromTermNode(termNode);\n \n If (variableName != null) {\n Nodes statementNodes = nodesQuery(statementNode, //statement);\n\n ForEach(statementNodes, (Node statementNode) {\n String boundVariableName = boundVariableNameFromStatementNode(statementNode); \n \n If (boundVariableName == variableName) {\n bound = true;\n }\n });\n }\n \n Return bound;\n}\n \nString variableNameFromTermNode(Node termNode) {\n String variableName = null;\n \n Node variableNameTerminalNode = nodeQuery(termNode, /term/variable/@name);\n \n If (variableNameTerminalNode != null) {\n { String content } = variableNameTerminalNode;\n \n variableName = content;\n }\n \n Return variableName;\n}\n\nString boundVariableNameFromStatementNode(Node statementNode) {\n String boundVariableName = null;\n \n { Nodes childNodes } = statementNode;\n \n [ Node firstChildNode ] = childNodes;\n \n { String content } = firstChildNode;\n \n If ((content == "∀") || (content == "∃")) {\n [ _, Node argumentNode ] = childNodes;\n \n Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable/@name);\n \n If (boundVariableNameTerminalNode != null) {\n { content } = boundVariableNameTerminalNode;\n \n boundVariableName = content;\n }\n }\n \n Return boundVariableName;\n}\n');
137
137
  _define_property(FurtleView, "defaultProperties", {
138
138
  className: "furtle"
139
139
  });
140
140
 
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3ZpZXcvZnVydGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGdXJ0bGVMZXhlciwgRnVydGxlUGFyc2VyLCBsZXhlcnNVdGlsaXRpZXMsIHBhcnNlcnNVdGlsaXRpZXMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjsgIC8vL1xuXG5pbXBvcnQgVmlldyBmcm9tIFwiLi4vdmlld1wiO1xuXG5jb25zdCB7IGZ1cnRsZVBhcnNlckZyb21CTkYgfSA9IHBhcnNlcnNVdGlsaXRpZXMsXG4gICAgICB7IGZ1cnRsZUxleGVyRnJvbUVudHJpZXMgfSA9IGxleGVyc1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnVydGxlVmlldyBleHRlbmRzIFZpZXcge1xuICBnZXRUb2tlbnMoKSB7XG4gICAgY29uc3QgbGV4aWNhbEVudHJpZXMgPSB0aGlzLmdldExleGljYWxFbnRyaWVzKCksXG4gICAgICAgICAgZW50cmllcyA9IGxleGljYWxFbnRyaWVzLCAvLy8vXG4gICAgICAgICAgZnVydGxlTGV4ZXIgPSBmdXJ0bGVMZXhlckZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIGxleGVyID0gZnVydGxlTGV4ZXIsICAvLy9cbiAgICAgICAgICBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXG4gICAgICAgICAgdG9rZW5zID0gbGV4ZXIudG9rZW5pc2UoY29udGVudCk7XG5cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG5cbiAgZ2V0UGFyc2VUcmVlKHRva2Vucykge1xuICAgIGxldCBwYXJzZVRyZWUgPSBudWxsO1xuXG4gICAgY29uc3QgYm5mID0gdGhpcy5nZXRCTkYoKSxcbiAgICAgICAgICBmdXJ0bGVQYXJzZXIgPSBmdXJ0bGVQYXJzZXJGcm9tQk5GKGJuZiksXG4gICAgICAgICAgcGFyc2VyID0gZnVydGxlUGFyc2VyLCAvLy9cbiAgICAgICAgICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2Vucyk7XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcGFyc2VUcmVlID0gbm9kZS5hc1BhcnNlVHJlZSh0b2tlbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgTGV4ZXIgPSBGdXJ0bGVMZXhlcjtcblxuICBzdGF0aWMgUGFyc2VyID0gRnVydGxlUGFyc2VyO1xuXG4gIHN0YXRpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIHN0YXRpYyBpbml0aWFsQ29udGVudCA9IGBOb2RlKiB0ZXJtTm9kZSwgc3RhdGVtZW50Tm9kZTsgQm9vbGVhbiogYm91bmQgPSBmYWxzZTtcbiAgXG5TdHJpbmcgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuSWYgKHZhcmlhYmxlTmFtZSA9PSBudWxsKSB7XG4gIEJyZWFrO1xufVxuXG5Ob2RlcyBzdGF0ZW1lbnROb2RlcyA9IG5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSwgLy9zdGF0ZW1lbnQpO1xuXG5Gb3JFYWNoKHN0YXRlbWVudE5vZGVzLCAoTm9kZSBzdGF0ZW1lbnROb2RlKSB7XG4gIFN0cmluZyBib3VuZFZhcmlhYmxlTmFtZSA9IGJvdW5kVmFyaWFibGVOYW1lRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7IFxuICBcbiAgSWYgKGJvdW5kVmFyaWFibGVOYW1lID09IHZhcmlhYmxlTmFtZSkge1xuICAgIGJvdW5kID0gdHJ1ZTtcbiAgICBcbiAgICBCcmVhaztcbiAgfVxufSk7XG4gIFxuICBcblN0cmluZyB2YXJpYWJsZU5hbWVGcm9tVGVybU5vZGUoTm9kZSB0ZXJtTm9kZSkge1xuICBTdHJpbmcgdmFyaWFibGVOYW1lID0gbnVsbDtcbiAgXG4gIE5vZGUgdmFyaWFibGVOYW1lVGVybWluYWxOb2RlID0gbm9kZVF1ZXJ5KHRlcm1Ob2RlLCAvdGVybS92YXJpYWJsZS9AbmFtZSk7XG4gIFxuICBJZiAodmFyaWFibGVOYW1lVGVybWluYWxOb2RlICE9IG51bGwpIHtcbiAgICBTdHJpbmcgY29udGVudDtcbiAgICBcbiAgICB7IGNvbnRlbnQgfSA9IHZhcmlhYmxlTmFtZVRlcm1pbmFsTm9kZTtcbiAgICBcbiAgICB2YXJpYWJsZU5hbWUgPSBjb250ZW50O1xuICB9XG4gIFxuICBSZXR1cm4gdmFyaWFibGVOYW1lO1xufVxuXG5TdHJpbmcgYm91bmRWYXJpYWJsZU5hbWVGcm9tU3RhdGVtZW50Tm9kZShOb2RlIHN0YXRlbWVudE5vZGUpIHtcbiAgU3RyaW5nIGJvdW5kVmFyaWFibGVOYW1lID0gbnVsbDtcbiAgXG4gIE5vZGVzIGNoaWxkTm9kZXM7XG4gIFxuICB7IGNoaWxkTm9kZXMgfSA9IHN0YXRlbWVudE5vZGU7XG4gIFxuICBOb2RlIGZpcnN0Q2hpbGROb2RlO1xuXG4gIFsgZmlyc3RDaGlsZE5vZGUgXSA9IGNoaWxkTm9kZXM7XG4gIFxuICBCb29sZWFuIGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlID0gaXNUZXJtaW5hbE5vZGUoZmlyc3RDaGlsZE5vZGUpO1xuICBcbiAgSWYgKGZpcnN0Q2hpbGROb2RlVGVybWluYWxOb2RlKSB7XG4gICAgTm9kZSB0ZXJtaW5hbE5vZGUgPSBmaXJzdENoaWxkTm9kZTtcbiAgICBcbiAgICBTdHJpbmcgY29udGVudDtcbiAgICBcbiAgICB7IGNvbnRlbnQgfSA9IGZpcnN0Q2hpbGROb2RlO1xuICAgIFxuICAgIElmICgoY29udGVudCA9PSBcIuKIgFwiKSB8fCAoY29udGVudCA9PSBcIuKIg1wiKSkge1xuICAgICAgTm9kZSBzZWNvbmRDaGlsZE5vZGU7XG4gICAgICBcbiAgICAgIFsgXywgc2Vjb25kQ2hpbGROb2RlIF0gPSBjaGlsZE5vZGVzO1xuICAgICAgXG4gICAgICBOb2RlIGFyZ3VtZW50Tm9kZSA9IHNlY29uZENoaWxkTm9kZTtcbiAgICAgIFxuICAgICAgTm9kZSBib3VuZFZhcmlhYmxlTmFtZVRlcm1pbmFsTm9kZSA9IG5vZGVRdWVyeShhcmd1bWVudE5vZGUsIC9hcmd1bWVudC90ZXJtL3ZhcmlhYmxlL0BuYW1lKTtcbiAgICAgIFxuICAgICAgSWYgKGJvdW5kVmFyaWFibGVOYW1lVGVybWluYWxOb2RlICE9IG51bGwpIHtcbiAgICAgICAgeyBjb250ZW50IH0gPSBib3VuZFZhcmlhYmxlTmFtZVRlcm1pbmFsTm9kZTtcbiAgICAgICAgXG4gICAgICAgIGJvdW5kVmFyaWFibGVOYW1lID0gY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgICBcbiAgUmV0dXJuIGJvdW5kVmFyaWFibGVOYW1lO1xufVxuYDtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcImZ1cnRsZVwiXG4gIH07XG59XG4iXSwibmFtZXMiOlsiRnVydGxlVmlldyIsImZ1cnRsZVBhcnNlckZyb21CTkYiLCJwYXJzZXJzVXRpbGl0aWVzIiwiZnVydGxlTGV4ZXJGcm9tRW50cmllcyIsImxleGVyc1V0aWxpdGllcyIsImdldFRva2VucyIsImxleGljYWxFbnRyaWVzIiwiZ2V0TGV4aWNhbEVudHJpZXMiLCJlbnRyaWVzIiwiZnVydGxlTGV4ZXIiLCJsZXhlciIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwidG9rZW5zIiwidG9rZW5pc2UiLCJnZXRQYXJzZVRyZWUiLCJwYXJzZVRyZWUiLCJibmYiLCJnZXRCTkYiLCJmdXJ0bGVQYXJzZXIiLCJwYXJzZXIiLCJub2RlIiwicGFyc2UiLCJhc1BhcnNlVHJlZSIsIlZpZXciLCJMZXhlciIsIkZ1cnRsZUxleGVyIiwiUGFyc2VyIiwiRnVydGxlUGFyc2VyIiwicmVhZE9ubHkiLCJpbml0aWFsQ29udGVudCIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVNxQkE7OztxQkFQd0Q7MkRBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqQixJQUFNLEFBQUVDLHNCQUF3QkMsdUJBQWdCLENBQXhDRCxxQkFDRixBQUFFRSx5QkFBMkJDLHNCQUFlLENBQTFDRDtBQUVPLElBQUEsQUFBTUgsMkJBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO2VBQU4sa0JBQU1BOztrQkFBQUE7O1lBQ25CSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsaUJBQWlCLElBQUksQ0FBQ0MsaUJBQWlCLElBQ3ZDQyxVQUFVRixnQkFDVkcsY0FBY04sdUJBQXVCSyxVQUNyQ0UsUUFBUUQsYUFDUkUsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJDLFNBQVNILE1BQU1JLFFBQVEsQ0FBQ0g7Z0JBRTlCLE9BQU9FO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsYUFBYUYsTUFBTTtnQkFDakIsSUFBSUcsWUFBWTtnQkFFaEIsSUFBTUMsTUFBTSxJQUFJLENBQUNDLE1BQU0sSUFDakJDLGVBQWVsQixvQkFBb0JnQixNQUNuQ0csU0FBU0QsY0FDVEUsT0FBT0QsT0FBT0UsS0FBSyxDQUFDVDtnQkFFMUIsSUFBSVEsU0FBUyxNQUFNO29CQUNqQkwsWUFBWUssS0FBS0UsV0FBVyxDQUFDVjtnQkFDL0I7Z0JBRUEsT0FBT0c7WUFDVDs7O1dBekJtQmhCO0VBQW1Cd0IsYUFBSTtBQTJCMUMsaUJBM0JtQnhCLFlBMkJaeUIsU0FBUUMsa0JBQVc7QUFFMUIsaUJBN0JtQjFCLFlBNkJaMkIsVUFBU0MsbUJBQVk7QUFFNUIsaUJBL0JtQjVCLFlBK0JaNkIsWUFBVztBQUVsQixpQkFqQ21CN0IsWUFpQ1o4QixrQkFBa0I7QUE4RXpCLGlCQS9HbUI5QixZQStHWitCLHFCQUFvQjtJQUN6QkMsV0FBVztBQUNiIn0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3ZpZXcvZnVydGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBGdXJ0bGVMZXhlciwgRnVydGxlUGFyc2VyLCBsZXhlcnNVdGlsaXRpZXMsIHBhcnNlcnNVdGlsaXRpZXMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjsgIC8vL1xuXG5pbXBvcnQgVmlldyBmcm9tIFwiLi4vdmlld1wiO1xuXG5jb25zdCB7IGZ1cnRsZVBhcnNlckZyb21CTkYgfSA9IHBhcnNlcnNVdGlsaXRpZXMsXG4gICAgICB7IGZ1cnRsZUxleGVyRnJvbUVudHJpZXMgfSA9IGxleGVyc1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnVydGxlVmlldyBleHRlbmRzIFZpZXcge1xuICBnZXRUb2tlbnMoKSB7XG4gICAgY29uc3QgbGV4aWNhbEVudHJpZXMgPSB0aGlzLmdldExleGljYWxFbnRyaWVzKCksXG4gICAgICAgICAgZW50cmllcyA9IGxleGljYWxFbnRyaWVzLCAvLy8vXG4gICAgICAgICAgZnVydGxlTGV4ZXIgPSBmdXJ0bGVMZXhlckZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIGxleGVyID0gZnVydGxlTGV4ZXIsICAvLy9cbiAgICAgICAgICBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCksXG4gICAgICAgICAgdG9rZW5zID0gbGV4ZXIudG9rZW5pc2UoY29udGVudCk7XG5cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG5cbiAgZ2V0UGFyc2VUcmVlKHRva2Vucykge1xuICAgIGxldCBwYXJzZVRyZWUgPSBudWxsO1xuXG4gICAgY29uc3QgYm5mID0gdGhpcy5nZXRCTkYoKSxcbiAgICAgICAgICBmdXJ0bGVQYXJzZXIgPSBmdXJ0bGVQYXJzZXJGcm9tQk5GKGJuZiksXG4gICAgICAgICAgcGFyc2VyID0gZnVydGxlUGFyc2VyLCAvLy9cbiAgICAgICAgICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2Vucyk7XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcGFyc2VUcmVlID0gbm9kZS5hc1BhcnNlVHJlZSh0b2tlbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBzdGF0aWMgTGV4ZXIgPSBGdXJ0bGVMZXhlcjtcblxuICBzdGF0aWMgUGFyc2VyID0gRnVydGxlUGFyc2VyO1xuXG4gIHN0YXRpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIHN0YXRpYyBpbml0aWFsQ29udGVudCA9IGBCb29sZWFuIGlzQm91bmQoTm9kZSB0ZXJtTm9kZSwgTm9kZSBzdGF0ZW1lbnROb2RlKSB7XG4gIEJvb2xlYW4gYm91bmQgPSBmYWxzZTtcbiAgICBcbiAgU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG4gIFxuICBJZiAodmFyaWFibGVOYW1lICE9IG51bGwpIHtcbiAgICBOb2RlcyBzdGF0ZW1lbnROb2RlcyA9IG5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSwgLy9zdGF0ZW1lbnQpO1xuXG4gICAgRm9yRWFjaChzdGF0ZW1lbnROb2RlcywgKE5vZGUgc3RhdGVtZW50Tm9kZSkge1xuICAgICAgU3RyaW5nIGJvdW5kVmFyaWFibGVOYW1lID0gYm91bmRWYXJpYWJsZU5hbWVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTsgXG4gICAgICBcbiAgICAgIElmIChib3VuZFZhcmlhYmxlTmFtZSA9PSB2YXJpYWJsZU5hbWUpIHtcbiAgICAgICAgYm91bmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuICBSZXR1cm4gYm91bmQ7XG59XG4gIFxuU3RyaW5nIHZhcmlhYmxlTmFtZUZyb21UZXJtTm9kZShOb2RlIHRlcm1Ob2RlKSB7XG4gIFN0cmluZyB2YXJpYWJsZU5hbWUgPSBudWxsO1xuICBcbiAgTm9kZSB2YXJpYWJsZU5hbWVUZXJtaW5hbE5vZGUgPSBub2RlUXVlcnkodGVybU5vZGUsIC90ZXJtL3ZhcmlhYmxlL0BuYW1lKTtcbiAgXG4gIElmICh2YXJpYWJsZU5hbWVUZXJtaW5hbE5vZGUgIT0gbnVsbCkge1xuICAgIHsgU3RyaW5nIGNvbnRlbnQgfSA9IHZhcmlhYmxlTmFtZVRlcm1pbmFsTm9kZTtcbiAgICBcbiAgICB2YXJpYWJsZU5hbWUgPSBjb250ZW50O1xuICB9XG4gIFxuICBSZXR1cm4gdmFyaWFibGVOYW1lO1xufVxuXG5TdHJpbmcgYm91bmRWYXJpYWJsZU5hbWVGcm9tU3RhdGVtZW50Tm9kZShOb2RlIHN0YXRlbWVudE5vZGUpIHtcbiAgU3RyaW5nIGJvdW5kVmFyaWFibGVOYW1lID0gbnVsbDtcbiAgXG4gIHsgTm9kZXMgY2hpbGROb2RlcyB9ID0gc3RhdGVtZW50Tm9kZTtcbiAgXG4gIFsgTm9kZSBmaXJzdENoaWxkTm9kZSBdID0gY2hpbGROb2RlcztcbiAgXG4gIHsgU3RyaW5nIGNvbnRlbnQgfSA9IGZpcnN0Q2hpbGROb2RlO1xuICBcbiAgSWYgKChjb250ZW50ID09IFwi4oiAXCIpIHx8IChjb250ZW50ID09IFwi4oiDXCIpKSB7XG4gICAgWyBfLCBOb2RlIGFyZ3VtZW50Tm9kZSBdID0gY2hpbGROb2RlcztcbiAgICBcbiAgICBOb2RlIGJvdW5kVmFyaWFibGVOYW1lVGVybWluYWxOb2RlID0gbm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSwgL2FyZ3VtZW50L3Rlcm0vdmFyaWFibGUvQG5hbWUpO1xuICAgIFxuICAgIElmIChib3VuZFZhcmlhYmxlTmFtZVRlcm1pbmFsTm9kZSAhPSBudWxsKSB7XG4gICAgICB7IGNvbnRlbnQgfSA9IGJvdW5kVmFyaWFibGVOYW1lVGVybWluYWxOb2RlO1xuICAgICAgXG4gICAgICBib3VuZFZhcmlhYmxlTmFtZSA9IGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gICAgXG4gIFJldHVybiBib3VuZFZhcmlhYmxlTmFtZTtcbn1cbmA7XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xuICAgIGNsYXNzTmFtZTogXCJmdXJ0bGVcIlxuICB9O1xufVxuIl0sIm5hbWVzIjpbIkZ1cnRsZVZpZXciLCJmdXJ0bGVQYXJzZXJGcm9tQk5GIiwicGFyc2Vyc1V0aWxpdGllcyIsImZ1cnRsZUxleGVyRnJvbUVudHJpZXMiLCJsZXhlcnNVdGlsaXRpZXMiLCJnZXRUb2tlbnMiLCJsZXhpY2FsRW50cmllcyIsImdldExleGljYWxFbnRyaWVzIiwiZW50cmllcyIsImZ1cnRsZUxleGVyIiwibGV4ZXIiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsInRva2VucyIsInRva2VuaXNlIiwiZ2V0UGFyc2VUcmVlIiwicGFyc2VUcmVlIiwiYm5mIiwiZ2V0Qk5GIiwiZnVydGxlUGFyc2VyIiwicGFyc2VyIiwibm9kZSIsInBhcnNlIiwiYXNQYXJzZVRyZWUiLCJWaWV3IiwiTGV4ZXIiLCJGdXJ0bGVMZXhlciIsIlBhcnNlciIsIkZ1cnRsZVBhcnNlciIsInJlYWRPbmx5IiwiaW5pdGlhbENvbnRlbnQiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFTcUJBOzs7cUJBUHdEOzJEQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakIsSUFBTSxBQUFFQyxzQkFBd0JDLHVCQUFnQixDQUF4Q0QscUJBQ0YsQUFBRUUseUJBQTJCQyxzQkFBZSxDQUExQ0Q7QUFFTyxJQUFBLEFBQU1ILDJCQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtlQUFOLGtCQUFNQTs7a0JBQUFBOztZQUNuQkssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGlCQUFpQixJQUFJLENBQUNDLGlCQUFpQixJQUN2Q0MsVUFBVUYsZ0JBQ1ZHLGNBQWNOLHVCQUF1QkssVUFDckNFLFFBQVFELGFBQ1JFLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCQyxTQUFTSCxNQUFNSSxRQUFRLENBQUNIO2dCQUU5QixPQUFPRTtZQUNUOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWFGLE1BQU07Z0JBQ2pCLElBQUlHLFlBQVk7Z0JBRWhCLElBQU1DLE1BQU0sSUFBSSxDQUFDQyxNQUFNLElBQ2pCQyxlQUFlbEIsb0JBQW9CZ0IsTUFDbkNHLFNBQVNELGNBQ1RFLE9BQU9ELE9BQU9FLEtBQUssQ0FBQ1Q7Z0JBRTFCLElBQUlRLFNBQVMsTUFBTTtvQkFDakJMLFlBQVlLLEtBQUtFLFdBQVcsQ0FBQ1Y7Z0JBQy9CO2dCQUVBLE9BQU9HO1lBQ1Q7OztXQXpCbUJoQjtFQUFtQndCLGFBQUk7QUEyQjFDLGlCQTNCbUJ4QixZQTJCWnlCLFNBQVFDLGtCQUFXO0FBRTFCLGlCQTdCbUIxQixZQTZCWjJCLFVBQVNDLG1CQUFZO0FBRTVCLGlCQS9CbUI1QixZQStCWjZCLFlBQVc7QUFFbEIsaUJBakNtQjdCLFlBaUNaOEIsa0JBQWtCO0FBMkR6QixpQkE1Rm1COUIsWUE0RlorQixxQkFBb0I7SUFDekJDLFdBQVc7QUFDYiJ9
package/lib/furtle/bnf.js CHANGED
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var bnf = 'document ::= ( instruction | error )+ ;\n\n\n\ninstruction ::= functionDeclaration\n \n | pointersDeclaration\n\n | variablesDeclaration\n \n | variableAssignment \n \n | objectAssignment \n \n | arrayAssignment\n \n | conditionalBlock\n\n | forEachLoop \n \n | break \n\n ;\n\n\n\nfunctionDeclaration ::= [type] function ;\n\npointersDeclaration ::= [type]<NO_WHITESPACE>"*" [name] assignment? ( "," [name] assignment? )* ";" ;\n\nvariablesDeclaration ::= [type] [name] assignment? ( "," [name] assignment? )* ";" ;\n\nvariableAssignment ::= [name] assignment ";" ;\n\nobjectAssignment ::= "{" \n\n [name] ( "," [name] )* \n \n "}" "=" [name] ";" ;\n\narrayAssignment ::= "[" \n\n ( \n\n ( "_" ( "," "_" )* ( "," [name] )+ ) \n \n | \n \n ( [name] ( "," [name] )* ) \n \n ) \n \n "]" "=" [name] ";" ;\n\nconditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ; \n\nforEachLoop ::= "ForEach"<NO_WHITESPACE>"(" [name] "," anonymousFunction ")" ";" ;\n\n\n \nassignment ::= "=" ( functionCall | isTerminalNode | nodesQuery | nodeQuery | value ) ;\n \n \n \nblock ::= "{" ( variablesDeclaration |\n\n variableAssignment | \n \n objectAssignment | \n \n arrayAssignment |\n \n conditionalBlock |\n\n forEachLoop |\n \n break )* "}" ;\n\n\n\n\nfunctionCall ::= [name]<NO_WHITESPACE>"(" ( [name] ( "," [name] )* )? ")" ;\n\nfunction ::= [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" body ;\n\nanonymousFunction ::= "(" ( argument ( "," argument )* )? ")" body ;\n\n\n\nisTerminalNode ::= "isTerminalNode"<NO_WHITESPACE>"(" [name] ")" ;\n\nnodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" [name] "," expression ")" ;\n\nnodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" [name] "," expression ")" ;\n\n\n\n\ncondition ::= "(" condition ")" \n\n | condition ( "||" | "&&" ) condition \n\n | value ( ( "!=" | "==" ) value )? \n \n ;\n\n\n\nbody ::= "{" ( variablesDeclaration | \n \n variableAssignment | \n \n objectAssignment | \n \n arrayAssignment |\n \n conditionalBlock |\n\n forEachLoop |\n\n break )* return? "}" ;\n \n \n\nreturn ::= "Return" value ";" ; \n\nbreak ::= "Break" ";" ; \n\n\n\nvalue ::= [name] | [number] | [primitive] | [string-literal] ;\n\n\n\nargument ::= [type] [name] ;\n\n\n\nexpression ::= path spread? subExpression? ;\n\npath ::= "/" infiniteDescent? selectors ;\n\nsubExpression ::= path spread? subExpression?;\n\ninfiniteDescent ::= "/" ;\n\nselectors ::= selector ( "|" selector )* ;\n\nspread ::= unique\n\n | "[" \n \n ( \n \n ( startIndex "..." endIndex ) \n \n | \n \n ( startIndex "..." ) \n \n | \n \n ( "..." endIndex )\n \n | \n \n index \n \n ) \n \n "]" ;\n\nselector ::= ruleName | tokenType ;\n \nruleName ::= [name] | "*" ;\n \ntokenType ::= "@"<NO_WHITESPACE>( [name] | "*" ) ;\n \nstartIndex ::= [number] ;\n \nendIndex ::= [number] ;\n \nindex ::= [number] ;\n \nunique ::= "!" ;\n \n\n\nerror. ::= . ;';
11
+ var bnf = 'document ::= ( instruction | error )+ ;\n\n\n\ninstruction ::= functionDeclaration\n \n | variablesDeclaration\n \n | variableAssignment \n \n | objectAssignment \n \n | arrayAssignment\n \n | conditionalBlock\n\n | forEachLoop \n \n ;\n\n\n\nfunctionDeclaration ::= [type] function ;\n\nvariablesDeclaration ::= [type] [name] assignment? ( "," [name] assignment? )* ";" ;\n\nvariableAssignment ::= [name] assignment ";" ;\n\nobjectAssignment ::= "{" \n\n [type]? [name] ( "," [type]? [name] )* \n \n "}" "=" [name] ";" ;\n\narrayAssignment ::= "[" \n\n ( \n\n ( "_" ( "," "_" )* ( "," [type]? [name] )+ ) \n \n | \n \n ( [type]? [name] ( "," [type]? [name] )* ) \n \n ) \n \n "]" "=" [name] ";" ;\n\nconditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ; \n\nforEachLoop ::= "ForEach"<NO_WHITESPACE>"(" [name] "," anonymousFunction ")" ";" ;\n\n\n \nassignment ::= "=" ( functionCall | isTerminalNode | nodesQuery | nodeQuery | value ) ;\n \n \n \nblock ::= "{" ( variablesDeclaration |\n\n variableAssignment | \n \n objectAssignment | \n \n arrayAssignment |\n \n conditionalBlock |\n\n forEachLoop )* "}" ;\n\n\n\n\nfunctionCall ::= [name]<NO_WHITESPACE>"(" ( [name] ( "," [name] )* )? ")" ;\n\nfunction ::= [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" body ;\n\nanonymousFunction ::= "(" ( argument ( "," argument )* )? ")" body ;\n\n\n\nisTerminalNode ::= "isTerminalNode"<NO_WHITESPACE>"(" [name] ")" ;\n\nnodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" [name] "," expression ")" ;\n\nnodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" [name] "," expression ")" ;\n\n\n\n\ncondition ::= "(" condition ")" \n\n | condition ( "||" | "&&" ) condition \n\n | value ( ( "!=" | "==" ) value )? \n \n ;\n\n\n\nbody ::= "{" ( variablesDeclaration | \n \n variableAssignment | \n \n objectAssignment | \n \n arrayAssignment |\n \n conditionalBlock |\n\n forEachLoop )* return? "}" ;\n \n \n\nreturn ::= "Return" value ";" ; \n\n\n\nvalue ::= [name] | [number] | [primitive] | [string-literal] ;\n\n\n\nargument ::= [type] [name] ;\n\n\n\nexpression ::= path spread? subExpression? ;\n\npath ::= "/" infiniteDescent? selectors ;\n\nsubExpression ::= path spread? subExpression?;\n\ninfiniteDescent ::= "/" ;\n\nselectors ::= selector ( "|" selector )* ;\n\nspread ::= unique\n\n | "[" \n \n ( \n \n ( startIndex "..." endIndex ) \n \n | \n \n ( startIndex "..." ) \n \n | \n \n ( "..." endIndex )\n \n | \n \n index \n \n ) \n \n "]" ;\n\nselector ::= ruleName | tokenType ;\n \nruleName ::= [name] | "*" ;\n \ntokenType ::= "@"<NO_WHITESPACE>( [name] | "*" ) ;\n \nstartIndex ::= [number] ;\n \nendIndex ::= [number] ;\n \nindex ::= [number] ;\n \nunique ::= "!" ;\n \n\n\nerror. ::= . ;';
12
12
  var _default = bnf;
13
13
 
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgZG9jdW1lbnQgICAgICAgICAgICAgIDo6PSAgKCBpbnN0cnVjdGlvbiB8IGVycm9yICkrIDtcblxuXG5cbmluc3RydWN0aW9uICAgICAgICAgICA6Oj0gIGZ1bmN0aW9uRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgcG9pbnRlcnNEZWNsYXJhdGlvblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZXNEZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZUFzc2lnbm1lbnQgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIG9iamVjdEFzc2lnbm1lbnQgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIGFycmF5QXNzaWdubWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBjb25kaXRpb25hbEJsb2NrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIGZvckVhY2hMb29wIFxuICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIGJyZWFrIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5mdW5jdGlvbkRlY2xhcmF0aW9uICAgOjo9ICBbdHlwZV0gZnVuY3Rpb24gO1xuXG5wb2ludGVyc0RlY2xhcmF0aW9uICAgOjo9ICBbdHlwZV08Tk9fV0hJVEVTUEFDRT5cIipcIiBbbmFtZV0gYXNzaWdubWVudD8gKCBcIixcIiBbbmFtZV0gYXNzaWdubWVudD8gKSogXCI7XCIgO1xuXG52YXJpYWJsZXNEZWNsYXJhdGlvbiAgOjo9ICBbdHlwZV0gW25hbWVdIGFzc2lnbm1lbnQ/ICggXCIsXCIgW25hbWVdIGFzc2lnbm1lbnQ/ICkqIFwiO1wiIDtcblxudmFyaWFibGVBc3NpZ25tZW50ICAgIDo6PSAgW25hbWVdIGFzc2lnbm1lbnQgXCI7XCIgO1xuXG5vYmplY3RBc3NpZ25tZW50ICAgICAgOjo9ICBcIntcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdICggXCIsXCIgW25hbWVdICkqIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcIn1cIiBcIj1cIiBbbmFtZV0gXCI7XCIgO1xuXG5hcnJheUFzc2lnbm1lbnQgICAgICAgOjo9ICBcIltcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiX1wiICggXCIsXCIgXCJfXCIgKSogKCBcIixcIiBbbmFtZV0gKSsgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggW25hbWVdICggXCIsXCIgW25hbWVdICkqICkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcIl1cIiBcIj1cIiBbbmFtZV0gXCI7XCIgO1xuXG5jb25kaXRpb25hbEJsb2NrICAgICAgOjo9ICBcIklmXCIgXCIoXCIgY29uZGl0aW9uIFwiKVwiIGJsb2NrICggXCJFbHNlXCIgYmxvY2sgKT8gOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbmZvckVhY2hMb29wICAgICAgICAgICA6Oj0gIFwiRm9yRWFjaFwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgW25hbWVdIFwiLFwiIGFub255bW91c0Z1bmN0aW9uIFwiKVwiIFwiO1wiIDtcblxuXG4gICAgICAgICAgICAgXG5hc3NpZ25tZW50ICAgICAgICAgICAgOjo9ICBcIj1cIiAoIGZ1bmN0aW9uQ2FsbCB8IGlzVGVybWluYWxOb2RlIHwgbm9kZXNRdWVyeSB8IG5vZGVRdWVyeSB8IHZhbHVlICkgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYmxvY2sgICAgICAgICAgICAgICAgIDo6PSAgXCJ7XCIgKCB2YXJpYWJsZXNEZWNsYXJhdGlvbiB8XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQXNzaWdubWVudCB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RBc3NpZ25tZW50IHwgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5QXNzaWdubWVudCB8XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsQmxvY2sgfFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JFYWNoTG9vcCB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICkqIFwifVwiIDtcblxuXG5cblxuZnVuY3Rpb25DYWxsICAgICAgICAgIDo6PSAgW25hbWVdPE5PX1dISVRFU1BBQ0U+XCIoXCIgKCBbbmFtZV0gKCBcIixcIiBbbmFtZV0gKSogKT8gXCIpXCIgO1xuXG5mdW5jdGlvbiAgICAgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIGFyZ3VtZW50ICggXCIsXCIgYXJndW1lbnQgKSogKT8gXCIpXCIgYm9keSA7XG5cbmFub255bW91c0Z1bmN0aW9uICAgICA6Oj0gIFwiKFwiICggYXJndW1lbnQgKCBcIixcIiBhcmd1bWVudCApKiApPyBcIilcIiBib2R5IDtcblxuXG5cbmlzVGVybWluYWxOb2RlICAgICAgICA6Oj0gIFwiaXNUZXJtaW5hbE5vZGVcIjxOT19XSElURVNQQUNFPlwiKFwiIFtuYW1lXSBcIilcIiA7XG5cbm5vZGVzUXVlcnkgICAgICAgICAgICA6Oj0gIFwibm9kZXNRdWVyeVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgW25hbWVdIFwiLFwiIGV4cHJlc3Npb24gXCIpXCIgO1xuXG5ub2RlUXVlcnkgICAgICAgICAgICAgOjo9ICBcIm5vZGVRdWVyeVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgW25hbWVdIFwiLFwiIGV4cHJlc3Npb24gXCIpXCIgO1xuXG5cblxuXG5jb25kaXRpb24gICAgICAgICAgICAgOjo9ICBcIihcIiBjb25kaXRpb24gXCIpXCIgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbmRpdGlvbiAoIFwifHxcIiB8IFwiJiZcIiApIGNvbmRpdGlvbiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFsdWUgKCAoIFwiIT1cIiB8IFwiPT1cIiApIHZhbHVlICk/IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5ib2R5ICAgICAgICAgICAgICAgICAgOjo9ICBcIntcIiAoIHZhcmlhYmxlc0RlY2xhcmF0aW9uIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQXNzaWdubWVudCB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RBc3NpZ25tZW50IHwgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5QXNzaWdubWVudCB8XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsQmxvY2sgfFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JFYWNoTG9vcCB8XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICkqIHJldHVybj8gXCJ9XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxucmV0dXJuICAgICAgICAgICAgICAgIDo6PSAgXCJSZXR1cm5cIiB2YWx1ZSBcIjtcIiA7IFxuXG5icmVhayAgICAgICAgICAgICAgICAgOjo9ICBcIkJyZWFrXCIgXCI7XCIgOyBcblxuXG5cbnZhbHVlICAgICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSB8IFtudW1iZXJdIHwgW3ByaW1pdGl2ZV0gfCBbc3RyaW5nLWxpdGVyYWxdIDtcblxuXG5cbmFyZ3VtZW50ICAgICAgICAgICAgICA6Oj0gIFt0eXBlXSBbbmFtZV0gO1xuXG5cblxuZXhwcmVzc2lvbiAgICAgICAgICAgIDo6PSAgcGF0aCBzcHJlYWQ/IHN1YkV4cHJlc3Npb24/IDtcblxucGF0aCAgICAgICAgICAgICAgICAgIDo6PSAgXCIvXCIgaW5maW5pdGVEZXNjZW50PyBzZWxlY3RvcnMgO1xuXG5zdWJFeHByZXNzaW9uICAgICAgICAgOjo9ICBwYXRoIHNwcmVhZD8gc3ViRXhwcmVzc2lvbj87XG5cbmluZmluaXRlRGVzY2VudCAgICAgICA6Oj0gIFwiL1wiIDtcblxuc2VsZWN0b3JzICAgICAgICAgICAgIDo6PSAgc2VsZWN0b3IgKCBcInxcIiBzZWxlY3RvciApKiA7XG5cbnNwcmVhZCAgICAgICAgICAgICAgICA6Oj0gIHVuaXF1ZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBcIltcIiBcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YXJ0SW5kZXggXCIuLi5cIiBlbmRJbmRleCApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzdGFydEluZGV4IFwiLi4uXCIgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCIuLi5cIiBlbmRJbmRleCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICkgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgO1xuXG5zZWxlY3RvciAgICAgICAgICAgICAgOjo9ICBydWxlTmFtZSB8IHRva2VuVHlwZSA7XG4gICAgICAgICAgICAgICAgICAgXG5ydWxlTmFtZSAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gfCBcIipcIiA7XG4gICAgICAgICAgICAgICAgICAgXG50b2tlblR5cGUgICAgICAgICAgICAgOjo9ICBcIkBcIjxOT19XSElURVNQQUNFPiggW25hbWVdIHwgXCIqXCIgKSA7XG4gICAgICAgICAgICAgICAgICAgXG5zdGFydEluZGV4ICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG5lbmRJbmRleCAgICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG5pbmRleCAgICAgICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG51bmlxdWUgICAgICAgICAgICAgICAgOjo9ICBcIiFcIiA7XG4gICAgICAgICAgICAgICAgICAgXG5cblxuZXJyb3IuICAgICAgICAgICAgICAgIDo6PSAgLiA7YDtcblxuZXhwb3J0IGRlZmF1bHQgYm5mO1xuIl0sIm5hbWVzIjpbImJuZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ01BOzs7ZUFBQTs7O0FBOUxBLElBQU1BLE1BQU87SUE4TGIsV0FBZUEifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgZG9jdW1lbnQgICAgICAgICAgICAgIDo6PSAgKCBpbnN0cnVjdGlvbiB8IGVycm9yICkrIDtcblxuXG5cbmluc3RydWN0aW9uICAgICAgICAgICA6Oj0gIGZ1bmN0aW9uRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFyaWFibGVzRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFyaWFibGVBc3NpZ25tZW50IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBvYmplY3RBc3NpZ25tZW50IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBhcnJheUFzc2lnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29uZGl0aW9uYWxCbG9ja1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBmb3JFYWNoTG9vcCBcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5mdW5jdGlvbkRlY2xhcmF0aW9uICAgOjo9ICBbdHlwZV0gZnVuY3Rpb24gO1xuXG52YXJpYWJsZXNEZWNsYXJhdGlvbiAgOjo9ICBbdHlwZV0gW25hbWVdIGFzc2lnbm1lbnQ/ICggXCIsXCIgW25hbWVdIGFzc2lnbm1lbnQ/ICkqIFwiO1wiIDtcblxudmFyaWFibGVBc3NpZ25tZW50ICAgIDo6PSAgW25hbWVdIGFzc2lnbm1lbnQgXCI7XCIgO1xuXG5vYmplY3RBc3NpZ25tZW50ICAgICAgOjo9ICBcIntcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPyBbbmFtZV0gKCBcIixcIiBbdHlwZV0/IFtuYW1lXSApKiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ9XCIgXCI9XCIgW25hbWVdIFwiO1wiIDtcblxuYXJyYXlBc3NpZ25tZW50ICAgICAgIDo6PSAgXCJbXCIgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIl9cIiAoIFwiLFwiIFwiX1wiICkqICggXCIsXCIgW3R5cGVdPyBbbmFtZV0gKSsgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggW3R5cGVdPyBbbmFtZV0gKCBcIixcIiBbdHlwZV0/IFtuYW1lXSApKiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgXCI9XCIgW25hbWVdIFwiO1wiIDtcblxuY29uZGl0aW9uYWxCbG9jayAgICAgIDo6PSAgXCJJZlwiIFwiKFwiIGNvbmRpdGlvbiBcIilcIiBibG9jayAoIFwiRWxzZVwiIGJsb2NrICk/IDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5mb3JFYWNoTG9vcCAgICAgICAgICAgOjo9ICBcIkZvckVhY2hcIjxOT19XSElURVNQQUNFPlwiKFwiIFtuYW1lXSBcIixcIiBhbm9ueW1vdXNGdW5jdGlvbiBcIilcIiBcIjtcIiA7XG5cblxuICAgICAgICAgICAgIFxuYXNzaWdubWVudCAgICAgICAgICAgIDo6PSAgXCI9XCIgKCBmdW5jdGlvbkNhbGwgfCBpc1Rlcm1pbmFsTm9kZSB8IG5vZGVzUXVlcnkgfCBub2RlUXVlcnkgfCB2YWx1ZSApIDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJsb2NrICAgICAgICAgICAgICAgICA6Oj0gIFwie1wiICggdmFyaWFibGVzRGVjbGFyYXRpb24gfFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnQgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0QXNzaWdubWVudCB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUFzc2lnbm1lbnQgfFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEJsb2NrIHxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaExvb3AgKSogXCJ9XCIgO1xuXG5cblxuXG5mdW5jdGlvbkNhbGwgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIFtuYW1lXSAoIFwiLFwiIFtuYW1lXSApKiApPyBcIilcIiA7XG5cbmZ1bmN0aW9uICAgICAgICAgICAgICA6Oj0gIFtuYW1lXTxOT19XSElURVNQQUNFPlwiKFwiICggYXJndW1lbnQgKCBcIixcIiBhcmd1bWVudCApKiApPyBcIilcIiBib2R5IDtcblxuYW5vbnltb3VzRnVuY3Rpb24gICAgIDo6PSAgXCIoXCIgKCBhcmd1bWVudCAoIFwiLFwiIGFyZ3VtZW50ICkqICk/IFwiKVwiIGJvZHkgO1xuXG5cblxuaXNUZXJtaW5hbE5vZGUgICAgICAgIDo6PSAgXCJpc1Rlcm1pbmFsTm9kZVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgW25hbWVdIFwiKVwiIDtcblxubm9kZXNRdWVyeSAgICAgICAgICAgIDo6PSAgXCJub2Rlc1F1ZXJ5XCI8Tk9fV0hJVEVTUEFDRT5cIihcIiBbbmFtZV0gXCIsXCIgZXhwcmVzc2lvbiBcIilcIiA7XG5cbm5vZGVRdWVyeSAgICAgICAgICAgICA6Oj0gIFwibm9kZVF1ZXJ5XCI8Tk9fV0hJVEVTUEFDRT5cIihcIiBbbmFtZV0gXCIsXCIgZXhwcmVzc2lvbiBcIilcIiA7XG5cblxuXG5cbmNvbmRpdGlvbiAgICAgICAgICAgICA6Oj0gIFwiKFwiIGNvbmRpdGlvbiBcIilcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29uZGl0aW9uICggXCJ8fFwiIHwgXCImJlwiICkgY29uZGl0aW9uIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICB2YWx1ZSAoICggXCIhPVwiIHwgXCI9PVwiICkgdmFsdWUgKT8gXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbmJvZHkgICAgICAgICAgICAgICAgICA6Oj0gIFwie1wiICggdmFyaWFibGVzRGVjbGFyYXRpb24gfCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50IHwgXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdEFzc2lnbm1lbnQgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlBc3NpZ25tZW50IHxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxCbG9jayB8XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvckVhY2hMb29wICkqIHJldHVybj8gXCJ9XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxucmV0dXJuICAgICAgICAgICAgICAgIDo6PSAgXCJSZXR1cm5cIiB2YWx1ZSBcIjtcIiA7IFxuXG5cblxudmFsdWUgICAgICAgICAgICAgICAgIDo6PSAgW25hbWVdIHwgW251bWJlcl0gfCBbcHJpbWl0aXZlXSB8IFtzdHJpbmctbGl0ZXJhbF0gO1xuXG5cblxuYXJndW1lbnQgICAgICAgICAgICAgIDo6PSAgW3R5cGVdIFtuYW1lXSA7XG5cblxuXG5leHByZXNzaW9uICAgICAgICAgICAgOjo9ICBwYXRoIHNwcmVhZD8gc3ViRXhwcmVzc2lvbj8gO1xuXG5wYXRoICAgICAgICAgICAgICAgICAgOjo9ICBcIi9cIiBpbmZpbml0ZURlc2NlbnQ/IHNlbGVjdG9ycyA7XG5cbnN1YkV4cHJlc3Npb24gICAgICAgICA6Oj0gIHBhdGggc3ByZWFkPyBzdWJFeHByZXNzaW9uPztcblxuaW5maW5pdGVEZXNjZW50ICAgICAgIDo6PSAgXCIvXCIgO1xuXG5zZWxlY3RvcnMgICAgICAgICAgICAgOjo9ICBzZWxlY3RvciAoIFwifFwiIHNlbGVjdG9yICkqIDtcblxuc3ByZWFkICAgICAgICAgICAgICAgIDo6PSAgdW5pcXVlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIFwiW1wiIFxuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RhcnRJbmRleCBcIi4uLlwiIGVuZEluZGV4ICkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YXJ0SW5kZXggXCIuLi5cIiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIi4uLlwiIGVuZEluZGV4IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcIl1cIiA7XG5cbnNlbGVjdG9yICAgICAgICAgICAgICA6Oj0gIHJ1bGVOYW1lIHwgdG9rZW5UeXBlIDtcbiAgICAgICAgICAgICAgICAgICBcbnJ1bGVOYW1lICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSB8IFwiKlwiIDtcbiAgICAgICAgICAgICAgICAgICBcbnRva2VuVHlwZSAgICAgICAgICAgICA6Oj0gIFwiQFwiPE5PX1dISVRFU1BBQ0U+KCBbbmFtZV0gfCBcIipcIiApIDtcbiAgICAgICAgICAgICAgICAgICBcbnN0YXJ0SW5kZXggICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmVuZEluZGV4ICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmluZGV4ICAgICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbnVuaXF1ZSAgICAgICAgICAgICAgICA6Oj0gIFwiIVwiIDtcbiAgICAgICAgICAgICAgICAgICBcblxuXG5lcnJvci4gICAgICAgICAgICAgICAgOjo9ICAuIDtgO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFvTEE7OztlQUFBOzs7QUFsTEEsSUFBTUEsTUFBTztJQWtMYixXQUFlQSJ9
@@ -13,13 +13,13 @@ var entries = [
13
13
  "type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
14
14
  },
15
15
  {
16
- "keyword": "^(?:If|Else|Return|ForEach|Break)"
16
+ "keyword": "^(?:If|Else|Return|ForEach)"
17
17
  },
18
18
  {
19
19
  "primitive": "^(?:null|true|false)"
20
20
  },
21
21
  {
22
- "instruction": "^(?:nodeQuery|nodesQuery|isTerminalNode)"
22
+ "instruction": "^(?:nodeQuery|nodesQuery)"
23
23
  },
24
24
  {
25
25
  "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\{|\\}|\\.\\.\\.)"
@@ -36,4 +36,4 @@ var entries = [
36
36
  ];
37
37
  var _default = entries;
38
38
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmNvbnN0IGVudHJpZXMgPSBbXHJcbiAge1xyXG4gICAgXCJ0eXBlXCI6IFwiXig/OkJvb2xlYW58U3RyaW5nfE51bWJlcnxOb2Rlc3xOb2RlfFZvaWQpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwia2V5d29yZFwiOiBcIl4oPzpJZnxFbHNlfFJldHVybnxGb3JFYWNofEJyZWFrKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInByaW1pdGl2ZVwiOiBcIl4oPzpudWxsfHRydWV8ZmFsc2UpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiaW5zdHJ1Y3Rpb25cIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnl8aXNUZXJtaW5hbE5vZGUpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzohPXw9PXw9fDt8LHxffCYmfFxcXFx8XFxcXHx8QHwhfFxcXFwqfFxcXFx8fFxcXFwvfFxcXFwofFxcXFwpfFxcXFxbfFxcXFxdfFxcXFx7fFxcXFx9fFxcXFwuXFxcXC5cXFxcLilcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJuYW1lXCI6IFwiXlthLXpBLVpcXC1dK1wiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm51bWJlclwiOiBcIl5bMC05XStcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJ1bmFzc2lnbmVkXCI6IFwiXi5cIlxyXG4gIH1cclxuXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGVudHJpZXM7XHJcbiJdLCJuYW1lcyI6WyJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE2QkE7OztlQUFBOzs7QUEzQkEsSUFBTUEsVUFBVTtJQUNkO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLGFBQWE7SUFDZjtJQUNBO1FBQ0UsZUFBZTtJQUNqQjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxRQUFRO0lBQ1Y7SUFDQTtRQUNFLFVBQVU7SUFDWjtJQUNBO1FBQ0UsY0FBYztJQUNoQjtDQUNEO0lBRUQsV0FBZUEifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmNvbnN0IGVudHJpZXMgPSBbXHJcbiAge1xyXG4gICAgXCJ0eXBlXCI6IFwiXig/OkJvb2xlYW58U3RyaW5nfE51bWJlcnxOb2Rlc3xOb2RlfFZvaWQpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwia2V5d29yZFwiOiBcIl4oPzpJZnxFbHNlfFJldHVybnxGb3JFYWNoKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInByaW1pdGl2ZVwiOiBcIl4oPzpudWxsfHRydWV8ZmFsc2UpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiaW5zdHJ1Y3Rpb25cIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnkpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzohPXw9PXw9fDt8LHxffCYmfFxcXFx8XFxcXHx8QHwhfFxcXFwqfFxcXFx8fFxcXFwvfFxcXFwofFxcXFwpfFxcXFxbfFxcXFxdfFxcXFx7fFxcXFx9fFxcXFwuXFxcXC5cXFxcLilcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJuYW1lXCI6IFwiXlthLXpBLVpcXC1dK1wiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm51bWJlclwiOiBcIl5bMC05XStcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJ1bmFzc2lnbmVkXCI6IFwiXi5cIlxyXG4gIH1cclxuXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGVudHJpZXM7XHJcbiJdLCJuYW1lcyI6WyJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE2QkE7OztlQUFBOzs7QUEzQkEsSUFBTUEsVUFBVTtJQUNkO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLGFBQWE7SUFDZjtJQUNBO1FBQ0UsZUFBZTtJQUNqQjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxRQUFRO0lBQ1Y7SUFDQTtRQUNFLFVBQVU7SUFDWjtJQUNBO1FBQ0UsY0FBYztJQUNoQjtDQUNEO0lBRUQsV0FBZUEifQ==
@@ -15,6 +15,9 @@ _export(exports, {
15
15
  furtleParserFromBNF: function() {
16
16
  return furtleParserFromBNF;
17
17
  },
18
+ furtleParserFromBNFAndStartRuleName: function() {
19
+ return furtleParserFromBNFAndStartRuleName;
20
+ },
18
21
  furtleParserFromNothing: function() {
19
22
  return furtleParserFromNothing;
20
23
  }
@@ -27,7 +30,7 @@ function _interop_require_default(obj) {
27
30
  default: obj
28
31
  };
29
32
  }
30
- var rulesFromBNF = _occamparsers.parserUtilities.rulesFromBNF, parserFromRules = _occamparsers.parserUtilities.parserFromRules;
33
+ var rulesFromBNF = _occamparsers.parserUtilities.rulesFromBNF, parserFromRules = _occamparsers.parserUtilities.parserFromRules, parserFromRulesAndStartRuleName = _occamparsers.parserUtilities.parserFromRulesAndStartRuleName;
31
34
  function furtleParserFromBNF(bnf) {
32
35
  var rules;
33
36
  rules = rulesFromBNF(bnf);
@@ -43,9 +46,17 @@ function furtleParserFromNothing() {
43
46
  var furtleParser = parserFromRules(_parser.default, rules);
44
47
  return furtleParser;
45
48
  }
49
+ function furtleParserFromBNFAndStartRuleName(bnf, startRuleName) {
50
+ var rules;
51
+ rules = rulesFromBNF(bnf);
52
+ rules = (0, _occamgrammarutilities.eliminateLeftRecursion)(rules); ///
53
+ var furtleParser = parserFromRulesAndStartRuleName(_parser.default, rules, startRuleName);
54
+ return furtleParser;
55
+ }
46
56
  var _default = {
47
57
  furtleParserFromBNF: furtleParserFromBNF,
48
- furtleParserFromNothing: furtleParserFromNothing
58
+ furtleParserFromNothing: furtleParserFromNothing,
59
+ furtleParserFromBNFAndStartRuleName: furtleParserFromBNFAndStartRuleName
49
60
  };
50
61
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFyc2Vycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGFyc2VyVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcbmltcG9ydCB7IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24gfSBmcm9tIFwib2NjYW0tZ3JhbW1hci11dGlsaXRpZXNcIjtcblxuaW1wb3J0IEZ1cnRsZVBhcnNlciBmcm9tIFwiLi4vZnVydGxlL3BhcnNlclwiO1xuXG5jb25zdCB7IHJ1bGVzRnJvbUJORiwgcGFyc2VyRnJvbVJ1bGVzIH0gPSBwYXJzZXJVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVQYXJzZXJGcm9tQk5GKGJuZikge1xuICBsZXQgcnVsZXM7XG5cbiAgcnVsZXMgPSBydWxlc0Zyb21CTkYoYm5mKTtcblxuICBydWxlcyA9IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24ocnVsZXMpOyAgLy8vXG5cbiAgY29uc3QgZnVydGxlUGFyc2VyID0gcGFyc2VyRnJvbVJ1bGVzKEZ1cnRsZVBhcnNlciwgcnVsZXMpO1xuXG4gIHJldHVybiBmdXJ0bGVQYXJzZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVQYXJzZXJGcm9tTm90aGluZygpIHtcbiAgY29uc3QgeyBibmYgfSA9IEZ1cnRsZVBhcnNlcjtcblxuICBsZXQgcnVsZXM7XG5cbiAgcnVsZXMgPSBydWxlc0Zyb21CTkYoYm5mKTtcblxuICBydWxlcyA9IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24ocnVsZXMpOyAgLy8vXG5cbiAgY29uc3QgZnVydGxlUGFyc2VyID0gcGFyc2VyRnJvbVJ1bGVzKEZ1cnRsZVBhcnNlciwgcnVsZXMpO1xuXG4gIHJldHVybiBmdXJ0bGVQYXJzZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZnVydGxlUGFyc2VyRnJvbUJORixcbiAgZnVydGxlUGFyc2VyRnJvbU5vdGhpbmdcbn07XG4iXSwibmFtZXMiOlsiZnVydGxlUGFyc2VyRnJvbUJORiIsImZ1cnRsZVBhcnNlckZyb21Ob3RoaW5nIiwicnVsZXNGcm9tQk5GIiwicGFyc2VyVXRpbGl0aWVzIiwicGFyc2VyRnJvbVJ1bGVzIiwiYm5mIiwicnVsZXMiLCJlbGltaW5hdGVMZWZ0UmVjdXJzaW9uIiwiZnVydGxlUGFyc2VyIiwiRnVydGxlUGFyc2VyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFtQ0EsT0FHRTtlQUhGOztJQTFCZ0JBLG1CQUFtQjtlQUFuQkE7O0lBWUFDLHVCQUF1QjtlQUF2QkE7Ozs0QkFuQmdCO3FDQUNPOzZEQUVkOzs7Ozs7QUFFekIsSUFBUUMsZUFBa0NDLDZCQUFlLENBQWpERCxjQUFjRSxrQkFBb0JELDZCQUFlLENBQW5DQztBQUVmLFNBQVNKLG9CQUFvQkssR0FBRztJQUNyQyxJQUFJQztJQUVKQSxRQUFRSixhQUFhRztJQUVyQkMsUUFBUUMsSUFBQUEsNkNBQXNCLEVBQUNELFFBQVMsR0FBRztJQUUzQyxJQUFNRSxlQUFlSixnQkFBZ0JLLGVBQVksRUFBRUg7SUFFbkQsT0FBT0U7QUFDVDtBQUVPLFNBQVNQO0lBQ2QsSUFBTSxBQUFFSSxNQUFRSSxlQUFZLENBQXBCSjtJQUVSLElBQUlDO0lBRUpBLFFBQVFKLGFBQWFHO0lBRXJCQyxRQUFRQyxJQUFBQSw2Q0FBc0IsRUFBQ0QsUUFBUyxHQUFHO0lBRTNDLElBQU1FLGVBQWVKLGdCQUFnQkssZUFBWSxFQUFFSDtJQUVuRCxPQUFPRTtBQUNUO0lBRUEsV0FBZTtJQUNiUixxQkFBQUE7SUFDQUMseUJBQUFBO0FBQ0YifQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFyc2Vycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGFyc2VyVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcbmltcG9ydCB7IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24gfSBmcm9tIFwib2NjYW0tZ3JhbW1hci11dGlsaXRpZXNcIjtcblxuaW1wb3J0IEZ1cnRsZVBhcnNlciBmcm9tIFwiLi4vZnVydGxlL3BhcnNlclwiO1xuXG5jb25zdCB7IHJ1bGVzRnJvbUJORiwgcGFyc2VyRnJvbVJ1bGVzLCBwYXJzZXJGcm9tUnVsZXNBbmRTdGFydFJ1bGVOYW1lIH0gPSBwYXJzZXJVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVQYXJzZXJGcm9tQk5GKGJuZikge1xuICBsZXQgcnVsZXM7XG5cbiAgcnVsZXMgPSBydWxlc0Zyb21CTkYoYm5mKTtcblxuICBydWxlcyA9IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24ocnVsZXMpOyAgLy8vXG5cbiAgY29uc3QgZnVydGxlUGFyc2VyID0gcGFyc2VyRnJvbVJ1bGVzKEZ1cnRsZVBhcnNlciwgcnVsZXMpO1xuXG4gIHJldHVybiBmdXJ0bGVQYXJzZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVQYXJzZXJGcm9tTm90aGluZygpIHtcbiAgY29uc3QgeyBibmYgfSA9IEZ1cnRsZVBhcnNlcjtcblxuICBsZXQgcnVsZXM7XG5cbiAgcnVsZXMgPSBydWxlc0Zyb21CTkYoYm5mKTtcblxuICBydWxlcyA9IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24ocnVsZXMpOyAgLy8vXG5cbiAgY29uc3QgZnVydGxlUGFyc2VyID0gcGFyc2VyRnJvbVJ1bGVzKEZ1cnRsZVBhcnNlciwgcnVsZXMpO1xuXG4gIHJldHVybiBmdXJ0bGVQYXJzZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVQYXJzZXJGcm9tQk5GQW5kU3RhcnRSdWxlTmFtZShibmYsIHN0YXJ0UnVsZU5hbWUpIHtcbiAgbGV0IHJ1bGVzO1xuXG4gIHJ1bGVzID0gcnVsZXNGcm9tQk5GKGJuZik7XG5cbiAgcnVsZXMgPSBlbGltaW5hdGVMZWZ0UmVjdXJzaW9uKHJ1bGVzKTsgIC8vL1xuXG4gIGNvbnN0IGZ1cnRsZVBhcnNlciA9IHBhcnNlckZyb21SdWxlc0FuZFN0YXJ0UnVsZU5hbWUoRnVydGxlUGFyc2VyLCBydWxlcywgc3RhcnRSdWxlTmFtZSk7XG5cbiAgcmV0dXJuIGZ1cnRsZVBhcnNlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmdXJ0bGVQYXJzZXJGcm9tQk5GLFxuICBmdXJ0bGVQYXJzZXJGcm9tTm90aGluZyxcbiAgZnVydGxlUGFyc2VyRnJvbUJORkFuZFN0YXJ0UnVsZU5hbWVcbn07XG4iXSwibmFtZXMiOlsiZnVydGxlUGFyc2VyRnJvbUJORiIsImZ1cnRsZVBhcnNlckZyb21CTkZBbmRTdGFydFJ1bGVOYW1lIiwiZnVydGxlUGFyc2VyRnJvbU5vdGhpbmciLCJydWxlc0Zyb21CTkYiLCJwYXJzZXJVdGlsaXRpZXMiLCJwYXJzZXJGcm9tUnVsZXMiLCJwYXJzZXJGcm9tUnVsZXNBbmRTdGFydFJ1bGVOYW1lIiwiYm5mIiwicnVsZXMiLCJlbGltaW5hdGVMZWZ0UmVjdXJzaW9uIiwiZnVydGxlUGFyc2VyIiwiRnVydGxlUGFyc2VyIiwic3RhcnRSdWxlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBK0NBLE9BSUU7ZUFKRjs7SUF0Q2dCQSxtQkFBbUI7ZUFBbkJBOztJQTBCQUMsbUNBQW1DO2VBQW5DQTs7SUFkQUMsdUJBQXVCO2VBQXZCQTs7OzRCQW5CZ0I7cUNBQ087NkRBRWQ7Ozs7OztBQUV6QixJQUFRQyxlQUFtRUMsNkJBQWUsQ0FBbEZELGNBQWNFLGtCQUFxREQsNkJBQWUsQ0FBcEVDLGlCQUFpQkMsa0NBQW9DRiw2QkFBZSxDQUFuREU7QUFFaEMsU0FBU04sb0JBQW9CTyxHQUFHO0lBQ3JDLElBQUlDO0lBRUpBLFFBQVFMLGFBQWFJO0lBRXJCQyxRQUFRQyxJQUFBQSw2Q0FBc0IsRUFBQ0QsUUFBUyxHQUFHO0lBRTNDLElBQU1FLGVBQWVMLGdCQUFnQk0sZUFBWSxFQUFFSDtJQUVuRCxPQUFPRTtBQUNUO0FBRU8sU0FBU1I7SUFDZCxJQUFNLEFBQUVLLE1BQVFJLGVBQVksQ0FBcEJKO0lBRVIsSUFBSUM7SUFFSkEsUUFBUUwsYUFBYUk7SUFFckJDLFFBQVFDLElBQUFBLDZDQUFzQixFQUFDRCxRQUFTLEdBQUc7SUFFM0MsSUFBTUUsZUFBZUwsZ0JBQWdCTSxlQUFZLEVBQUVIO0lBRW5ELE9BQU9FO0FBQ1Q7QUFFTyxTQUFTVCxvQ0FBb0NNLEdBQUcsRUFBRUssYUFBYTtJQUNwRSxJQUFJSjtJQUVKQSxRQUFRTCxhQUFhSTtJQUVyQkMsUUFBUUMsSUFBQUEsNkNBQXNCLEVBQUNELFFBQVMsR0FBRztJQUUzQyxJQUFNRSxlQUFlSixnQ0FBZ0NLLGVBQVksRUFBRUgsT0FBT0k7SUFFMUUsT0FBT0Y7QUFDVDtJQUVBLFdBQWU7SUFDYlYscUJBQUFBO0lBQ0FFLHlCQUFBQTtJQUNBRCxxQ0FBQUE7QUFDRiJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-grammars",
3
3
  "author": "James Smith",
4
- "version": "1.2.5",
4
+ "version": "1.3.3",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-grammars",
7
7
  "description": "Occam's grammars.",
@@ -40,26 +40,25 @@ export default class FurtleView extends View {
40
40
 
41
41
  static readOnly = false;
42
42
 
43
- static initialContent = `Node* termNode, statementNode; Boolean* bound = false;
43
+ static initialContent = `Boolean isBound(Node termNode, Node statementNode) {
44
+ Boolean bound = false;
45
+
46
+ String variableName = variableNameFromTermNode(termNode);
44
47
 
45
- String variableName = variableNameFromTermNode(termNode);
46
-
47
- If (variableName == null) {
48
- Break;
49
- }
48
+ If (variableName != null) {
49
+ Nodes statementNodes = nodesQuery(statementNode, //statement);
50
50
 
51
- Nodes statementNodes = nodesQuery(statementNode, //statement);
52
-
53
- ForEach(statementNodes, (Node statementNode) {
54
- String boundVariableName = boundVariableNameFromStatementNode(statementNode);
55
-
56
- If (boundVariableName == variableName) {
57
- bound = true;
58
-
59
- Break;
51
+ ForEach(statementNodes, (Node statementNode) {
52
+ String boundVariableName = boundVariableNameFromStatementNode(statementNode);
53
+
54
+ If (boundVariableName == variableName) {
55
+ bound = true;
56
+ }
57
+ });
60
58
  }
61
- });
62
59
 
60
+ Return bound;
61
+ }
63
62
 
64
63
  String variableNameFromTermNode(Node termNode) {
65
64
  String variableName = null;
@@ -67,9 +66,7 @@ String variableNameFromTermNode(Node termNode) {
67
66
  Node variableNameTerminalNode = nodeQuery(termNode, /term/variable/@name);
68
67
 
69
68
  If (variableNameTerminalNode != null) {
70
- String content;
71
-
72
- { content } = variableNameTerminalNode;
69
+ { String content } = variableNameTerminalNode;
73
70
 
74
71
  variableName = content;
75
72
  }
@@ -80,37 +77,21 @@ String variableNameFromTermNode(Node termNode) {
80
77
  String boundVariableNameFromStatementNode(Node statementNode) {
81
78
  String boundVariableName = null;
82
79
 
83
- Nodes childNodes;
84
-
85
- { childNodes } = statementNode;
80
+ { Nodes childNodes } = statementNode;
86
81
 
87
- Node firstChildNode;
88
-
89
- [ firstChildNode ] = childNodes;
82
+ [ Node firstChildNode ] = childNodes;
90
83
 
91
- Boolean firstChildNodeTerminalNode = isTerminalNode(firstChildNode);
84
+ { String content } = firstChildNode;
92
85
 
93
- If (firstChildNodeTerminalNode) {
94
- Node terminalNode = firstChildNode;
95
-
96
- String content;
86
+ If ((content == "∀") || (content == "∃")) {
87
+ [ _, Node argumentNode ] = childNodes;
97
88
 
98
- { content } = firstChildNode;
89
+ Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable/@name);
99
90
 
100
- If ((content == "∀") || (content == "∃")) {
101
- Node secondChildNode;
91
+ If (boundVariableNameTerminalNode != null) {
92
+ { content } = boundVariableNameTerminalNode;
102
93
 
103
- [ _, secondChildNode ] = childNodes;
104
-
105
- Node argumentNode = secondChildNode;
106
-
107
- Node boundVariableNameTerminalNode = nodeQuery(argumentNode, /argument/term/variable/@name);
108
-
109
- If (boundVariableNameTerminalNode != null) {
110
- { content } = boundVariableNameTerminalNode;
111
-
112
- boundVariableName = content;
113
- }
94
+ boundVariableName = content;
114
95
  }
115
96
  }
116
97
 
package/src/furtle/bnf.js CHANGED
@@ -6,8 +6,6 @@ const bnf = `document ::= ( instruction | error )+ ;
6
6
 
7
7
  instruction ::= functionDeclaration
8
8
 
9
- | pointersDeclaration
10
-
11
9
  | variablesDeclaration
12
10
 
13
11
  | variableAssignment
@@ -20,23 +18,19 @@ instruction ::= functionDeclaration
20
18
 
21
19
  | forEachLoop
22
20
 
23
- | break
24
-
25
21
  ;
26
22
 
27
23
 
28
24
 
29
25
  functionDeclaration ::= [type] function ;
30
26
 
31
- pointersDeclaration ::= [type]<NO_WHITESPACE>"*" [name] assignment? ( "," [name] assignment? )* ";" ;
32
-
33
27
  variablesDeclaration ::= [type] [name] assignment? ( "," [name] assignment? )* ";" ;
34
28
 
35
29
  variableAssignment ::= [name] assignment ";" ;
36
30
 
37
31
  objectAssignment ::= "{"
38
32
 
39
- [name] ( "," [name] )*
33
+ [type]? [name] ( "," [type]? [name] )*
40
34
 
41
35
  "}" "=" [name] ";" ;
42
36
 
@@ -44,11 +38,11 @@ arrayAssignment ::= "["
44
38
 
45
39
  (
46
40
 
47
- ( "_" ( "," "_" )* ( "," [name] )+ )
41
+ ( "_" ( "," "_" )* ( "," [type]? [name] )+ )
48
42
 
49
43
  |
50
44
 
51
- ( [name] ( "," [name] )* )
45
+ ( [type]? [name] ( "," [type]? [name] )* )
52
46
 
53
47
  )
54
48
 
@@ -74,9 +68,7 @@ block ::= "{" ( variablesDeclaration |
74
68
 
75
69
  conditionalBlock |
76
70
 
77
- forEachLoop |
78
-
79
- break )* "}" ;
71
+ forEachLoop )* "}" ;
80
72
 
81
73
 
82
74
 
@@ -118,16 +110,12 @@ body ::= "{" ( variablesDeclaration |
118
110
 
119
111
  conditionalBlock |
120
112
 
121
- forEachLoop |
122
-
123
- break )* return? "}" ;
113
+ forEachLoop )* return? "}" ;
124
114
 
125
115
 
126
116
 
127
117
  return ::= "Return" value ";" ;
128
118
 
129
- break ::= "Break" ";" ;
130
-
131
119
 
132
120
 
133
121
  value ::= [name] | [number] | [primitive] | [string-literal] ;
@@ -5,13 +5,13 @@ const entries = [
5
5
  "type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
6
6
  },
7
7
  {
8
- "keyword": "^(?:If|Else|Return|ForEach|Break)"
8
+ "keyword": "^(?:If|Else|Return|ForEach)"
9
9
  },
10
10
  {
11
11
  "primitive": "^(?:null|true|false)"
12
12
  },
13
13
  {
14
- "instruction": "^(?:nodeQuery|nodesQuery|isTerminalNode)"
14
+ "instruction": "^(?:nodeQuery|nodesQuery)"
15
15
  },
16
16
  {
17
17
  "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\{|\\}|\\.\\.\\.)"
@@ -5,7 +5,7 @@ import { eliminateLeftRecursion } from "occam-grammar-utilities";
5
5
 
6
6
  import FurtleParser from "../furtle/parser";
7
7
 
8
- const { rulesFromBNF, parserFromRules } = parserUtilities;
8
+ const { rulesFromBNF, parserFromRules, parserFromRulesAndStartRuleName } = parserUtilities;
9
9
 
10
10
  export function furtleParserFromBNF(bnf) {
11
11
  let rules;
@@ -33,7 +33,20 @@ export function furtleParserFromNothing() {
33
33
  return furtleParser;
34
34
  }
35
35
 
36
+ export function furtleParserFromBNFAndStartRuleName(bnf, startRuleName) {
37
+ let rules;
38
+
39
+ rules = rulesFromBNF(bnf);
40
+
41
+ rules = eliminateLeftRecursion(rules); ///
42
+
43
+ const furtleParser = parserFromRulesAndStartRuleName(FurtleParser, rules, startRuleName);
44
+
45
+ return furtleParser;
46
+ }
47
+
36
48
  export default {
37
49
  furtleParserFromBNF,
38
- furtleParserFromNothing
50
+ furtleParserFromNothing,
51
+ furtleParserFromBNFAndStartRuleName
39
52
  };