occam-grammars 1.3.5 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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 | 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] variable assignment? ( "," variable assignment? )* ";" ;\n\nvariableAssignment ::= variable assignment ";" ;\n\nobjectAssignment ::= "{" \n\n [type]? variable ( "," [type]? variable )* \n \n "}" "=" variable ";" ;\n\narrayAssignment ::= "[" \n\n ( \n\n ( "_" ( "," "_" )* ( "," [type]? variable )+ ) \n \n | \n \n ( [type]? variable ( "," [type]? variable )* ) \n \n ) \n \n "]" "=" variable ";" ;\n\nconditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ; \n\nforEachLoop ::= "ForEach"<NO_WHITESPACE>"(" [name] "," anonymousFunction ")" ";" ;\n\n\n \nassignment ::= "=" ( functionCall | 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>"(" ( value ( "," value )* )? ")" ;\n\nfunction ::= [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" body ;\n\nanonymousFunction ::= "(" ( argument ( "," argument )* )? ")" body ;\n\n\n\nnodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;\n\nnodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," 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 ::= variable | [number] | [primitive] | [string-literal] ;\n\n\n\nargument ::= [type] variable ;\n\n\n\nvariable ::= [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 ::= ( topLevelDeclaration | error )+ ;\n\n\n\ntopLevelDeclaration ::= functionDeclaration\n \n | variablesDeclaration\n \n ;\n\n\n\nerror. ::= . ;\n\n\n\ninstruction ::= variablesDeclaration\n \n | variableAssignment \n \n | objectAssignment \n \n | arrayAssignment\n \n ;\n\n\n\nfunctionDeclaration ::= [type] [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" returnBlock ;\n\nvariablesDeclaration ::= [type] variable assignment? ( "," variable assignment? )* ";" ;\n\nvariableAssignment ::= variable assignment ";" ;\n\nobjectAssignment ::= "{" \n\n [type]? variable ( "," [type]? variable )* \n \n "}" "=" variable ";" ;\n\narrayAssignment ::= "[" \n\n ( \n\n ( "_" ( "," "_" )* ( "," [type]? variable )+ ) \n \n | \n \n ( [type]? variable ( "," [type]? variable )* ) \n \n ) \n \n "]" "=" variable ";" ;\n \n \n\nanonymousFunction ::= "(" ( argument ( "," argument )* )? ")" returnBlock ;\n\nconditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ; \n\nforEachLoop ::= "ForEach"<NO_WHITESPACE>"(" variable "," anonymousFunction ")" ";" ;\n\ncondition ::= "(" condition ")" \n\n | condition ( "||" | "&&" ) condition \n\n | value ( ( "!=" | "==" ) value )? \n \n ;\n \n\n\nreturnBlock.. ::= "{" ( conditionalBlock | forEachLoop | instruction | nonsense )* return? "}" ;\n \nblock.. ::= "{" ( conditionalBlock | forEachLoop | instruction | nonsense )* "}" ;\n\n\n\nnonsense. ::= [type] | [keyword] | [primitive] | [instruction] | [special] | [name] | [number] | [unassigned] ;\n \n\n \nreturn ::= [return] value ";" ; \n\nvalue ::= variable | [number] | [primitive] | [string-literal] ;\n\nargument ::= [type] variable ;\n\nvariable ::= [name] ;\n\nassignment ::= "=" ( functionCall | nodesQuery | nodeQuery | value ) ;\n\n\n\nfunctionCall ::= [name]<NO_WHITESPACE>"(" ( value ( "," value )* )? ")" ;\n\nnodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;\n\nnodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;\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 ::= "!" ;';
12
12
  var _default = bnf;
13
13
 
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgZG9jdW1lbnQgICAgICAgICAgICAgIDo6PSAgKCBpbnN0cnVjdGlvbiB8IGVycm9yICkrIDtcblxuXG5cbmluc3RydWN0aW9uICAgICAgICAgICA6Oj0gIGZ1bmN0aW9uRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFyaWFibGVzRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFyaWFibGVBc3NpZ25tZW50IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBvYmplY3RBc3NpZ25tZW50IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBhcnJheUFzc2lnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29uZGl0aW9uYWxCbG9ja1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBmb3JFYWNoTG9vcCBcbiAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5mdW5jdGlvbkRlY2xhcmF0aW9uICAgOjo9ICBbdHlwZV0gZnVuY3Rpb24gO1xuXG52YXJpYWJsZXNEZWNsYXJhdGlvbiAgOjo9ICBbdHlwZV0gdmFyaWFibGUgYXNzaWdubWVudD8gKCBcIixcIiB2YXJpYWJsZSBhc3NpZ25tZW50PyApKiBcIjtcIiA7XG5cbnZhcmlhYmxlQXNzaWdubWVudCAgICA6Oj0gIHZhcmlhYmxlIGFzc2lnbm1lbnQgXCI7XCIgO1xuXG5vYmplY3RBc3NpZ25tZW50ICAgICAgOjo9ICBcIntcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPyB2YXJpYWJsZSAoIFwiLFwiIFt0eXBlXT8gdmFyaWFibGUgKSogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwifVwiIFwiPVwiIHZhcmlhYmxlIFwiO1wiIDtcblxuYXJyYXlBc3NpZ25tZW50ICAgICAgIDo6PSAgXCJbXCIgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIl9cIiAoIFwiLFwiIFwiX1wiICkqICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKyApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbdHlwZV0/IHZhcmlhYmxlICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgXCI9XCIgdmFyaWFibGUgXCI7XCIgO1xuXG5jb25kaXRpb25hbEJsb2NrICAgICAgOjo9ICBcIklmXCIgXCIoXCIgY29uZGl0aW9uIFwiKVwiIGJsb2NrICggXCJFbHNlXCIgYmxvY2sgKT8gOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbmZvckVhY2hMb29wICAgICAgICAgICA6Oj0gIFwiRm9yRWFjaFwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgW25hbWVdIFwiLFwiIGFub255bW91c0Z1bmN0aW9uIFwiKVwiIFwiO1wiIDtcblxuXG4gICAgICAgICAgICAgXG5hc3NpZ25tZW50ICAgICAgICAgICAgOjo9ICBcIj1cIiAoIGZ1bmN0aW9uQ2FsbCB8IG5vZGVzUXVlcnkgfCBub2RlUXVlcnkgfCB2YWx1ZSApIDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJsb2NrICAgICAgICAgICAgICAgICA6Oj0gIFwie1wiICggdmFyaWFibGVzRGVjbGFyYXRpb24gfFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnQgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0QXNzaWdubWVudCB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUFzc2lnbm1lbnQgfFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEJsb2NrIHxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaExvb3AgKSogXCJ9XCIgO1xuXG5cblxuXG5mdW5jdGlvbkNhbGwgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIHZhbHVlICggXCIsXCIgdmFsdWUgKSogKT8gXCIpXCIgO1xuXG5mdW5jdGlvbiAgICAgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIGFyZ3VtZW50ICggXCIsXCIgYXJndW1lbnQgKSogKT8gXCIpXCIgYm9keSA7XG5cbmFub255bW91c0Z1bmN0aW9uICAgICA6Oj0gIFwiKFwiICggYXJndW1lbnQgKCBcIixcIiBhcmd1bWVudCApKiApPyBcIilcIiBib2R5IDtcblxuXG5cbm5vZGVzUXVlcnkgICAgICAgICAgICA6Oj0gIFwibm9kZXNRdWVyeVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgdmFyaWFibGUgXCIsXCIgZXhwcmVzc2lvbiBcIilcIiA7XG5cbm5vZGVRdWVyeSAgICAgICAgICAgICA6Oj0gIFwibm9kZVF1ZXJ5XCI8Tk9fV0hJVEVTUEFDRT5cIihcIiB2YXJpYWJsZSBcIixcIiBleHByZXNzaW9uIFwiKVwiIDtcblxuXG5cblxuY29uZGl0aW9uICAgICAgICAgICAgIDo6PSAgXCIoXCIgY29uZGl0aW9uIFwiKVwiIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBjb25kaXRpb24gKCBcInx8XCIgfCBcIiYmXCIgKSBjb25kaXRpb24gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZhbHVlICggKCBcIiE9XCIgfCBcIj09XCIgKSB2YWx1ZSApPyBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cblxuYm9keSAgICAgICAgICAgICAgICAgIDo6PSAgXCJ7XCIgKCB2YXJpYWJsZXNEZWNsYXJhdGlvbiB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFzc2lnbm1lbnQgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0QXNzaWdubWVudCB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUFzc2lnbm1lbnQgfFxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25hbEJsb2NrIHxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaExvb3AgKSogcmV0dXJuPyBcIn1cIiA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5yZXR1cm4gICAgICAgICAgICAgICAgOjo9ICBcIlJldHVyblwiIHZhbHVlIFwiO1wiIDsgXG5cblxuXG52YWx1ZSAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZSB8IFtudW1iZXJdIHwgW3ByaW1pdGl2ZV0gfCBbc3RyaW5nLWxpdGVyYWxdIDtcblxuXG5cbmFyZ3VtZW50ICAgICAgICAgICAgICA6Oj0gIFt0eXBlXSB2YXJpYWJsZSA7XG5cblxuXG52YXJpYWJsZSAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gO1xuXG5cblxuZXhwcmVzc2lvbiAgICAgICAgICAgIDo6PSAgcGF0aCBzcHJlYWQ/IHN1YkV4cHJlc3Npb24/IDtcblxucGF0aCAgICAgICAgICAgICAgICAgIDo6PSAgXCIvXCIgaW5maW5pdGVEZXNjZW50PyBzZWxlY3RvcnMgO1xuXG5zdWJFeHByZXNzaW9uICAgICAgICAgOjo9ICBwYXRoIHNwcmVhZD8gc3ViRXhwcmVzc2lvbj87XG5cbmluZmluaXRlRGVzY2VudCAgICAgICA6Oj0gIFwiL1wiIDtcblxuc2VsZWN0b3JzICAgICAgICAgICAgIDo6PSAgc2VsZWN0b3IgKCBcInxcIiBzZWxlY3RvciApKiA7XG5cbnNwcmVhZCAgICAgICAgICAgICAgICA6Oj0gIHVuaXF1ZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBcIltcIiBcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YXJ0SW5kZXggXCIuLi5cIiBlbmRJbmRleCApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzdGFydEluZGV4IFwiLi4uXCIgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCIuLi5cIiBlbmRJbmRleCApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICkgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgO1xuXG5zZWxlY3RvciAgICAgICAgICAgICAgOjo9ICBydWxlTmFtZSB8IHRva2VuVHlwZSA7XG4gICAgICAgICAgICAgICAgICAgXG5ydWxlTmFtZSAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gfCBcIipcIiA7XG4gICAgICAgICAgICAgICAgICAgXG50b2tlblR5cGUgICAgICAgICAgICAgOjo9ICBcIkBcIjxOT19XSElURVNQQUNFPiggW25hbWVdIHwgXCIqXCIgKSA7XG4gICAgICAgICAgICAgICAgICAgXG5zdGFydEluZGV4ICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG5lbmRJbmRleCAgICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG5pbmRleCAgICAgICAgICAgICAgICAgOjo9ICBbbnVtYmVyXSA7XG4gICAgICAgICAgICAgICAgICAgXG51bmlxdWUgICAgICAgICAgICAgICAgOjo9ICBcIiFcIiA7XG4gICAgICAgICAgICAgICAgICAgXG5cblxuZXJyb3IuICAgICAgICAgICAgICAgIDo6PSAgLiA7YDtcblxuZXhwb3J0IGRlZmF1bHQgYm5mO1xuIl0sIm5hbWVzIjpbImJuZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0xBOzs7ZUFBQTs7O0FBcExBLElBQU1BLE1BQU87SUFvTGIsV0FBZUEifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgZG9jdW1lbnQgICAgICAgICAgICAgIDo6PSAgKCB0b3BMZXZlbERlY2xhcmF0aW9uIHwgZXJyb3IgKSsgO1xuXG5cblxudG9wTGV2ZWxEZWNsYXJhdGlvbiAgIDo6PSAgZnVuY3Rpb25EZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZXNEZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5lcnJvci4gICAgICAgICAgICAgICAgOjo9ICAuIDtcblxuXG5cbmluc3RydWN0aW9uICAgICAgICAgICA6Oj0gIHZhcmlhYmxlc0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZhcmlhYmxlQXNzaWdubWVudCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgb2JqZWN0QXNzaWdubWVudCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgYXJyYXlBc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbmZ1bmN0aW9uRGVjbGFyYXRpb24gICA6Oj0gIFt0eXBlXSBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIGFyZ3VtZW50ICggXCIsXCIgYXJndW1lbnQgKSogKT8gXCIpXCIgcmV0dXJuQmxvY2sgO1xuXG52YXJpYWJsZXNEZWNsYXJhdGlvbiAgOjo9ICBbdHlwZV0gdmFyaWFibGUgYXNzaWdubWVudD8gKCBcIixcIiB2YXJpYWJsZSBhc3NpZ25tZW50PyApKiBcIjtcIiA7XG5cbnZhcmlhYmxlQXNzaWdubWVudCAgICA6Oj0gIHZhcmlhYmxlIGFzc2lnbm1lbnQgXCI7XCIgO1xuXG5vYmplY3RBc3NpZ25tZW50ICAgICAgOjo9ICBcIntcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPyB2YXJpYWJsZSAoIFwiLFwiIFt0eXBlXT8gdmFyaWFibGUgKSogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwifVwiIFwiPVwiIHZhcmlhYmxlIFwiO1wiIDtcblxuYXJyYXlBc3NpZ25tZW50ICAgICAgIDo6PSAgXCJbXCIgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIl9cIiAoIFwiLFwiIFwiX1wiICkqICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKyApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbdHlwZV0/IHZhcmlhYmxlICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgXCI9XCIgdmFyaWFibGUgXCI7XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuYW5vbnltb3VzRnVuY3Rpb24gICAgIDo6PSAgXCIoXCIgKCBhcmd1bWVudCAoIFwiLFwiIGFyZ3VtZW50ICkqICk/IFwiKVwiIHJldHVybkJsb2NrIDtcblxuY29uZGl0aW9uYWxCbG9jayAgICAgIDo6PSAgXCJJZlwiIFwiKFwiIGNvbmRpdGlvbiBcIilcIiBibG9jayAoIFwiRWxzZVwiIGJsb2NrICk/IDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5mb3JFYWNoTG9vcCAgICAgICAgICAgOjo9ICBcIkZvckVhY2hcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGFub255bW91c0Z1bmN0aW9uIFwiKVwiIFwiO1wiIDtcblxuY29uZGl0aW9uICAgICAgICAgICAgIDo6PSAgXCIoXCIgY29uZGl0aW9uIFwiKVwiIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBjb25kaXRpb24gKCBcInx8XCIgfCBcIiYmXCIgKSBjb25kaXRpb24gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZhbHVlICggKCBcIiE9XCIgfCBcIj09XCIgKSB2YWx1ZSApPyBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG5cblxucmV0dXJuQmxvY2suLiAgICAgICAgIDo6PSAgXCJ7XCIgKCBjb25kaXRpb25hbEJsb2NrIHwgZm9yRWFjaExvb3AgfCBpbnN0cnVjdGlvbiB8IG5vbnNlbnNlICkqIHJldHVybj8gXCJ9XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5ibG9jay4uICAgICAgICAgICAgICAgOjo9ICBcIntcIiAoIGNvbmRpdGlvbmFsQmxvY2sgfCBmb3JFYWNoTG9vcCB8IGluc3RydWN0aW9uIHwgbm9uc2Vuc2UgKSogXCJ9XCIgO1xuXG5cblxubm9uc2Vuc2UuICAgICAgICAgICAgIDo6PSAgW3R5cGVdIHwgW2tleXdvcmRdIHwgW3ByaW1pdGl2ZV0gfCBbaW5zdHJ1Y3Rpb25dIHwgW3NwZWNpYWxdIHwgW25hbWVdIHwgW251bWJlcl0gfCBbdW5hc3NpZ25lZF0gO1xuICAgIFxuXG4gICAgXG5yZXR1cm4gICAgICAgICAgICAgICAgOjo9ICBbcmV0dXJuXSB2YWx1ZSBcIjtcIiA7IFxuXG52YWx1ZSAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZSB8IFtudW1iZXJdIHwgW3ByaW1pdGl2ZV0gfCBbc3RyaW5nLWxpdGVyYWxdIDtcblxuYXJndW1lbnQgICAgICAgICAgICAgIDo6PSAgW3R5cGVdIHZhcmlhYmxlIDtcblxudmFyaWFibGUgICAgICAgICAgICAgIDo6PSAgW25hbWVdIDtcblxuYXNzaWdubWVudCAgICAgICAgICAgIDo6PSAgXCI9XCIgKCBmdW5jdGlvbkNhbGwgfCBub2Rlc1F1ZXJ5IHwgbm9kZVF1ZXJ5IHwgdmFsdWUgKSA7XG5cblxuXG5mdW5jdGlvbkNhbGwgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIHZhbHVlICggXCIsXCIgdmFsdWUgKSogKT8gXCIpXCIgO1xuXG5ub2Rlc1F1ZXJ5ICAgICAgICAgICAgOjo9ICBcIm5vZGVzUXVlcnlcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGV4cHJlc3Npb24gXCIpXCIgO1xuXG5ub2RlUXVlcnkgICAgICAgICAgICAgOjo9ICBcIm5vZGVRdWVyeVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgdmFyaWFibGUgXCIsXCIgZXhwcmVzc2lvbiBcIilcIiA7XG5cblxuXG5leHByZXNzaW9uICAgICAgICAgICAgOjo9ICBwYXRoIHNwcmVhZD8gc3ViRXhwcmVzc2lvbj8gO1xuXG5wYXRoICAgICAgICAgICAgICAgICAgOjo9ICBcIi9cIiBpbmZpbml0ZURlc2NlbnQ/IHNlbGVjdG9ycyA7XG5cbnN1YkV4cHJlc3Npb24gICAgICAgICA6Oj0gIHBhdGggc3ByZWFkPyBzdWJFeHByZXNzaW9uPztcblxuaW5maW5pdGVEZXNjZW50ICAgICAgIDo6PSAgXCIvXCIgO1xuXG5zZWxlY3RvcnMgICAgICAgICAgICAgOjo9ICBzZWxlY3RvciAoIFwifFwiIHNlbGVjdG9yICkqIDtcblxuc3ByZWFkICAgICAgICAgICAgICAgIDo6PSAgdW5pcXVlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIFwiW1wiIFxuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RhcnRJbmRleCBcIi4uLlwiIGVuZEluZGV4ICkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YXJ0SW5kZXggXCIuLi5cIiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIi4uLlwiIGVuZEluZGV4IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcIl1cIiA7XG5cbnNlbGVjdG9yICAgICAgICAgICAgICA6Oj0gIHJ1bGVOYW1lIHwgdG9rZW5UeXBlIDtcbiAgICAgICAgICAgICAgICAgICBcbnJ1bGVOYW1lICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSB8IFwiKlwiIDtcbiAgICAgICAgICAgICAgICAgICBcbnRva2VuVHlwZSAgICAgICAgICAgICA6Oj0gIFwiQFwiPE5PX1dISVRFU1BBQ0U+KCBbbmFtZV0gfCBcIipcIiApIDtcbiAgICAgICAgICAgICAgICAgICBcbnN0YXJ0SW5kZXggICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmVuZEluZGV4ICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmluZGV4ICAgICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbnVuaXF1ZSAgICAgICAgICAgICAgICA6Oj0gIFwiIVwiIDtgO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF3SkE7OztlQUFBOzs7QUF0SkEsSUFBTUEsTUFBTztJQXNKYixXQUFlQSJ9
@@ -13,7 +13,10 @@ var entries = [
13
13
  "type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
14
14
  },
15
15
  {
16
- "keyword": "^(?:If|Else|Return|ForEach)"
16
+ "return": "^Return"
17
+ },
18
+ {
19
+ "keyword": "^(?:If|Else|ForEach)"
17
20
  },
18
21
  {
19
22
  "primitive": "^(?:null|true|false)"
@@ -22,7 +25,10 @@ var entries = [
22
25
  "instruction": "^(?:nodeQuery|nodesQuery)"
23
26
  },
24
27
  {
25
- "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\{|\\}|\\.\\.\\.)"
28
+ "brackets": "^(?:\\{|\\})"
29
+ },
30
+ {
31
+ "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\.\\.\\.)"
26
32
  },
27
33
  {
28
34
  "name": "^[a-zA-Z\-]+"
@@ -36,4 +42,4 @@ var entries = [
36
42
  ];
37
43
  var _default = entries;
38
44
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmNvbnN0IGVudHJpZXMgPSBbXHJcbiAge1xyXG4gICAgXCJ0eXBlXCI6IFwiXig/OkJvb2xlYW58U3RyaW5nfE51bWJlcnxOb2Rlc3xOb2RlfFZvaWQpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwia2V5d29yZFwiOiBcIl4oPzpJZnxFbHNlfFJldHVybnxGb3JFYWNoKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInByaW1pdGl2ZVwiOiBcIl4oPzpudWxsfHRydWV8ZmFsc2UpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiaW5zdHJ1Y3Rpb25cIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnkpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzohPXw9PXw9fDt8LHxffCYmfFxcXFx8XFxcXHx8QHwhfFxcXFwqfFxcXFx8fFxcXFwvfFxcXFwofFxcXFwpfFxcXFxbfFxcXFxdfFxcXFx7fFxcXFx9fFxcXFwuXFxcXC5cXFxcLilcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJuYW1lXCI6IFwiXlthLXpBLVpcXC1dK1wiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm51bWJlclwiOiBcIl5bMC05XStcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJ1bmFzc2lnbmVkXCI6IFwiXi5cIlxyXG4gIH1cclxuXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGVudHJpZXM7XHJcbiJdLCJuYW1lcyI6WyJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE2QkE7OztlQUFBOzs7QUEzQkEsSUFBTUEsVUFBVTtJQUNkO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLGFBQWE7SUFDZjtJQUNBO1FBQ0UsZUFBZTtJQUNqQjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxRQUFRO0lBQ1Y7SUFDQTtRQUNFLFVBQVU7SUFDWjtJQUNBO1FBQ0UsY0FBYztJQUNoQjtDQUNEO0lBRUQsV0FBZUEifQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmNvbnN0IGVudHJpZXMgPSBbXHJcbiAge1xyXG4gICAgXCJ0eXBlXCI6IFwiXig/OkJvb2xlYW58U3RyaW5nfE51bWJlcnxOb2Rlc3xOb2RlfFZvaWQpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwicmV0dXJuXCI6IFwiXlJldHVyblwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcImtleXdvcmRcIjogXCJeKD86SWZ8RWxzZXxGb3JFYWNoKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInByaW1pdGl2ZVwiOiBcIl4oPzpudWxsfHRydWV8ZmFsc2UpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiaW5zdHJ1Y3Rpb25cIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnkpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiYnJhY2tldHNcIjogXCJeKD86XFxcXHt8XFxcXH0pXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzohPXw9PXw9fDt8LHxffCYmfFxcXFx8XFxcXHx8QHwhfFxcXFwqfFxcXFx8fFxcXFwvfFxcXFwofFxcXFwpfFxcXFxbfFxcXFxdfFxcXFwuXFxcXC5cXFxcLilcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJuYW1lXCI6IFwiXlthLXpBLVpcXC1dK1wiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm51bWJlclwiOiBcIl5bMC05XStcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJ1bmFzc2lnbmVkXCI6IFwiXi5cIlxyXG4gIH1cclxuXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGVudHJpZXM7XHJcbiJdLCJuYW1lcyI6WyJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFtQ0E7OztlQUFBOzs7QUFqQ0EsSUFBTUEsVUFBVTtJQUNkO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxVQUFVO0lBQ1o7SUFDQTtRQUNFLFdBQVc7SUFDYjtJQUNBO1FBQ0UsYUFBYTtJQUNmO0lBQ0E7UUFDRSxlQUFlO0lBQ2pCO0lBQ0E7UUFDRSxZQUFZO0lBQ2Q7SUFDQTtRQUNFLFdBQVc7SUFDYjtJQUNBO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxVQUFVO0lBQ1o7SUFDQTtRQUNFLGNBQWM7SUFDaEI7Q0FDRDtJQUVELFdBQWVBIn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-grammars",
3
3
  "author": "James Smith",
4
- "version": "1.3.5",
4
+ "version": "1.3.9",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-grammars",
7
7
  "description": "Occam's grammars.",
package/src/furtle/bnf.js CHANGED
@@ -1,28 +1,34 @@
1
1
  "use strict";
2
2
 
3
- const bnf = `document ::= ( instruction | error )+ ;
3
+ const bnf = `document ::= ( topLevelDeclaration | error )+ ;
4
4
 
5
5
 
6
6
 
7
- instruction ::= functionDeclaration
7
+ topLevelDeclaration ::= functionDeclaration
8
8
 
9
9
  | variablesDeclaration
10
10
 
11
+ ;
12
+
13
+
14
+
15
+ error. ::= . ;
16
+
17
+
18
+
19
+ instruction ::= variablesDeclaration
20
+
11
21
  | variableAssignment
12
22
 
13
23
  | objectAssignment
14
24
 
15
25
  | arrayAssignment
16
26
 
17
- | conditionalBlock
18
-
19
- | forEachLoop
20
-
21
27
  ;
22
28
 
23
29
 
24
30
 
25
- functionDeclaration ::= [type] function ;
31
+ functionDeclaration ::= [type] [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" returnBlock ;
26
32
 
27
33
  variablesDeclaration ::= [type] variable assignment? ( "," variable assignment? )* ";" ;
28
34
 
@@ -47,46 +53,14 @@ arrayAssignment ::= "["
47
53
  )
48
54
 
49
55
  "]" "=" variable ";" ;
56
+
57
+
50
58
 
51
- conditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ;
52
-
53
- forEachLoop ::= "ForEach"<NO_WHITESPACE>"(" [name] "," anonymousFunction ")" ";" ;
54
-
55
-
56
-
57
- assignment ::= "=" ( functionCall | nodesQuery | nodeQuery | value ) ;
58
-
59
-
60
-
61
- block ::= "{" ( variablesDeclaration |
62
-
63
- variableAssignment |
64
-
65
- objectAssignment |
66
-
67
- arrayAssignment |
68
-
69
- conditionalBlock |
70
-
71
- forEachLoop )* "}" ;
72
-
73
-
74
-
75
-
76
- functionCall ::= [name]<NO_WHITESPACE>"(" ( value ( "," value )* )? ")" ;
77
-
78
- function ::= [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" body ;
79
-
80
- anonymousFunction ::= "(" ( argument ( "," argument )* )? ")" body ;
81
-
82
-
83
-
84
- nodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;
85
-
86
- nodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;
87
-
59
+ anonymousFunction ::= "(" ( argument ( "," argument )* )? ")" returnBlock ;
88
60
 
61
+ conditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ;
89
62
 
63
+ forEachLoop ::= "ForEach"<NO_WHITESPACE>"(" variable "," anonymousFunction ")" ";" ;
90
64
 
91
65
  condition ::= "(" condition ")"
92
66
 
@@ -95,36 +69,36 @@ condition ::= "(" condition ")"
95
69
  | value ( ( "!=" | "==" ) value )?
96
70
 
97
71
  ;
98
-
99
-
100
-
101
- body ::= "{" ( variablesDeclaration |
102
-
103
- variableAssignment |
104
-
105
- objectAssignment |
106
72
 
107
- arrayAssignment |
108
-
109
- conditionalBlock |
110
73
 
111
- forEachLoop )* return? "}" ;
112
-
74
+
75
+ returnBlock.. ::= "{" ( conditionalBlock | forEachLoop | instruction | nonsense )* return? "}" ;
113
76
 
77
+ block.. ::= "{" ( conditionalBlock | forEachLoop | instruction | nonsense )* "}" ;
114
78
 
115
- return ::= "Return" value ";" ;
116
79
 
117
80
 
81
+ nonsense. ::= [type] | [keyword] | [primitive] | [instruction] | [special] | [name] | [number] | [unassigned] ;
82
+
83
+
84
+
85
+ return ::= [return] value ";" ;
118
86
 
119
87
  value ::= variable | [number] | [primitive] | [string-literal] ;
120
88
 
89
+ argument ::= [type] variable ;
121
90
 
91
+ variable ::= [name] ;
122
92
 
123
- argument ::= [type] variable ;
93
+ assignment ::= "=" ( functionCall | nodesQuery | nodeQuery | value ) ;
124
94
 
125
95
 
126
96
 
127
- variable ::= [name] ;
97
+ functionCall ::= [name]<NO_WHITESPACE>"(" ( value ( "," value )* )? ")" ;
98
+
99
+ nodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;
100
+
101
+ nodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," expression ")" ;
128
102
 
129
103
 
130
104
 
@@ -174,10 +148,6 @@ endIndex ::= [number] ;
174
148
 
175
149
  index ::= [number] ;
176
150
 
177
- unique ::= "!" ;
178
-
179
-
180
-
181
- error. ::= . ;`;
151
+ unique ::= "!" ;`;
182
152
 
183
153
  export default bnf;
@@ -5,7 +5,10 @@ const entries = [
5
5
  "type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
6
6
  },
7
7
  {
8
- "keyword": "^(?:If|Else|Return|ForEach)"
8
+ "return": "^Return"
9
+ },
10
+ {
11
+ "keyword": "^(?:If|Else|ForEach)"
9
12
  },
10
13
  {
11
14
  "primitive": "^(?:null|true|false)"
@@ -14,7 +17,10 @@ const entries = [
14
17
  "instruction": "^(?:nodeQuery|nodesQuery)"
15
18
  },
16
19
  {
17
- "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\{|\\}|\\.\\.\\.)"
20
+ "brackets": "^(?:\\{|\\})"
21
+ },
22
+ {
23
+ "special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\.\\.\\.)"
18
24
  },
19
25
  {
20
26
  "name": "^[a-zA-Z\-]+"