occam-furtle 3.0.301 → 3.0.303
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/element/returnBlock.js +10 -8
- package/lib/example/furtle/bnf.js +172 -0
- package/lib/example/furtle/entries.js +49 -0
- package/lib/example/utilities/furtle.js +46 -0
- package/lib/example/view.js +10 -10
- package/lib/utilities/context.js +23 -0
- package/package.json +3 -2
- package/src/element/returnBlock.js +9 -8
- package/src/example/furtle/bnf.js +163 -0
- package/src/example/furtle/entries.js +42 -0
- package/src/example/utilities/furtle.js +43 -0
- package/src/example/view.js +3 -6
- package/src/utilities/context.js +11 -0
|
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _exception = /*#__PURE__*/ _interop_require_default(require("../exception"));
|
|
13
|
-
const _block = /*#__PURE__*/ _interop_require_default(require("../context/block"));
|
|
14
13
|
const _elements = require("../elements");
|
|
14
|
+
const _context = require("../utilities/context");
|
|
15
15
|
function _interop_require_default(obj) {
|
|
16
16
|
return obj && obj.__esModule ? obj : {
|
|
17
17
|
default: obj
|
|
@@ -45,16 +45,18 @@ const _default = (0, _elements.define)(class ReturnBlock extends _occamlanguages
|
|
|
45
45
|
const message = `The return block is nonsensical.`, exception = _exception.default.fromMessage(message);
|
|
46
46
|
throw exception;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
let value;
|
|
49
|
+
await (0, _context.confine)(async (context)=>{
|
|
50
|
+
await asyncForEach(this.steps, async (step)=>{
|
|
51
|
+
await step.evaluate(context);
|
|
52
|
+
});
|
|
53
|
+
value = this.returnStatement.evaluate(context);
|
|
54
|
+
}, variables, context);
|
|
55
|
+
const valueString = value.getString();
|
|
54
56
|
context.debug(`Evaluated the '${returnBlockString}' return block as '${valueString}'.`);
|
|
55
57
|
return value;
|
|
56
58
|
}
|
|
57
59
|
static name = "ReturnBlock";
|
|
58
60
|
});
|
|
59
61
|
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3JldHVybkJsb2NrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBhc3luY2hyb25vdXNVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSBcIi4uL2V4Y2VwdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGNvbmZpbmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBhc3luY0ZvckVhY2ggfSA9IGFzeW5jaHJvbm91c1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFJldHVybkJsb2NrIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RlcHMsIG5vbnNlbnNpY2FsLCByZXR1cm5TdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGVwcyA9IHN0ZXBzO1xuICAgIHRoaXMubm9uc2Vuc2ljYWwgPSBub25zZW5zaWNhbDtcbiAgICB0aGlzLnJldHVyblN0YXRlbWVudCA9IHJldHVyblN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzO1xuICB9XG5cbiAgaXNOb25zZW5zaWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub25zZW5zaWNhbDtcbiAgfVxuXG4gIGdldFJldHVyblN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXR1cm5TdGF0ZW1lbnQ7XG4gIH1cblxuICBhc3luYyBldmFsdWF0ZSh2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250ZXh0ID0gdmFyaWFibGVzOyAgLy8vXG5cbiAgICAgIHZhcmlhYmxlcyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJldHVybkJsb2NrU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBFdmFsdWF0aW5nIHRoZSAnJHtyZXR1cm5CbG9ja1N0cmluZ30nIHJldHVybiBibG9jay4uLmApO1xuXG4gICAgaWYgKHRoaXMubm9uc2Vuc2ljYWwpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIHJldHVybiBibG9jayBpcyBub25zZW5zaWNhbC5gLFxuICAgICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uLmZyb21NZXNzYWdlKG1lc3NhZ2UpO1xuXG4gICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlO1xuXG4gICAgYXdhaXQgY29uZmluZShhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgYXdhaXQgYXN5bmNGb3JFYWNoKHRoaXMuc3RlcHMsIGFzeW5jIChzdGVwKSA9PiB7XG4gICAgICAgIGF3YWl0IHN0ZXAuZXZhbHVhdGUoY29udGV4dCk7XG4gICAgICB9KTtcblxuICAgICAgdmFsdWUgPSB0aGlzLnJldHVyblN0YXRlbWVudC5ldmFsdWF0ZShjb250ZXh0KTtcbiAgICB9LCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSB2YWx1ZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQuZGVidWcoYEV2YWx1YXRlZCB0aGUgJyR7cmV0dXJuQmxvY2tTdHJpbmd9JyByZXR1cm4gYmxvY2sgYXMgJyR7dmFsdWVTdHJpbmd9Jy5gKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJSZXR1cm5CbG9ja1wiO1xufSk7XG4iXSwibmFtZXMiOlsiYXN5bmNGb3JFYWNoIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiZGVmaW5lIiwiUmV0dXJuQmxvY2siLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RlcHMiLCJub25zZW5zaWNhbCIsInJldHVyblN0YXRlbWVudCIsImdldFN0ZXBzIiwiaXNOb25zZW5zaWNhbCIsImdldFJldHVyblN0YXRlbWVudCIsImV2YWx1YXRlIiwidmFyaWFibGVzIiwidW5kZWZpbmVkIiwicmV0dXJuQmxvY2tTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsInZhbHVlIiwiY29uZmluZSIsInN0ZXAiLCJ2YWx1ZVN0cmluZyIsImRlYnVnIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVCtDO2tFQUV6QjswQkFFQzt5QkFDQzs7Ozs7O0FBRXhCLE1BQU0sRUFBRUEsWUFBWSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU5QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLFdBQVcsRUFBRUMsZUFBZSxDQUFFO1FBQ2xGLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsZUFBZSxHQUFHQTtJQUN6QjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNILEtBQUs7SUFDbkI7SUFFQUksZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDekI7SUFFQUkscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDSCxlQUFlO0lBQzdCO0lBRUEsTUFBTUksU0FBU0MsU0FBUyxFQUFFWCxPQUFPLEVBQUU7UUFDakMsSUFBSUEsWUFBWVksV0FBVztZQUN6QlosVUFBVVcsV0FBWSxHQUFHO1lBRXpCQSxZQUFZLEVBQUU7UUFDaEI7UUFFQSxNQUFNRSxvQkFBb0IsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUUvQ2QsUUFBUWUsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLGtCQUFrQixpQkFBaUIsQ0FBQztRQUVyRSxJQUFJLElBQUksQ0FBQ1IsV0FBVyxFQUFFO1lBQ3BCLE1BQU1XLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUM1Q0MsWUFBWUMsa0JBQVMsQ0FBQ0MsV0FBVyxDQUFDSDtZQUV4QyxNQUFNQztRQUNSO1FBRUEsSUFBSUc7UUFFSixNQUFNQyxJQUFBQSxnQkFBTyxFQUFDLE9BQU9yQjtZQUNuQixNQUFNTCxhQUFhLElBQUksQ0FBQ1MsS0FBSyxFQUFFLE9BQU9rQjtnQkFDcEMsTUFBTUEsS0FBS1osUUFBUSxDQUFDVjtZQUN0QjtZQUVBb0IsUUFBUSxJQUFJLENBQUNkLGVBQWUsQ0FBQ0ksUUFBUSxDQUFDVjtRQUN4QyxHQUFHVyxXQUFXWDtRQUVkLE1BQU11QixjQUFjSCxNQUFNTixTQUFTO1FBRW5DZCxRQUFRd0IsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFWCxrQkFBa0IsbUJBQW1CLEVBQUVVLFlBQVksRUFBRSxDQUFDO1FBRXRGLE9BQU9IO0lBQ1Q7SUFFQSxPQUFPSyxPQUFPLGNBQWM7QUFDOUIifQ==
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const bnf = `
|
|
12
|
+
|
|
13
|
+
document ::= ( procedureDeclaration | error )+ ;
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
procedureDeclaration ::= [type] label<NO_WHITESPACE>"(" parameters? ")" returnBlock ;
|
|
18
|
+
|
|
19
|
+
anonymousProcedure ::= [type] "(" parameters? ")" returnBlock ;
|
|
20
|
+
|
|
21
|
+
step ::= variableAssignments
|
|
22
|
+
|
|
23
|
+
| objectAssignment
|
|
24
|
+
|
|
25
|
+
| arrayAssignment
|
|
26
|
+
|
|
27
|
+
;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
variableAssignments ::= [type] variableAssignment ( "," variableAssignment )* ";" ;
|
|
32
|
+
|
|
33
|
+
variableAssignment ::= variable "=" expression ;
|
|
34
|
+
|
|
35
|
+
objectAssignment ::= "{" namedBindings "}" "=" variable ";" ;
|
|
36
|
+
|
|
37
|
+
arrayAssignment ::= "[" bindings "]" "=" variable ";" ;
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
namedBindings ::= namedBinding ( "," namedBinding )* ;
|
|
42
|
+
|
|
43
|
+
parameters ::= parameter ( "," parameter )* ;
|
|
44
|
+
|
|
45
|
+
bindings ::= binding ( "," binding )* ;
|
|
46
|
+
|
|
47
|
+
values ::= value ( "," value )* ;
|
|
48
|
+
|
|
49
|
+
terms ::= term ( "," term )* ;
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
namedBinding ::= [type] [name] ( "as" [name] )? ;
|
|
54
|
+
|
|
55
|
+
parameter ::= [type] [name] ;
|
|
56
|
+
|
|
57
|
+
binding ::= [type] [name]
|
|
58
|
+
|
|
59
|
+
| ε
|
|
60
|
+
|
|
61
|
+
;
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
procedureCall ::= reference<NO_WHITESPACE>"(" values? ")" ;
|
|
66
|
+
|
|
67
|
+
returnBlock.. ::= "{" ( step | nonsense )* returnStatement "}" ;
|
|
68
|
+
|
|
69
|
+
nodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," [string-literal] ")" ;
|
|
70
|
+
|
|
71
|
+
nodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," [string-literal] ")" ;
|
|
72
|
+
|
|
73
|
+
ternary ::= "if" "(" term ")" expression "else" expression ;
|
|
74
|
+
|
|
75
|
+
reduce ::= "reduce"<NO_WHITESPACE>"(" variable "," anonymousProcedure "," value ")" ;
|
|
76
|
+
|
|
77
|
+
every ::= "every"<NO_WHITESPACE>"(" variable "," anonymousProcedure ")" ;
|
|
78
|
+
|
|
79
|
+
some ::= "some"<NO_WHITESPACE>"(" variable "," anonymousProcedure ")" ;
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
returnStatement ::= "return" value ";" ;
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
comparisonTerm ::= term ( "==" | "!=" ) term ;
|
|
88
|
+
|
|
89
|
+
bracketedTerm ::= "(" term ")" ;
|
|
90
|
+
|
|
91
|
+
negatedTerm ::= "!"<NO_WHITESPACE>term ;
|
|
92
|
+
|
|
93
|
+
logicalTerm ::= term ( "||" | "&&" ) term ;
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
expression ::= procedureCall
|
|
98
|
+
|
|
99
|
+
| returnBlock
|
|
100
|
+
|
|
101
|
+
| nodesQuery
|
|
102
|
+
|
|
103
|
+
| nodeQuery
|
|
104
|
+
|
|
105
|
+
| ternary
|
|
106
|
+
|
|
107
|
+
| reduce
|
|
108
|
+
|
|
109
|
+
| every
|
|
110
|
+
|
|
111
|
+
| some
|
|
112
|
+
|
|
113
|
+
| term
|
|
114
|
+
|
|
115
|
+
;
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
term ::= comparisonTerm
|
|
120
|
+
|
|
121
|
+
| bracketedTerm
|
|
122
|
+
|
|
123
|
+
| logicalTerm
|
|
124
|
+
|
|
125
|
+
| negatedTerm
|
|
126
|
+
|
|
127
|
+
| primitive
|
|
128
|
+
|
|
129
|
+
| variable
|
|
130
|
+
|
|
131
|
+
;
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
value ::= primitive
|
|
136
|
+
|
|
137
|
+
| variable
|
|
138
|
+
|
|
139
|
+
;
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
primitive ::= [string-literal]
|
|
144
|
+
|
|
145
|
+
| [boolean]
|
|
146
|
+
|
|
147
|
+
| [number]
|
|
148
|
+
|
|
149
|
+
| [null]
|
|
150
|
+
|
|
151
|
+
;
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
reference. ::= [name] ;
|
|
156
|
+
|
|
157
|
+
variable ::= [name] ;
|
|
158
|
+
|
|
159
|
+
label. ::= [name] ;
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
nonsense. ::= [secondary-keyword] | [type] | [null] | [boolean] | [string-literal] | [query] | [special] | [name] | [number] | [unassigned] ;
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
error. ::= . ;
|
|
168
|
+
|
|
169
|
+
`;
|
|
170
|
+
const _default = bnf;
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL2Z1cnRsZS9ibmYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IGJuZiA9IGBcblxuICAgIGRvY3VtZW50ICAgICAgICAgICAgICAgIDo6PSAgKCBwcm9jZWR1cmVEZWNsYXJhdGlvbiB8IGVycm9yICkrIDtcbiAgICBcbiAgICBcbiAgICBcbiAgICBwcm9jZWR1cmVEZWNsYXJhdGlvbiAgICA6Oj0gIFt0eXBlXSBsYWJlbDxOT19XSElURVNQQUNFPlwiKFwiIHBhcmFtZXRlcnM/IFwiKVwiIHJldHVybkJsb2NrIDtcbiAgICBcbiAgICBhbm9ueW1vdXNQcm9jZWR1cmUgICAgICA6Oj0gIFt0eXBlXSBcIihcIiBwYXJhbWV0ZXJzPyBcIilcIiByZXR1cm5CbG9jayA7XG4gICAgXG4gICAgc3RlcCAgICAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZUFzc2lnbm1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG9iamVjdEFzc2lnbm1lbnRcbiAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBhcnJheUFzc2lnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAgXG4gICAgICBcbiAgICAgIFxuICAgIFxuICAgIHZhcmlhYmxlQXNzaWdubWVudHMgICAgIDo6PSAgW3R5cGVdIHZhcmlhYmxlQXNzaWdubWVudCAoIFwiLFwiIHZhcmlhYmxlQXNzaWdubWVudCApKiBcIjtcIiA7XG4gICAgXG4gICAgdmFyaWFibGVBc3NpZ25tZW50ICAgICAgOjo9ICB2YXJpYWJsZSBcIj1cIiBleHByZXNzaW9uIDtcbiAgICBcbiAgICBvYmplY3RBc3NpZ25tZW50ICAgICAgICA6Oj0gIFwie1wiIG5hbWVkQmluZGluZ3MgXCJ9XCIgXCI9XCIgdmFyaWFibGUgXCI7XCIgO1xuICAgIFxuICAgIGFycmF5QXNzaWdubWVudCAgICAgICAgIDo6PSAgXCJbXCIgYmluZGluZ3MgXCJdXCIgXCI9XCIgdmFyaWFibGUgXCI7XCIgO1xuICAgIFxuXG5cbiAgICBuYW1lZEJpbmRpbmdzICAgICAgICAgICA6Oj0gIG5hbWVkQmluZGluZyAoIFwiLFwiIG5hbWVkQmluZGluZyApKiA7XG4gICAgXG4gICAgcGFyYW1ldGVycyAgICAgICAgICAgICAgOjo9ICBwYXJhbWV0ZXIgKCBcIixcIiBwYXJhbWV0ZXIgKSogO1xuICAgIFxuICAgIGJpbmRpbmdzICAgICAgICAgICAgICAgIDo6PSAgYmluZGluZyAoIFwiLFwiIGJpbmRpbmcgKSogO1xuICAgIFxuICAgIHZhbHVlcyAgICAgICAgICAgICAgICAgIDo6PSAgdmFsdWUgKCBcIixcIiB2YWx1ZSApKiA7XG4gICAgXG4gICAgdGVybXMgICAgICAgICAgICAgICAgICAgOjo9ICB0ZXJtICggXCIsXCIgdGVybSApKiA7XG4gICAgXG5cblxuICAgIG5hbWVkQmluZGluZyAgICAgICAgICA6Oj0gIFt0eXBlXSBbbmFtZV0gKCBcImFzXCIgW25hbWVdICk/IDsgICBcbiAgICBcbiAgICBwYXJhbWV0ZXIgICAgICAgICAgICAgOjo9ICBbdHlwZV0gW25hbWVdIDtcblxuICAgIGJpbmRpbmcgICAgICAgICAgICAgICA6Oj0gIFt0eXBlXSBbbmFtZV1cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICDOtSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuICAgIFxuICAgIHByb2NlZHVyZUNhbGwgICAgICAgICAgIDo6PSAgcmVmZXJlbmNlPE5PX1dISVRFU1BBQ0U+XCIoXCIgdmFsdWVzPyBcIilcIiA7XG4gICAgXG4gICAgcmV0dXJuQmxvY2suLiAgICAgICAgICAgOjo9ICBcIntcIiAoIHN0ZXAgfCBub25zZW5zZSApKiByZXR1cm5TdGF0ZW1lbnQgXCJ9XCIgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgIG5vZGVzUXVlcnkgICAgICAgICAgICAgIDo6PSAgXCJub2Rlc1F1ZXJ5XCI8Tk9fV0hJVEVTUEFDRT5cIihcIiB2YXJpYWJsZSBcIixcIiBbc3RyaW5nLWxpdGVyYWxdIFwiKVwiIDtcbiAgICBcbiAgICBub2RlUXVlcnkgICAgICAgICAgICAgICA6Oj0gIFwibm9kZVF1ZXJ5XCI8Tk9fV0hJVEVTUEFDRT5cIihcIiB2YXJpYWJsZSBcIixcIiBbc3RyaW5nLWxpdGVyYWxdIFwiKVwiIDtcbiAgICBcbiAgICB0ZXJuYXJ5ICAgICAgICAgICAgICAgICA6Oj0gIFwiaWZcIiBcIihcIiB0ZXJtIFwiKVwiIGV4cHJlc3Npb24gXCJlbHNlXCIgZXhwcmVzc2lvbiA7XG4gICAgXG4gICAgcmVkdWNlICAgICAgICAgICAgICAgICAgOjo9ICBcInJlZHVjZVwiPE5PX1dISVRFU1BBQ0U+XCIoXCIgdmFyaWFibGUgXCIsXCIgYW5vbnltb3VzUHJvY2VkdXJlIFwiLFwiIHZhbHVlIFwiKVwiIDtcbiAgICBcbiAgICBldmVyeSAgICAgICAgICAgICAgICAgICA6Oj0gIFwiZXZlcnlcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGFub255bW91c1Byb2NlZHVyZSBcIilcIiA7XG4gICAgXG4gICAgc29tZSAgICAgICAgICAgICAgICAgICAgOjo9ICBcInNvbWVcIjxOT19XSElURVNQQUNFPlwiKFwiIHZhcmlhYmxlIFwiLFwiIGFub255bW91c1Byb2NlZHVyZSBcIilcIiA7XG4gICAgXG4gICAgXG4gICAgXG4gICAgcmV0dXJuU3RhdGVtZW50ICAgICAgICAgOjo9ICBcInJldHVyblwiIHZhbHVlIFwiO1wiIDsgXG4gICAgXG4gICAgXG4gICAgXG4gICAgY29tcGFyaXNvblRlcm0gICAgICAgICAgOjo9ICB0ZXJtICggXCI9PVwiIHwgXCIhPVwiICkgdGVybSA7IFxuICAgIFxuICAgIGJyYWNrZXRlZFRlcm0gICAgICAgICAgIDo6PSAgXCIoXCIgdGVybSBcIilcIiA7IFxuICAgIFxuICAgIG5lZ2F0ZWRUZXJtICAgICAgICAgICAgIDo6PSAgXCIhXCI8Tk9fV0hJVEVTUEFDRT50ZXJtIDsgXG4gICAgXG4gICAgbG9naWNhbFRlcm0gICAgICAgICAgICAgOjo9ICB0ZXJtICggXCJ8fFwiIHwgXCImJlwiICkgdGVybSA7IFxuXG5cbiAgICBcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgICA6Oj0gIHByb2NlZHVyZUNhbGxcbiAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICByZXR1cm5CbG9ja1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbm9kZXNRdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub2RlUXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgdGVybmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICByZWR1Y2VcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGV2ZXJ5XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBzb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgdGVybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG4gICAgXG4gICAgXG4gICAgXG4gICAgdGVybSAgICAgICAgICAgICAgICAgICAgOjo9ICBjb21wYXJpc29uVGVybSBcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGJyYWNrZXRlZFRlcm0gXG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBsb2dpY2FsVGVybSBcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5lZ2F0ZWRUZXJtIFxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJpbWl0aXZlIFxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgdmFyaWFibGUgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG4gICAgXG4gICAgdmFsdWUgICAgICAgICAgICAgICAgICAgOjo9ICBwcmltaXRpdmUgXG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB2YXJpYWJsZSBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cbiAgICBcbiAgICBwcmltaXRpdmUgICAgICAgICAgICAgICA6Oj0gIFtzdHJpbmctbGl0ZXJhbF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgW2Jvb2xlYW5dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFtudW1iZXJdIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBbbnVsbF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG4gICAgcmVmZXJlbmNlLiAgICAgICAgICAgICAgOjo9ICBbbmFtZV0gO1xuICAgIFxuICAgIHZhcmlhYmxlICAgICAgICAgICAgICAgIDo6PSAgW25hbWVdIDtcbiAgICBcbiAgICBsYWJlbC4gICAgICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSA7XG4gICAgXG4gICAgXG4gICAgXG4gICAgbm9uc2Vuc2UuICAgICAgICAgICAgICAgOjo9ICBbc2Vjb25kYXJ5LWtleXdvcmRdIHwgW3R5cGVdIHwgW251bGxdIHwgW2Jvb2xlYW5dIHwgW3N0cmluZy1saXRlcmFsXSB8IFtxdWVyeV0gfCBbc3BlY2lhbF0gfCBbbmFtZV0gfCBbbnVtYmVyXSB8IFt1bmFzc2lnbmVkXSA7XG5cblxuICAgIFxuICAgIGVycm9yLiAgICAgICAgICAgICAgICAgIDo6PSAgLiA7XG4gICAgXG5gO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrS0E7OztlQUFBOzs7QUFoS0EsTUFBTUEsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThKYixDQUFDO01BRUQsV0FBZUEifQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const LATIN = "[\\p{Script=Latin}]", DECIMAL = "[0-9]";
|
|
12
|
+
const entries = [
|
|
13
|
+
{
|
|
14
|
+
"type": "^(?:Nodes|Node|String|Number|Boolean)"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"query": "^(?:nodeQuery|nodesQuery)"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"primary-keyword": "^return"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"secondary-keyword": "^(?:if|else|reduce|every|some|as)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"null": "^null"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"boolean": "^(?:true|false)"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"bracket": "^(?:\\{|\\})"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"special": "^(?:!=|==|!|=|,|;|&&|\\|\\||\\(|\\)|\\[|\\])"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": `^${LATIN}+${DECIMAL}*`
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"number": `^${DECIMAL}+`
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"unassigned": "^[^\\s]+"
|
|
45
|
+
}
|
|
46
|
+
];
|
|
47
|
+
const _default = entries;
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL2Z1cnRsZS9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuY29uc3QgTEFUSU4gPSBcIltcXFxccHtTY3JpcHQ9TGF0aW59XVwiLFxyXG4gICAgICBERUNJTUFMID0gXCJbMC05XVwiO1xyXG5cclxuY29uc3QgZW50cmllcyA9IFtcclxuICB7XHJcbiAgICBcInR5cGVcIjogXCJeKD86Tm9kZXN8Tm9kZXxTdHJpbmd8TnVtYmVyfEJvb2xlYW4pXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwicXVlcnlcIjogXCJeKD86bm9kZVF1ZXJ5fG5vZGVzUXVlcnkpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwicHJpbWFyeS1rZXl3b3JkXCI6IFwiXnJldHVyblwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInNlY29uZGFyeS1rZXl3b3JkXCI6IFwiXig/OmlmfGVsc2V8cmVkdWNlfGV2ZXJ5fHNvbWV8YXMpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwibnVsbFwiOiBcIl5udWxsXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiYm9vbGVhblwiOiBcIl4oPzp0cnVlfGZhbHNlKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcImJyYWNrZXRcIjogXCJeKD86XFxcXHt8XFxcXH0pXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzohPXw9PXwhfD18LHw7fCYmfFxcXFx8XFxcXHx8XFxcXCh8XFxcXCl8XFxcXFt8XFxcXF0pXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwibmFtZVwiOiBgXiR7TEFUSU59KyR7REVDSU1BTH0qYCxcclxuICB9LFxyXG4gIHtcclxuICAgIFwibnVtYmVyXCI6IGBeJHtERUNJTUFMfStgXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInVuYXNzaWduZWRcIjogXCJeW15cXFxcc10rXCJcclxuICB9XHJcbl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBlbnRyaWVzO1xyXG4iXSwibmFtZXMiOlsiTEFUSU4iLCJERUNJTUFMIiwiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBeUNBOzs7ZUFBQTs7O0FBdkNBLE1BQU1BLFFBQVEsdUJBQ1JDLFVBQVU7QUFFaEIsTUFBTUMsVUFBVTtJQUNkO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxTQUFTO0lBQ1g7SUFDQTtRQUNFLG1CQUFtQjtJQUNyQjtJQUNBO1FBQ0UscUJBQXFCO0lBQ3ZCO0lBQ0E7UUFDRSxRQUFRO0lBQ1Y7SUFDQTtRQUNFLFdBQVc7SUFDYjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLFFBQVEsQ0FBQyxDQUFDLEVBQUVGLE1BQU0sQ0FBQyxFQUFFQyxRQUFRLENBQUMsQ0FBQztJQUNqQztJQUNBO1FBQ0UsVUFBVSxDQUFDLENBQUMsRUFBRUEsUUFBUSxDQUFDLENBQUM7SUFDMUI7SUFDQTtRQUNFLGNBQWM7SUFDaEI7Q0FDRDtNQUVELFdBQWVDIn0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get furtleLexerFromEntries () {
|
|
13
|
+
return furtleLexerFromEntries;
|
|
14
|
+
},
|
|
15
|
+
get furtleParserFromBNF () {
|
|
16
|
+
return furtleParserFromBNF;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _occamlexers = require("occam-lexers");
|
|
20
|
+
const _occamparsers = require("occam-parsers");
|
|
21
|
+
const _occamgrammarutilities = require("occam-grammar-utilities");
|
|
22
|
+
const _index = require("../../index");
|
|
23
|
+
const { rulesFromBNF, parserFromRules } = _occamparsers.parserUtilities, { lexerFromRules, rulesFromEntries } = _occamlexers.lexerUtilities;
|
|
24
|
+
function furtleLexerFromEntries(Class, entries) {
|
|
25
|
+
if (entries === undefined) {
|
|
26
|
+
entries = Class; ///
|
|
27
|
+
Class = _index.FurtleLexer; ///
|
|
28
|
+
}
|
|
29
|
+
let rules;
|
|
30
|
+
rules = rulesFromEntries(entries);
|
|
31
|
+
const furtleLexer = lexerFromRules(Class, rules);
|
|
32
|
+
return furtleLexer;
|
|
33
|
+
}
|
|
34
|
+
function furtleParserFromBNF(Class, bnf) {
|
|
35
|
+
if (bnf === undefined) {
|
|
36
|
+
bnf = Class; ///
|
|
37
|
+
Class = _index.FurtleParser; ///
|
|
38
|
+
}
|
|
39
|
+
let rules;
|
|
40
|
+
rules = rulesFromBNF(bnf);
|
|
41
|
+
rules = (0, _occamgrammarutilities.eliminateLeftRecursion)(rules); ///
|
|
42
|
+
const furtleParser = parserFromRules(Class, rules);
|
|
43
|
+
return furtleParser;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGFtcGxlL3V0aWxpdGllcy9mdXJ0bGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxleGVyVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuaW1wb3J0IHsgcGFyc2VyVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLXBhcnNlcnNcIjtcbmltcG9ydCB7IGVsaW1pbmF0ZUxlZnRSZWN1cnNpb24gfSBmcm9tIFwib2NjYW0tZ3JhbW1hci11dGlsaXRpZXNcIjtcbmltcG9ydCB7IEZ1cnRsZUxleGVyLEZ1cnRsZVBhcnNlciB9IGZyb20gXCIuLi8uLi9pbmRleFwiOyAvLy9cblxuY29uc3QgeyBydWxlc0Zyb21CTkYsIHBhcnNlckZyb21SdWxlcyB9ID0gcGFyc2VyVXRpbGl0aWVzLFxuICAgICAgeyBsZXhlckZyb21SdWxlcywgcnVsZXNGcm9tRW50cmllcyB9ID0gbGV4ZXJVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBmdXJ0bGVMZXhlckZyb21FbnRyaWVzKENsYXNzLCBlbnRyaWVzKSB7XG4gIGlmIChlbnRyaWVzID09PSB1bmRlZmluZWQpIHtcbiAgICBlbnRyaWVzID0gQ2xhc3M7ICAvLy9cblxuICAgIENsYXNzID0gRnVydGxlTGV4ZXI7ICAvLy9cbiAgfVxuXG4gIGxldCBydWxlcztcblxuICBydWxlcyA9IHJ1bGVzRnJvbUVudHJpZXMoZW50cmllcyk7XG5cbiAgY29uc3QgZnVydGxlTGV4ZXIgPSBsZXhlckZyb21SdWxlcyhDbGFzcywgcnVsZXMpO1xuXG4gIHJldHVybiBmdXJ0bGVMZXhlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZ1cnRsZVBhcnNlckZyb21CTkYoQ2xhc3MsIGJuZikge1xuICBpZiAoYm5mID09PSB1bmRlZmluZWQpIHtcbiAgICBibmYgPSBDbGFzczsgIC8vL1xuXG4gICAgQ2xhc3MgPSBGdXJ0bGVQYXJzZXI7ICAvLy9cbiAgfVxuXG4gIGxldCBydWxlcztcblxuICBydWxlcyA9IHJ1bGVzRnJvbUJORihibmYpO1xuXG4gIHJ1bGVzID0gZWxpbWluYXRlTGVmdFJlY3Vyc2lvbihydWxlcyk7ICAvLy9cblxuICBjb25zdCBmdXJ0bGVQYXJzZXIgPSBwYXJzZXJGcm9tUnVsZXMoQ2xhc3MsIHJ1bGVzKTtcblxuICByZXR1cm4gZnVydGxlUGFyc2VyO1xufVxuIl0sIm5hbWVzIjpbImZ1cnRsZUxleGVyRnJvbUVudHJpZXMiLCJmdXJ0bGVQYXJzZXJGcm9tQk5GIiwicnVsZXNGcm9tQk5GIiwicGFyc2VyRnJvbVJ1bGVzIiwicGFyc2VyVXRpbGl0aWVzIiwibGV4ZXJGcm9tUnVsZXMiLCJydWxlc0Zyb21FbnRyaWVzIiwibGV4ZXJVdGlsaXRpZXMiLCJDbGFzcyIsImVudHJpZXMiLCJ1bmRlZmluZWQiLCJGdXJ0bGVMZXhlciIsInJ1bGVzIiwiZnVydGxlTGV4ZXIiLCJibmYiLCJGdXJ0bGVQYXJzZXIiLCJlbGltaW5hdGVMZWZ0UmVjdXJzaW9uIiwiZnVydGxlUGFyc2VyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFVZ0JBO2VBQUFBOztRQWdCQUM7ZUFBQUE7Ozs2QkF4QmU7OEJBQ0M7dUNBQ087dUJBQ0U7QUFFekMsTUFBTSxFQUFFQyxZQUFZLEVBQUVDLGVBQWUsRUFBRSxHQUFHQyw2QkFBZSxFQUNuRCxFQUFFQyxjQUFjLEVBQUVDLGdCQUFnQixFQUFFLEdBQUdDLDJCQUFjO0FBRXBELFNBQVNQLHVCQUF1QlEsS0FBSyxFQUFFQyxPQUFPO0lBQ25ELElBQUlBLFlBQVlDLFdBQVc7UUFDekJELFVBQVVELE9BQVEsR0FBRztRQUVyQkEsUUFBUUcsa0JBQVcsRUFBRyxHQUFHO0lBQzNCO0lBRUEsSUFBSUM7SUFFSkEsUUFBUU4saUJBQWlCRztJQUV6QixNQUFNSSxjQUFjUixlQUFlRyxPQUFPSTtJQUUxQyxPQUFPQztBQUNUO0FBRU8sU0FBU1osb0JBQW9CTyxLQUFLLEVBQUVNLEdBQUc7SUFDNUMsSUFBSUEsUUFBUUosV0FBVztRQUNyQkksTUFBTU4sT0FBUSxHQUFHO1FBRWpCQSxRQUFRTyxtQkFBWSxFQUFHLEdBQUc7SUFDNUI7SUFFQSxJQUFJSDtJQUVKQSxRQUFRVixhQUFhWTtJQUVyQkYsUUFBUUksSUFBQUEsNkNBQXNCLEVBQUNKLFFBQVMsR0FBRztJQUUzQyxNQUFNSyxlQUFlZCxnQkFBZ0JLLE9BQU9JO0lBRTVDLE9BQU9LO0FBQ1QifQ==
|
package/lib/example/view.js
CHANGED
|
@@ -11,22 +11,22 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
const _easywithstyle = /*#__PURE__*/ _interop_require_default(require("easy-with-style"));
|
|
12
12
|
const _easy = require("easy");
|
|
13
13
|
const _easylayout = require("easy-layout");
|
|
14
|
-
const
|
|
14
|
+
const _bnf = /*#__PURE__*/ _interop_require_default(require("./furtle/bnf"));
|
|
15
|
+
const _entries = /*#__PURE__*/ _interop_require_default(require("./furtle/entries"));
|
|
15
16
|
const _subHeading = /*#__PURE__*/ _interop_require_default(require("./view/subHeading"));
|
|
16
17
|
const _sizeable = /*#__PURE__*/ _interop_require_default(require("./view/div/sizeable"));
|
|
17
|
-
const
|
|
18
|
+
const _bnf1 = /*#__PURE__*/ _interop_require_default(require("./view/textarea/bnf"));
|
|
18
19
|
const _ruleName = /*#__PURE__*/ _interop_require_default(require("./view/input/ruleName"));
|
|
19
20
|
const _tokens = /*#__PURE__*/ _interop_require_default(require("./view/textarea/tokens"));
|
|
20
21
|
const _content = /*#__PURE__*/ _interop_require_default(require("./view/textarea/content"));
|
|
21
22
|
const _parseTree = /*#__PURE__*/ _interop_require_default(require("./view/textarea/parseTree"));
|
|
22
23
|
const _lexicalEntries = /*#__PURE__*/ _interop_require_default(require("./view/textarea/lexicalEntries"));
|
|
24
|
+
const _furtle = require("./utilities/furtle");
|
|
23
25
|
function _interop_require_default(obj) {
|
|
24
26
|
return obj && obj.__esModule ? obj : {
|
|
25
27
|
default: obj
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
|
-
const { furtleParserFromBNF } = _index.parsersUtilities, { furtleLexerFromEntries } = _index.lexersUtilities;
|
|
29
|
-
const { bnf } = _index.FurtleParser, { entries } = _index.FurtleLexer;
|
|
30
30
|
class View extends _easy.Element {
|
|
31
31
|
keyUpHandler = (event, element)=>{
|
|
32
32
|
// try {
|
|
@@ -42,12 +42,12 @@ class View extends _easy.Element {
|
|
|
42
42
|
// }
|
|
43
43
|
};
|
|
44
44
|
getTokens() {
|
|
45
|
-
const lexicalEntries = this.getLexicalEntries(), entries = lexicalEntries, furtleLexer = furtleLexerFromEntries(entries), lexer = furtleLexer, content = this.getContent(), tokens = lexer.tokenise(content);
|
|
45
|
+
const lexicalEntries = this.getLexicalEntries(), entries = lexicalEntries, furtleLexer = (0, _furtle.furtleLexerFromEntries)(entries), lexer = furtleLexer, content = this.getContent(), tokens = lexer.tokenise(content);
|
|
46
46
|
return tokens;
|
|
47
47
|
}
|
|
48
48
|
getParseTree(tokens) {
|
|
49
49
|
let parseTree = null;
|
|
50
|
-
const bnf = this.getBNF(), furtleParser = furtleParserFromBNF(bnf), parser = furtleParser, ruleName = this.getRuleName(), ruleMap = parser.getRuleMap(), rule = ruleMap[ruleName], node = parser.parse(tokens, rule);
|
|
50
|
+
const bnf = this.getBNF(), furtleParser = (0, _furtle.furtleParserFromBNF)(bnf), parser = furtleParser, ruleName = this.getRuleName(), ruleMap = parser.getRuleMap(), rule = ruleMap[ruleName], node = parser.parse(tokens, rule);
|
|
51
51
|
if (node !== null) {
|
|
52
52
|
parseTree = node.asParseTree(tokens);
|
|
53
53
|
}
|
|
@@ -56,7 +56,7 @@ class View extends _easy.Element {
|
|
|
56
56
|
childElements() {
|
|
57
57
|
return /*#__PURE__*/ React.createElement(_easylayout.ColumnsDiv, null, /*#__PURE__*/ React.createElement(_sizeable.default, null, /*#__PURE__*/ React.createElement(_easylayout.RowsDiv, null, /*#__PURE__*/ React.createElement(_subHeading.default, null, "Lexical entries"), /*#__PURE__*/ React.createElement(_lexicalEntries.default, {
|
|
58
58
|
onKeyUp: this.keyUpHandler
|
|
59
|
-
}), /*#__PURE__*/ React.createElement(_subHeading.default, null, "BNF"), /*#__PURE__*/ React.createElement(
|
|
59
|
+
}), /*#__PURE__*/ React.createElement(_subHeading.default, null, "BNF"), /*#__PURE__*/ React.createElement(_bnf1.default, {
|
|
60
60
|
onKeyUp: this.keyUpHandler
|
|
61
61
|
}), /*#__PURE__*/ React.createElement(_subHeading.default, null, "Rule name"), /*#__PURE__*/ React.createElement(_ruleName.default, {
|
|
62
62
|
onKeyUp: this.keyUpHandler
|
|
@@ -66,8 +66,8 @@ class View extends _easy.Element {
|
|
|
66
66
|
}
|
|
67
67
|
initialise() {
|
|
68
68
|
this.assignContext();
|
|
69
|
-
const { initialContent, initialRuleName } = this.constructor, content = initialContent, ruleName = initialRuleName, lexicalEntries =
|
|
70
|
-
this.setBNF(
|
|
69
|
+
const { initialContent, initialRuleName } = this.constructor, content = initialContent, ruleName = initialRuleName, lexicalEntries = _entries.default; ///
|
|
70
|
+
this.setBNF(_bnf.default);
|
|
71
71
|
this.setContent(content);
|
|
72
72
|
this.setRuleName(ruleName);
|
|
73
73
|
this.setLexicalEntries(lexicalEntries);
|
|
@@ -87,4 +87,4 @@ const _default = (0, _easywithstyle.default)(View)`
|
|
|
87
87
|
|
|
88
88
|
`;
|
|
89
89
|
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB3aXRoU3R5bGUgZnJvbSBcImVhc3ktd2l0aC1zdHlsZVwiOyAgLy8vXG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiZWFzeVwiO1xuaW1wb3J0IHsgUm93c0RpdiwgQ29sdW1uRGl2LCBDb2x1bW5zRGl2LCBWZXJ0aWNhbFNwbGl0dGVyRGl2IH0gZnJvbSBcImVhc3ktbGF5b3V0XCI7XG5cbmltcG9ydCBibmYgZnJvbSBcIi4vZnVydGxlL2JuZlwiO1xuaW1wb3J0IGVudHJpZXMgZnJvbSBcIi4vZnVydGxlL2VudHJpZXNcIjtcbmltcG9ydCBTdWJIZWFkaW5nIGZyb20gXCIuL3ZpZXcvc3ViSGVhZGluZ1wiO1xuaW1wb3J0IFNpemVhYmxlRGl2IGZyb20gXCIuL3ZpZXcvZGl2L3NpemVhYmxlXCI7XG5pbXBvcnQgQk5GVGV4dGFyZWEgZnJvbSBcIi4vdmlldy90ZXh0YXJlYS9ibmZcIjtcbmltcG9ydCBSdWxlTmFtZUlucHV0IGZyb20gXCIuL3ZpZXcvaW5wdXQvcnVsZU5hbWVcIjtcbmltcG9ydCBUb2tlbnNUZXh0YXJlYSBmcm9tIFwiLi92aWV3L3RleHRhcmVhL3Rva2Vuc1wiO1xuaW1wb3J0IENvbnRlbnRUZXh0YXJlYSBmcm9tIFwiLi92aWV3L3RleHRhcmVhL2NvbnRlbnRcIjtcbmltcG9ydCBQYXJzZVRyZWVUZXh0YXJlYSBmcm9tIFwiLi92aWV3L3RleHRhcmVhL3BhcnNlVHJlZVwiO1xuaW1wb3J0IExleGljYWxFbnRyaWVzVGV4dGFyZWEgZnJvbSBcIi4vdmlldy90ZXh0YXJlYS9sZXhpY2FsRW50cmllc1wiO1xuXG5pbXBvcnQgeyBmdXJ0bGVQYXJzZXJGcm9tQk5GLCBmdXJ0bGVMZXhlckZyb21FbnRyaWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2Z1cnRsZVwiXG5cbmNsYXNzIFZpZXcgZXh0ZW5kcyBFbGVtZW50IHtcbiAga2V5VXBIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XG4gICAgLy8gdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VucyA9IHRoaXMuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgICBwYXJzZVRyZWUgPSB0aGlzLmdldFBhcnNlVHJlZSh0b2tlbnMpO1xuXG4gICAgICB0aGlzLnNldFRva2Vucyh0b2tlbnMpO1xuXG4gICAgICB0aGlzLnNldFBhcnNlVHJlZShwYXJzZVRyZWUpO1xuICAgIC8vIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgLy9cbiAgICAvLyAgIHRoaXMuY2xlYXJUb2tlbnMoKTtcbiAgICAvL1xuICAgIC8vICAgdGhpcy5jbGVhclBhcnNlVHJlZSgpO1xuICAgIC8vIH1cbiAgfVxuXG4gIGdldFRva2VucygpIHtcbiAgICBjb25zdCBsZXhpY2FsRW50cmllcyA9IHRoaXMuZ2V0TGV4aWNhbEVudHJpZXMoKSxcbiAgICAgICAgICBlbnRyaWVzID0gbGV4aWNhbEVudHJpZXMsIC8vL1xuICAgICAgICAgIGZ1cnRsZUxleGVyID0gZnVydGxlTGV4ZXJGcm9tRW50cmllcyhlbnRyaWVzKSxcbiAgICAgICAgICBsZXhlciA9IGZ1cnRsZUxleGVyLCAgLy8vXG4gICAgICAgICAgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxuICAgICAgICAgIHRva2VucyA9IGxleGVyLnRva2VuaXNlKGNvbnRlbnQpO1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIGdldFBhcnNlVHJlZSh0b2tlbnMpIHtcbiAgICBsZXQgcGFyc2VUcmVlID0gbnVsbDtcblxuICAgIGNvbnN0IGJuZiA9IHRoaXMuZ2V0Qk5GKCksXG4gICAgICAgICAgZnVydGxlUGFyc2VyID0gZnVydGxlUGFyc2VyRnJvbUJORihibmYpLFxuICAgICAgICAgIHBhcnNlciA9IGZ1cnRsZVBhcnNlciwgIC8vL1xuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgIHJ1bGVNYXAgPSBwYXJzZXIuZ2V0UnVsZU1hcCgpLFxuICAgICAgICAgIHJ1bGUgPSBydWxlTWFwW3J1bGVOYW1lXSxcbiAgICAgICAgICBub2RlID0gcGFyc2VyLnBhcnNlKHRva2VucywgcnVsZSk7XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcGFyc2VUcmVlID0gbm9kZS5hc1BhcnNlVHJlZSh0b2tlbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjaGlsZEVsZW1lbnRzKCkge1xuICAgIHJldHVybiAoXG5cbiAgICAgIDxDb2x1bW5zRGl2PlxuICAgICAgICA8U2l6ZWFibGVEaXY+XG4gICAgICAgICAgPFJvd3NEaXY+XG4gICAgICAgICAgICA8U3ViSGVhZGluZz5cbiAgICAgICAgICAgICAgTGV4aWNhbCBlbnRyaWVzXG4gICAgICAgICAgICA8L1N1YkhlYWRpbmc+XG4gICAgICAgICAgICA8TGV4aWNhbEVudHJpZXNUZXh0YXJlYSBvbktleVVwPXt0aGlzLmtleVVwSGFuZGxlcn0gLz5cbiAgICAgICAgICAgIDxTdWJIZWFkaW5nPlxuICAgICAgICAgICAgICBCTkZcbiAgICAgICAgICAgIDwvU3ViSGVhZGluZz5cbiAgICAgICAgICAgIDxCTkZUZXh0YXJlYSBvbktleVVwPXt0aGlzLmtleVVwSGFuZGxlcn0gLz5cbiAgICAgICAgICAgIDxTdWJIZWFkaW5nPlxuICAgICAgICAgICAgICBSdWxlIG5hbWVcbiAgICAgICAgICAgIDwvU3ViSGVhZGluZz5cbiAgICAgICAgICAgIDxSdWxlTmFtZUlucHV0IG9uS2V5VXA9e3RoaXMua2V5VXBIYW5kbGVyfSAvPlxuICAgICAgICAgIDwvUm93c0Rpdj5cbiAgICAgICAgPC9TaXplYWJsZURpdj5cbiAgICAgICAgPFZlcnRpY2FsU3BsaXR0ZXJEaXYgLz5cbiAgICAgICAgPENvbHVtbkRpdj5cbiAgICAgICAgICA8Um93c0Rpdj5cbiAgICAgICAgICAgIDxTdWJIZWFkaW5nPlxuICAgICAgICAgICAgICBDb250ZW50XG4gICAgICAgICAgICA8L1N1YkhlYWRpbmc+XG4gICAgICAgICAgICA8Q29udGVudFRleHRhcmVhIG9uS2V5VXA9e3RoaXMua2V5VXBIYW5kbGVyfSAvPlxuICAgICAgICAgICAgPFN1YkhlYWRpbmc+XG4gICAgICAgICAgICAgIFRva2Vuc1xuICAgICAgICAgICAgPC9TdWJIZWFkaW5nPlxuICAgICAgICAgICAgPFRva2Vuc1RleHRhcmVhIC8+XG4gICAgICAgICAgICA8U3ViSGVhZGluZz5cbiAgICAgICAgICAgICAgUGFyc2UgdHJlZVxuICAgICAgICAgICAgPC9TdWJIZWFkaW5nPlxuICAgICAgICAgICAgPFBhcnNlVHJlZVRleHRhcmVhIC8+XG4gICAgICAgICAgPC9Sb3dzRGl2PlxuICAgICAgICA8L0NvbHVtbkRpdj5cbiAgICAgIDwvQ29sdW1uc0Rpdj5cblxuICAgICk7XG4gIH1cblxuICBpbml0aWFsaXNlKCkge1xuICAgIHRoaXMuYXNzaWduQ29udGV4dCgpO1xuXG4gICAgY29uc3QgeyBpbml0aWFsQ29udGVudCwgaW5pdGlhbFJ1bGVOYW1lIH0gPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIGNvbnRlbnQgPSBpbml0aWFsQ29udGVudCwgLy8vXG4gICAgICAgICAgcnVsZU5hbWUgPSBpbml0aWFsUnVsZU5hbWUsIC8vL1xuICAgICAgICAgIGxleGljYWxFbnRyaWVzID0gZW50cmllczsgLy8vXG5cbiAgICB0aGlzLnNldEJORihibmYpO1xuXG4gICAgdGhpcy5zZXRDb250ZW50KGNvbnRlbnQpO1xuXG4gICAgdGhpcy5zZXRSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICB0aGlzLnNldExleGljYWxFbnRyaWVzKGxleGljYWxFbnRyaWVzKTtcblxuICAgIHRoaXMua2V5VXBIYW5kbGVyKCk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbFJ1bGVOYW1lID0gXCJ2YXJpYWJsZUFzc2lnbm1lbnRzXCI7XG5cbiAgc3RhdGljIGluaXRpYWxDb250ZW50ID0gYEJvb2xlYW4gbWV0YXZhcmlhYmxlQm91bmQgPSBpc01ldGF2YXJpYWJsZUJvdW5kKGZyYW1lTm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5gO1xuXG4gIHN0YXRpYyB0YWdOYW1lID0gXCJkaXZcIjtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZpZXdcIlxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGUoVmlldylgXG5cbiAgcGFkZGluZzogMXJlbTtcbiBcbmA7XG4iXSwibmFtZXMiOlsiVmlldyIsIkVsZW1lbnQiLCJrZXlVcEhhbmRsZXIiLCJldmVudCIsImVsZW1lbnQiLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJwYXJzZVRyZWUiLCJnZXRQYXJzZVRyZWUiLCJzZXRUb2tlbnMiLCJzZXRQYXJzZVRyZWUiLCJsZXhpY2FsRW50cmllcyIsImdldExleGljYWxFbnRyaWVzIiwiZW50cmllcyIsImZ1cnRsZUxleGVyIiwiZnVydGxlTGV4ZXJGcm9tRW50cmllcyIsImxleGVyIiwiY29udGVudCIsImdldENvbnRlbnQiLCJ0b2tlbmlzZSIsImJuZiIsImdldEJORiIsImZ1cnRsZVBhcnNlciIsImZ1cnRsZVBhcnNlckZyb21CTkYiLCJwYXJzZXIiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicnVsZU1hcCIsImdldFJ1bGVNYXAiLCJydWxlIiwibm9kZSIsInBhcnNlIiwiYXNQYXJzZVRyZWUiLCJjaGlsZEVsZW1lbnRzIiwiQ29sdW1uc0RpdiIsIlNpemVhYmxlRGl2IiwiUm93c0RpdiIsIlN1YkhlYWRpbmciLCJMZXhpY2FsRW50cmllc1RleHRhcmVhIiwib25LZXlVcCIsIkJORlRleHRhcmVhIiwiUnVsZU5hbWVJbnB1dCIsIlZlcnRpY2FsU3BsaXR0ZXJEaXYiLCJDb2x1bW5EaXYiLCJDb250ZW50VGV4dGFyZWEiLCJUb2tlbnNUZXh0YXJlYSIsIlBhcnNlVHJlZVRleHRhcmVhIiwiaW5pdGlhbGlzZSIsImFzc2lnbkNvbnRleHQiLCJpbml0aWFsQ29udGVudCIsImluaXRpYWxSdWxlTmFtZSIsInNldEJORiIsInNldENvbnRlbnQiLCJzZXRSdWxlTmFtZSIsInNldExleGljYWxFbnRyaWVzIiwidGFnTmFtZSIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIiwid2l0aFN0eWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0SUE7OztlQUFBOzs7c0VBMUlzQjtzQkFFRTs0QkFDNEM7NERBRXBEO2dFQUNJO21FQUNHO2lFQUNDOzZEQUNBO2lFQUNFOytEQUNDO2dFQUNDO2tFQUNFO3VFQUNLO3dCQUV5Qjs7Ozs7O0FBRTVELE1BQU1BLGFBQWFDLGFBQU87SUFDeEJDLGVBQWUsQ0FBQ0MsT0FBT0M7UUFDckIsUUFBUTtRQUNOLE1BQU1DLFNBQVMsSUFBSSxDQUFDQyxTQUFTLElBQ3ZCQyxZQUFZLElBQUksQ0FBQ0MsWUFBWSxDQUFDSDtRQUVwQyxJQUFJLENBQUNJLFNBQVMsQ0FBQ0o7UUFFZixJQUFJLENBQUNLLFlBQVksQ0FBQ0g7SUFDcEIsb0JBQW9CO0lBQ3BCLHdCQUF3QjtJQUN4QixFQUFFO0lBQ0Ysd0JBQXdCO0lBQ3hCLEVBQUU7SUFDRiwyQkFBMkI7SUFDM0IsSUFBSTtJQUNOLEVBQUM7SUFFREQsWUFBWTtRQUNWLE1BQU1LLGlCQUFpQixJQUFJLENBQUNDLGlCQUFpQixJQUN2Q0MsVUFBVUYsZ0JBQ1ZHLGNBQWNDLElBQUFBLDhCQUFzQixFQUFDRixVQUNyQ0csUUFBUUYsYUFDUkcsVUFBVSxJQUFJLENBQUNDLFVBQVUsSUFDekJiLFNBQVNXLE1BQU1HLFFBQVEsQ0FBQ0Y7UUFFOUIsT0FBT1o7SUFDVDtJQUVBRyxhQUFhSCxNQUFNLEVBQUU7UUFDbkIsSUFBSUUsWUFBWTtRQUVoQixNQUFNYSxNQUFNLElBQUksQ0FBQ0MsTUFBTSxJQUNqQkMsZUFBZUMsSUFBQUEsMkJBQW1CLEVBQUNILE1BQ25DSSxTQUFTRixjQUNURyxXQUFXLElBQUksQ0FBQ0MsV0FBVyxJQUMzQkMsVUFBVUgsT0FBT0ksVUFBVSxJQUMzQkMsT0FBT0YsT0FBTyxDQUFDRixTQUFTLEVBQ3hCSyxPQUFPTixPQUFPTyxLQUFLLENBQUMxQixRQUFRd0I7UUFFbEMsSUFBSUMsU0FBUyxNQUFNO1lBQ2pCdkIsWUFBWXVCLEtBQUtFLFdBQVcsQ0FBQzNCO1FBQy9CO1FBRUEsT0FBT0U7SUFDVDtJQUVBMEIsZ0JBQWdCO1FBQ2QscUJBRUUsb0JBQUNDLHNCQUFVLHNCQUNULG9CQUFDQyxpQkFBVyxzQkFDVixvQkFBQ0MsbUJBQU8sc0JBQ04sb0JBQUNDLG1CQUFVLFFBQUMsa0NBR1osb0JBQUNDLHVCQUFzQjtZQUFDQyxTQUFTLElBQUksQ0FBQ3JDLFlBQVk7MEJBQ2xELG9CQUFDbUMsbUJBQVUsUUFBQyxzQkFHWixvQkFBQ0csYUFBVztZQUFDRCxTQUFTLElBQUksQ0FBQ3JDLFlBQVk7MEJBQ3ZDLG9CQUFDbUMsbUJBQVUsUUFBQyw0QkFHWixvQkFBQ0ksaUJBQWE7WUFBQ0YsU0FBUyxJQUFJLENBQUNyQyxZQUFZOzRCQUc3QyxvQkFBQ3dDLCtCQUFtQix1QkFDcEIsb0JBQUNDLHFCQUFTLHNCQUNSLG9CQUFDUCxtQkFBTyxzQkFDTixvQkFBQ0MsbUJBQVUsUUFBQywwQkFHWixvQkFBQ08sZ0JBQWU7WUFBQ0wsU0FBUyxJQUFJLENBQUNyQyxZQUFZOzBCQUMzQyxvQkFBQ21DLG1CQUFVLFFBQUMseUJBR1osb0JBQUNRLGVBQWMsdUJBQ2Ysb0JBQUNSLG1CQUFVLFFBQUMsNkJBR1osb0JBQUNTLGtCQUFpQjtJQU01QjtJQUVBQyxhQUFhO1FBQ1gsSUFBSSxDQUFDQyxhQUFhO1FBRWxCLE1BQU0sRUFBRUMsY0FBYyxFQUFFQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUN0RGpDLFVBQVVnQyxnQkFDVnhCLFdBQVd5QixpQkFDWHZDLGlCQUFpQkUsZ0JBQU8sRUFBRSxHQUFHO1FBRW5DLElBQUksQ0FBQ3NDLE1BQU0sQ0FBQy9CLFlBQUc7UUFFZixJQUFJLENBQUNnQyxVQUFVLENBQUNuQztRQUVoQixJQUFJLENBQUNvQyxXQUFXLENBQUM1QjtRQUVqQixJQUFJLENBQUM2QixpQkFBaUIsQ0FBQzNDO1FBRXZCLElBQUksQ0FBQ1QsWUFBWTtJQUNuQjtJQUVBLE9BQU9nRCxrQkFBa0Isc0JBQXNCO0lBRS9DLE9BQU9ELGlCQUFpQixDQUFDO0FBQzNCLENBQUMsQ0FBQztJQUVBLE9BQU9NLFVBQVUsTUFBTTtJQUV2QixPQUFPQyxvQkFBb0I7UUFDekJDLFdBQVc7SUFDYixFQUFFO0FBQ0o7TUFFQSxXQUFlQyxJQUFBQSxzQkFBUyxFQUFDMUQsS0FBSyxDQUFDOzs7O0FBSS9CLENBQUMifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "confine", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return confine;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _block = /*#__PURE__*/ _interop_require_default(require("../context/block"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function confine(innerFunction, variables, context) {
|
|
18
|
+
const blockContext = _block.default.fromVariables(variables, context);
|
|
19
|
+
context = blockContext; ///
|
|
20
|
+
return innerFunction(context);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEJsb2NrQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ibG9ja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmluZShpbm5lckZ1bmN0aW9uLCB2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgYmxvY2tDb250ZXh0ID0gQmxvY2tDb250ZXh0LmZyb21WYXJpYWJsZXModmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gYmxvY2tDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG4iXSwibmFtZXMiOlsiY29uZmluZSIsImlubmVyRnVuY3Rpb24iLCJ2YXJpYWJsZXMiLCJjb250ZXh0IiwiYmxvY2tDb250ZXh0IiwiQmxvY2tDb250ZXh0IiwiZnJvbVZhcmlhYmxlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSWdCQTs7O2VBQUFBOzs7OERBRlM7Ozs7OztBQUVsQixTQUFTQSxRQUFRQyxhQUFhLEVBQUVDLFNBQVMsRUFBRUMsT0FBTztJQUN2RCxNQUFNQyxlQUFlQyxjQUFZLENBQUNDLGFBQWEsQ0FBQ0osV0FBV0M7SUFFM0RBLFVBQVVDLGNBQWUsR0FBRztJQUU1QixPQUFPSCxjQUFjRTtBQUN2QiJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-furtle",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.303",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-furtle",
|
|
7
7
|
"description": "Occam's Furtle language.",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.2.10",
|
|
14
|
-
"occam-languages": "^0.0.
|
|
14
|
+
"occam-languages": "^0.0.280",
|
|
15
15
|
"occam-lexers": "^23.1.67",
|
|
16
16
|
"occam-parsers": "^23.1.80",
|
|
17
17
|
"occam-query": "^4.1.183"
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"express": "^4.17.1",
|
|
27
27
|
"juxtapose": "^4.0.138",
|
|
28
28
|
"lively-cli": "^3.0.3",
|
|
29
|
+
"occam-grammar-utilities": "^8.0.440",
|
|
29
30
|
"occam-model": "^1.0.539",
|
|
30
31
|
"occam-server": "^7.0.39",
|
|
31
32
|
"watchful-cli": "^1.7.98"
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { Element, asynchronousUtilities } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import Exception from "../exception";
|
|
6
|
-
import BlockContext from "../context/block";
|
|
7
6
|
|
|
8
7
|
import { define } from "../elements";
|
|
8
|
+
import { confine } from "../utilities/context";
|
|
9
9
|
|
|
10
10
|
const { asyncForEach } = asynchronousUtilities;
|
|
11
11
|
|
|
@@ -48,16 +48,17 @@ export default define(class ReturnBlock extends Element {
|
|
|
48
48
|
throw exception;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
let value;
|
|
52
52
|
|
|
53
|
-
context
|
|
53
|
+
await confine(async (context) => {
|
|
54
|
+
await asyncForEach(this.steps, async (step) => {
|
|
55
|
+
await step.evaluate(context);
|
|
56
|
+
});
|
|
54
57
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
});
|
|
58
|
+
value = this.returnStatement.evaluate(context);
|
|
59
|
+
}, variables, context);
|
|
58
60
|
|
|
59
|
-
const
|
|
60
|
-
valueString = value.getString();
|
|
61
|
+
const valueString = value.getString();
|
|
61
62
|
|
|
62
63
|
context.debug(`Evaluated the '${returnBlockString}' return block as '${valueString}'.`);
|
|
63
64
|
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const bnf = `
|
|
4
|
+
|
|
5
|
+
document ::= ( procedureDeclaration | error )+ ;
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
procedureDeclaration ::= [type] label<NO_WHITESPACE>"(" parameters? ")" returnBlock ;
|
|
10
|
+
|
|
11
|
+
anonymousProcedure ::= [type] "(" parameters? ")" returnBlock ;
|
|
12
|
+
|
|
13
|
+
step ::= variableAssignments
|
|
14
|
+
|
|
15
|
+
| objectAssignment
|
|
16
|
+
|
|
17
|
+
| arrayAssignment
|
|
18
|
+
|
|
19
|
+
;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
variableAssignments ::= [type] variableAssignment ( "," variableAssignment )* ";" ;
|
|
24
|
+
|
|
25
|
+
variableAssignment ::= variable "=" expression ;
|
|
26
|
+
|
|
27
|
+
objectAssignment ::= "{" namedBindings "}" "=" variable ";" ;
|
|
28
|
+
|
|
29
|
+
arrayAssignment ::= "[" bindings "]" "=" variable ";" ;
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
namedBindings ::= namedBinding ( "," namedBinding )* ;
|
|
34
|
+
|
|
35
|
+
parameters ::= parameter ( "," parameter )* ;
|
|
36
|
+
|
|
37
|
+
bindings ::= binding ( "," binding )* ;
|
|
38
|
+
|
|
39
|
+
values ::= value ( "," value )* ;
|
|
40
|
+
|
|
41
|
+
terms ::= term ( "," term )* ;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
namedBinding ::= [type] [name] ( "as" [name] )? ;
|
|
46
|
+
|
|
47
|
+
parameter ::= [type] [name] ;
|
|
48
|
+
|
|
49
|
+
binding ::= [type] [name]
|
|
50
|
+
|
|
51
|
+
| ε
|
|
52
|
+
|
|
53
|
+
;
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
procedureCall ::= reference<NO_WHITESPACE>"(" values? ")" ;
|
|
58
|
+
|
|
59
|
+
returnBlock.. ::= "{" ( step | nonsense )* returnStatement "}" ;
|
|
60
|
+
|
|
61
|
+
nodesQuery ::= "nodesQuery"<NO_WHITESPACE>"(" variable "," [string-literal] ")" ;
|
|
62
|
+
|
|
63
|
+
nodeQuery ::= "nodeQuery"<NO_WHITESPACE>"(" variable "," [string-literal] ")" ;
|
|
64
|
+
|
|
65
|
+
ternary ::= "if" "(" term ")" expression "else" expression ;
|
|
66
|
+
|
|
67
|
+
reduce ::= "reduce"<NO_WHITESPACE>"(" variable "," anonymousProcedure "," value ")" ;
|
|
68
|
+
|
|
69
|
+
every ::= "every"<NO_WHITESPACE>"(" variable "," anonymousProcedure ")" ;
|
|
70
|
+
|
|
71
|
+
some ::= "some"<NO_WHITESPACE>"(" variable "," anonymousProcedure ")" ;
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
returnStatement ::= "return" value ";" ;
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
comparisonTerm ::= term ( "==" | "!=" ) term ;
|
|
80
|
+
|
|
81
|
+
bracketedTerm ::= "(" term ")" ;
|
|
82
|
+
|
|
83
|
+
negatedTerm ::= "!"<NO_WHITESPACE>term ;
|
|
84
|
+
|
|
85
|
+
logicalTerm ::= term ( "||" | "&&" ) term ;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
expression ::= procedureCall
|
|
90
|
+
|
|
91
|
+
| returnBlock
|
|
92
|
+
|
|
93
|
+
| nodesQuery
|
|
94
|
+
|
|
95
|
+
| nodeQuery
|
|
96
|
+
|
|
97
|
+
| ternary
|
|
98
|
+
|
|
99
|
+
| reduce
|
|
100
|
+
|
|
101
|
+
| every
|
|
102
|
+
|
|
103
|
+
| some
|
|
104
|
+
|
|
105
|
+
| term
|
|
106
|
+
|
|
107
|
+
;
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
term ::= comparisonTerm
|
|
112
|
+
|
|
113
|
+
| bracketedTerm
|
|
114
|
+
|
|
115
|
+
| logicalTerm
|
|
116
|
+
|
|
117
|
+
| negatedTerm
|
|
118
|
+
|
|
119
|
+
| primitive
|
|
120
|
+
|
|
121
|
+
| variable
|
|
122
|
+
|
|
123
|
+
;
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
value ::= primitive
|
|
128
|
+
|
|
129
|
+
| variable
|
|
130
|
+
|
|
131
|
+
;
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
primitive ::= [string-literal]
|
|
136
|
+
|
|
137
|
+
| [boolean]
|
|
138
|
+
|
|
139
|
+
| [number]
|
|
140
|
+
|
|
141
|
+
| [null]
|
|
142
|
+
|
|
143
|
+
;
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
reference. ::= [name] ;
|
|
148
|
+
|
|
149
|
+
variable ::= [name] ;
|
|
150
|
+
|
|
151
|
+
label. ::= [name] ;
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
nonsense. ::= [secondary-keyword] | [type] | [null] | [boolean] | [string-literal] | [query] | [special] | [name] | [number] | [unassigned] ;
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
error. ::= . ;
|
|
160
|
+
|
|
161
|
+
`;
|
|
162
|
+
|
|
163
|
+
export default bnf;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const LATIN = "[\\p{Script=Latin}]",
|
|
4
|
+
DECIMAL = "[0-9]";
|
|
5
|
+
|
|
6
|
+
const entries = [
|
|
7
|
+
{
|
|
8
|
+
"type": "^(?:Nodes|Node|String|Number|Boolean)"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "^(?:nodeQuery|nodesQuery)"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"primary-keyword": "^return"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"secondary-keyword": "^(?:if|else|reduce|every|some|as)"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"null": "^null"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"boolean": "^(?:true|false)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"bracket": "^(?:\\{|\\})"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"special": "^(?:!=|==|!|=|,|;|&&|\\|\\||\\(|\\)|\\[|\\])"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": `^${LATIN}+${DECIMAL}*`,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"number": `^${DECIMAL}+`
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"unassigned": "^[^\\s]+"
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
export default entries;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { lexerUtilities } from "occam-lexers";
|
|
4
|
+
import { parserUtilities } from "occam-parsers";
|
|
5
|
+
import { eliminateLeftRecursion } from "occam-grammar-utilities";
|
|
6
|
+
import { FurtleLexer,FurtleParser } from "../../index"; ///
|
|
7
|
+
|
|
8
|
+
const { rulesFromBNF, parserFromRules } = parserUtilities,
|
|
9
|
+
{ lexerFromRules, rulesFromEntries } = lexerUtilities;
|
|
10
|
+
|
|
11
|
+
export function furtleLexerFromEntries(Class, entries) {
|
|
12
|
+
if (entries === undefined) {
|
|
13
|
+
entries = Class; ///
|
|
14
|
+
|
|
15
|
+
Class = FurtleLexer; ///
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let rules;
|
|
19
|
+
|
|
20
|
+
rules = rulesFromEntries(entries);
|
|
21
|
+
|
|
22
|
+
const furtleLexer = lexerFromRules(Class, rules);
|
|
23
|
+
|
|
24
|
+
return furtleLexer;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function furtleParserFromBNF(Class, bnf) {
|
|
28
|
+
if (bnf === undefined) {
|
|
29
|
+
bnf = Class; ///
|
|
30
|
+
|
|
31
|
+
Class = FurtleParser; ///
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let rules;
|
|
35
|
+
|
|
36
|
+
rules = rulesFromBNF(bnf);
|
|
37
|
+
|
|
38
|
+
rules = eliminateLeftRecursion(rules); ///
|
|
39
|
+
|
|
40
|
+
const furtleParser = parserFromRules(Class, rules);
|
|
41
|
+
|
|
42
|
+
return furtleParser;
|
|
43
|
+
}
|
package/src/example/view.js
CHANGED
|
@@ -4,8 +4,9 @@ import withStyle from "easy-with-style"; ///
|
|
|
4
4
|
|
|
5
5
|
import { Element } from "easy";
|
|
6
6
|
import { RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv } from "easy-layout";
|
|
7
|
-
import { FurtleLexer,FurtleParser, lexersUtilities, parsersUtilities } from "../index"; ///
|
|
8
7
|
|
|
8
|
+
import bnf from "./furtle/bnf";
|
|
9
|
+
import entries from "./furtle/entries";
|
|
9
10
|
import SubHeading from "./view/subHeading";
|
|
10
11
|
import SizeableDiv from "./view/div/sizeable";
|
|
11
12
|
import BNFTextarea from "./view/textarea/bnf";
|
|
@@ -15,11 +16,7 @@ import ContentTextarea from "./view/textarea/content";
|
|
|
15
16
|
import ParseTreeTextarea from "./view/textarea/parseTree";
|
|
16
17
|
import LexicalEntriesTextarea from "./view/textarea/lexicalEntries";
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
{ furtleLexerFromEntries } = lexersUtilities;
|
|
20
|
-
|
|
21
|
-
const { bnf } = FurtleParser,
|
|
22
|
-
{ entries } = FurtleLexer;
|
|
19
|
+
import { furtleParserFromBNF, furtleLexerFromEntries } from "./utilities/furtle"
|
|
23
20
|
|
|
24
21
|
class View extends Element {
|
|
25
22
|
keyUpHandler = (event, element) => {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import BlockContext from "../context/block";
|
|
4
|
+
|
|
5
|
+
export function confine(innerFunction, variables, context) {
|
|
6
|
+
const blockContext = BlockContext.fromVariables(variables, context);
|
|
7
|
+
|
|
8
|
+
context = blockContext; ///
|
|
9
|
+
|
|
10
|
+
return innerFunction(context);
|
|
11
|
+
}
|