occam-grammars 1.3.7 → 1.3.10
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/example.js +11 -5
- package/lib/furtle/bnf.js +2 -2
- package/lib/furtle/entries.js +10 -4
- package/package.json +1 -1
- package/src/furtle/bnf.js +34 -64
- package/src/furtle/entries.js +9 -3
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 ::= (
|
|
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,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvYm5mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBibmYgPSBgZG9jdW1lbnQgICAgICAgICAgICAgIDo6PSAgKCB0b3BMZXZlbERlY2xhcmF0aW9uIHwgZXJyb3IgKSsgO1xuXG5cblxudG9wTGV2ZWxEZWNsYXJhdGlvbiAgIDo6PSAgZnVuY3Rpb25EZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZXNEZWNsYXJhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5lcnJvci4gICAgICAgICAgICAgICAgOjo9ICAuIDtcblxuXG5cbmluc3RydWN0aW9uICAgICAgICAgICA6Oj0gIHZhcmlhYmxlc0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZhcmlhYmxlQXNzaWdubWVudCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgb2JqZWN0QXNzaWdubWVudCBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfCAgYXJyYXlBc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbmZ1bmN0aW9uRGVjbGFyYXRpb24gICA6Oj0gIFt0eXBlXSBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIGFyZ3VtZW50ICggXCIsXCIgYXJndW1lbnQgKSogKT8gXCIpXCIgcmV0dXJuQmxvY2sgO1xuXG52YXJpYWJsZXNEZWNsYXJhdGlvbiAgOjo9ICBbdHlwZV0gdmFyaWFibGUgYXNzaWdubWVudD8gKCBcIixcIiB2YXJpYWJsZSBhc3NpZ25tZW50PyApKiBcIjtcIiA7XG5cbnZhcmlhYmxlQXNzaWdubWVudCAgICA6Oj0gIHZhcmlhYmxlIGFzc2lnbm1lbnQgXCI7XCIgO1xuXG5vYmplY3RBc3NpZ25tZW50ICAgICAgOjo9ICBcIntcIiBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPyB2YXJpYWJsZSAoIFwiLFwiIFt0eXBlXT8gdmFyaWFibGUgKSogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwifVwiIFwiPVwiIHZhcmlhYmxlIFwiO1wiIDtcblxuYXJyYXlBc3NpZ25tZW50ICAgICAgIDo6PSAgXCJbXCIgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIl9cIiAoIFwiLFwiIFwiX1wiICkqICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKyApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbdHlwZV0/IHZhcmlhYmxlICggXCIsXCIgW3R5cGVdPyB2YXJpYWJsZSApKiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJdXCIgXCI9XCIgdmFyaWFibGUgXCI7XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuYW5vbnltb3VzRnVuY3Rpb24gICAgIDo6PSAgXCIoXCIgKCBhcmd1bWVudCAoIFwiLFwiIGFyZ3VtZW50ICkqICk/IFwiKVwiIHJldHVybkJsb2NrIDtcblxuY29uZGl0aW9uYWxCbG9jayAgICAgIDo6PSAgXCJJZlwiIFwiKFwiIGNvbmRpdGlvbiBcIilcIiBibG9jayAoIFwiRWxzZVwiIGJsb2NrICk/IDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5mb3JFYWNoTG9vcCAgICAgICAgICAgOjo9ICBcIkZvckVhY2hcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGFub255bW91c0Z1bmN0aW9uIFwiKVwiIFwiO1wiIDtcblxuY29uZGl0aW9uICAgICAgICAgICAgIDo6PSAgXCIoXCIgY29uZGl0aW9uIFwiKVwiIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICBjb25kaXRpb24gKCBcInx8XCIgfCBcIiYmXCIgKSBjb25kaXRpb24gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIHZhbHVlICggKCBcIiE9XCIgfCBcIj09XCIgKSB2YWx1ZSApPyBcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG5cblxucmV0dXJuQmxvY2suLiAgICAgICAgIDo6PSAgXCJ7XCIgKCBjb25kaXRpb25hbEJsb2NrIHwgZm9yRWFjaExvb3AgfCBpbnN0cnVjdGlvbiB8IG5vbnNlbnNlICkqIHJldHVybj8gXCJ9XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5ibG9jay4uICAgICAgICAgICAgICAgOjo9ICBcIntcIiAoIGNvbmRpdGlvbmFsQmxvY2sgfCBmb3JFYWNoTG9vcCB8IGluc3RydWN0aW9uIHwgbm9uc2Vuc2UgKSogXCJ9XCIgO1xuXG5cblxubm9uc2Vuc2UuICAgICAgICAgICAgIDo6PSAgW3R5cGVdIHwgW2tleXdvcmRdIHwgW3ByaW1pdGl2ZV0gfCBbaW5zdHJ1Y3Rpb25dIHwgW3NwZWNpYWxdIHwgW25hbWVdIHwgW251bWJlcl0gfCBbdW5hc3NpZ25lZF0gO1xuICAgIFxuXG4gICAgXG5yZXR1cm4gICAgICAgICAgICAgICAgOjo9ICBbcmV0dXJuXSB2YWx1ZSBcIjtcIiA7IFxuXG52YWx1ZSAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZSB8IFtudW1iZXJdIHwgW3ByaW1pdGl2ZV0gfCBbc3RyaW5nLWxpdGVyYWxdIDtcblxuYXJndW1lbnQgICAgICAgICAgICAgIDo6PSAgW3R5cGVdIHZhcmlhYmxlIDtcblxudmFyaWFibGUgICAgICAgICAgICAgIDo6PSAgW25hbWVdIDtcblxuYXNzaWdubWVudCAgICAgICAgICAgIDo6PSAgXCI9XCIgKCBmdW5jdGlvbkNhbGwgfCBub2Rlc1F1ZXJ5IHwgbm9kZVF1ZXJ5IHwgdmFsdWUgKSA7XG5cblxuXG5mdW5jdGlvbkNhbGwgICAgICAgICAgOjo9ICBbbmFtZV08Tk9fV0hJVEVTUEFDRT5cIihcIiAoIHZhbHVlICggXCIsXCIgdmFsdWUgKSogKT8gXCIpXCIgO1xuXG5ub2Rlc1F1ZXJ5ICAgICAgICAgICAgOjo9ICBcIm5vZGVzUXVlcnlcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGV4cHJlc3Npb24gXCIpXCIgO1xuXG5ub2RlUXVlcnkgICAgICAgICAgICAgOjo9ICBcIm5vZGVRdWVyeVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgdmFyaWFibGUgXCIsXCIgZXhwcmVzc2lvbiBcIilcIiA7XG5cblxuXG5leHByZXNzaW9uICAgICAgICAgICAgOjo9ICBwYXRoIHNwcmVhZD8gc3ViRXhwcmVzc2lvbj8gO1xuXG5wYXRoICAgICAgICAgICAgICAgICAgOjo9ICBcIi9cIiBpbmZpbml0ZURlc2NlbnQ/IHNlbGVjdG9ycyA7XG5cbnN1YkV4cHJlc3Npb24gICAgICAgICA6Oj0gIHBhdGggc3ByZWFkPyBzdWJFeHByZXNzaW9uPztcblxuaW5maW5pdGVEZXNjZW50ICAgICAgIDo6PSAgXCIvXCIgO1xuXG5zZWxlY3RvcnMgICAgICAgICAgICAgOjo9ICBzZWxlY3RvciAoIFwifFwiIHNlbGVjdG9yICkqIDtcblxuc3ByZWFkICAgICAgICAgICAgICAgIDo6PSAgdW5pcXVlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIFwiW1wiIFxuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RhcnRJbmRleCBcIi4uLlwiIGVuZEluZGV4ICkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0YXJ0SW5kZXggXCIuLi5cIiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIi4uLlwiIGVuZEluZGV4IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcIl1cIiA7XG5cbnNlbGVjdG9yICAgICAgICAgICAgICA6Oj0gIHJ1bGVOYW1lIHwgdG9rZW5UeXBlIDtcbiAgICAgICAgICAgICAgICAgICBcbnJ1bGVOYW1lICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSB8IFwiKlwiIDtcbiAgICAgICAgICAgICAgICAgICBcbnRva2VuVHlwZSAgICAgICAgICAgICA6Oj0gIFwiQFwiPE5PX1dISVRFU1BBQ0U+KCBbbmFtZV0gfCBcIipcIiApIDtcbiAgICAgICAgICAgICAgICAgICBcbnN0YXJ0SW5kZXggICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmVuZEluZGV4ICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbmluZGV4ICAgICAgICAgICAgICAgICA6Oj0gIFtudW1iZXJdIDtcbiAgICAgICAgICAgICAgICAgICBcbnVuaXF1ZSAgICAgICAgICAgICAgICA6Oj0gIFwiIVwiIDtgO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF3SkE7OztlQUFBOzs7QUF0SkEsSUFBTUEsTUFBTztJQXNKYixXQUFlQSJ9
|
package/lib/furtle/entries.js
CHANGED
|
@@ -13,16 +13,22 @@ var entries = [
|
|
|
13
13
|
"type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
"
|
|
16
|
+
"query": "^(?:nodeQuery|nodesQuery)"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"return": "^Return"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"keyword": "^(?:If|Else|ForEach)"
|
|
17
23
|
},
|
|
18
24
|
{
|
|
19
25
|
"primitive": "^(?:null|true|false)"
|
|
20
26
|
},
|
|
21
27
|
{
|
|
22
|
-
"
|
|
28
|
+
"bracket": "^(?:\\{|\\})"
|
|
23
29
|
},
|
|
24
30
|
{
|
|
25
|
-
"special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]
|
|
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/
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdXJ0bGUvZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmNvbnN0IGVudHJpZXMgPSBbXHJcbiAge1xyXG4gICAgXCJ0eXBlXCI6IFwiXig/OkJvb2xlYW58U3RyaW5nfE51bWJlcnxOb2Rlc3xOb2RlfFZvaWQpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwicXVlcnlcIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnkpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwicmV0dXJuXCI6IFwiXlJldHVyblwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcImtleXdvcmRcIjogXCJeKD86SWZ8RWxzZXxGb3JFYWNoKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInByaW1pdGl2ZVwiOiBcIl4oPzpudWxsfHRydWV8ZmFsc2UpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiYnJhY2tldFwiOiBcIl4oPzpcXFxce3xcXFxcfSlcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJzcGVjaWFsXCI6IFwiXig/OiE9fD09fD18O3wsfF98JiZ8XFxcXHxcXFxcfHxAfCF8XFxcXCp8XFxcXHx8XFxcXC98XFxcXCh8XFxcXCl8XFxcXFt8XFxcXF18XFxcXC5cXFxcLlxcXFwuKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm5hbWVcIjogXCJeW2EtekEtWlxcLV0rXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwibnVtYmVyXCI6IFwiXlswLTldK1wiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInVuYXNzaWduZWRcIjogXCJeLlwiXHJcbiAgfVxyXG5dO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZW50cmllcztcclxuIl0sIm5hbWVzIjpbImVudHJpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQW1DQTs7O2VBQUE7OztBQWpDQSxJQUFNQSxVQUFVO0lBQ2Q7UUFDRSxRQUFRO0lBQ1Y7SUFDQTtRQUNFLFNBQVM7SUFDWDtJQUNBO1FBQ0UsVUFBVTtJQUNaO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLGFBQWE7SUFDZjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLFFBQVE7SUFDVjtJQUNBO1FBQ0UsVUFBVTtJQUNaO0lBQ0E7UUFDRSxjQUFjO0lBQ2hCO0NBQ0Q7SUFFRCxXQUFlQSJ9
|
package/package.json
CHANGED
package/src/furtle/bnf.js
CHANGED
|
@@ -1,28 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const bnf = `document ::= (
|
|
3
|
+
const bnf = `document ::= ( topLevelDeclaration | error )+ ;
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
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]
|
|
31
|
+
functionDeclaration ::= [type] [name]<NO_WHITESPACE>"(" ( argument ( "," argument )* )? ")" returnBlock ;
|
|
26
32
|
|
|
27
33
|
variablesDeclaration ::= [type] variable assignment? ( "," variable assignment? )* ";" ;
|
|
28
34
|
|
|
@@ -47,47 +53,15 @@ arrayAssignment ::= "["
|
|
|
47
53
|
)
|
|
48
54
|
|
|
49
55
|
"]" "=" variable ";" ;
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
anonymousFunction ::= "(" ( argument ( "," argument )* )? ")" returnBlock ;
|
|
50
60
|
|
|
51
61
|
conditionalBlock ::= "If" "(" condition ")" block ( "Else" block )? ;
|
|
52
62
|
|
|
53
63
|
forEachLoop ::= "ForEach"<NO_WHITESPACE>"(" variable "," anonymousFunction ")" ";" ;
|
|
54
64
|
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
65
|
condition ::= "(" condition ")"
|
|
92
66
|
|
|
93
67
|
| condition ( "||" | "&&" ) condition
|
|
@@ -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
|
-
|
|
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
|
-
|
|
93
|
+
assignment ::= "=" ( functionCall | nodesQuery | nodeQuery | value ) ;
|
|
124
94
|
|
|
125
95
|
|
|
126
96
|
|
|
127
|
-
|
|
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;
|
package/src/furtle/entries.js
CHANGED
|
@@ -5,16 +5,22 @@ const entries = [
|
|
|
5
5
|
"type": "^(?:Boolean|String|Number|Nodes|Node|Void)"
|
|
6
6
|
},
|
|
7
7
|
{
|
|
8
|
-
"
|
|
8
|
+
"query": "^(?:nodeQuery|nodesQuery)"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"return": "^Return"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"keyword": "^(?:If|Else|ForEach)"
|
|
9
15
|
},
|
|
10
16
|
{
|
|
11
17
|
"primitive": "^(?:null|true|false)"
|
|
12
18
|
},
|
|
13
19
|
{
|
|
14
|
-
"
|
|
20
|
+
"bracket": "^(?:\\{|\\})"
|
|
15
21
|
},
|
|
16
22
|
{
|
|
17
|
-
"special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]
|
|
23
|
+
"special": "^(?:!=|==|=|;|,|_|&&|\\|\\||@|!|\\*|\\||\\/|\\(|\\)|\\[|\\]|\\.\\.\\.)"
|
|
18
24
|
},
|
|
19
25
|
{
|
|
20
26
|
"name": "^[a-zA-Z\-]+"
|