@creationix/rex 0.1.0
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/LICENSE +21 -0
- package/README.md +50 -0
- package/package.json +56 -0
- package/rex-cli.ts +3 -0
- package/rex-compile.ts +196 -0
- package/rex.ohm +408 -0
- package/rex.ohm-bundle.d.ts +195 -0
- package/rex.ohm-bundle.js +1 -0
- package/rex.ts +2418 -0
- package/rexc-interpreter.ts +848 -0
package/rex.ohm
ADDED
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
Rex {
|
|
2
|
+
space += comment
|
|
3
|
+
|
|
4
|
+
Program
|
|
5
|
+
= Expr*
|
|
6
|
+
|
|
7
|
+
Expr
|
|
8
|
+
= AssignExpr
|
|
9
|
+
|
|
10
|
+
AssignExpr
|
|
11
|
+
= Place AssignOp AssignExpr -- assign
|
|
12
|
+
| ExistenceExpr -- value
|
|
13
|
+
|
|
14
|
+
ExistenceExpr
|
|
15
|
+
= ExistenceExpr AndKw BitExpr -- and
|
|
16
|
+
| ExistenceExpr OrKw BitExpr -- or
|
|
17
|
+
| BitExpr -- value
|
|
18
|
+
|
|
19
|
+
BitExpr
|
|
20
|
+
= BitExpr "&" CompareExpr -- and
|
|
21
|
+
| BitExpr "^" CompareExpr -- xor
|
|
22
|
+
| BitExpr "|" CompareExpr -- or
|
|
23
|
+
| CompareExpr -- value
|
|
24
|
+
|
|
25
|
+
CompareExpr
|
|
26
|
+
= AddExpr CompareOp AddExpr -- binary
|
|
27
|
+
| AddExpr -- value
|
|
28
|
+
|
|
29
|
+
AddExpr
|
|
30
|
+
= AddExpr "+" MulExpr -- add
|
|
31
|
+
| AddExpr "-" MulExpr -- sub
|
|
32
|
+
| MulExpr -- value
|
|
33
|
+
|
|
34
|
+
MulExpr
|
|
35
|
+
= MulExpr "*" UnaryExpr -- mul
|
|
36
|
+
| MulExpr "/" UnaryExpr -- div
|
|
37
|
+
| MulExpr "%" UnaryExpr -- mod
|
|
38
|
+
| UnaryExpr -- value
|
|
39
|
+
|
|
40
|
+
UnaryExpr
|
|
41
|
+
= "-" ~digit UnaryExpr -- neg
|
|
42
|
+
| "~" UnaryExpr -- not
|
|
43
|
+
| DeleteKw Place -- delete
|
|
44
|
+
| PostfixExpr -- value
|
|
45
|
+
|
|
46
|
+
PostfixExpr
|
|
47
|
+
= PrimaryExpr PostfixTail* -- chain
|
|
48
|
+
|
|
49
|
+
PostfixTail
|
|
50
|
+
= "." keyName -- navStatic
|
|
51
|
+
| ".(" Expr ")" -- navDynamic
|
|
52
|
+
| "(" ")" -- callEmpty
|
|
53
|
+
| "(" Elements<Expr> ")" -- call
|
|
54
|
+
|
|
55
|
+
PrimaryExpr
|
|
56
|
+
= ConditionalExpr
|
|
57
|
+
| DoExpr
|
|
58
|
+
| ForExpr
|
|
59
|
+
| BreakKw -- break
|
|
60
|
+
| ContinueKw -- continue
|
|
61
|
+
| Array
|
|
62
|
+
| Object
|
|
63
|
+
| String
|
|
64
|
+
| Number
|
|
65
|
+
| StringKw -- stringPred
|
|
66
|
+
| NumberKw -- numberPred
|
|
67
|
+
| ObjectKw -- objectPred
|
|
68
|
+
| ArrayKw -- arrayPred
|
|
69
|
+
| BooleanKw -- booleanPred
|
|
70
|
+
| TrueKw -- true
|
|
71
|
+
| FalseKw -- false
|
|
72
|
+
| NullKw -- null
|
|
73
|
+
| UndefinedKw -- undefined
|
|
74
|
+
| SelfExpr -- self
|
|
75
|
+
| identifier -- identifier
|
|
76
|
+
| "(" Expr ")" -- group
|
|
77
|
+
|
|
78
|
+
SelfExpr
|
|
79
|
+
= SelfKw "@" Number -- depth
|
|
80
|
+
| SelfKw -- plain
|
|
81
|
+
|
|
82
|
+
Place
|
|
83
|
+
= PlaceBase PlaceTail*
|
|
84
|
+
|
|
85
|
+
PlaceBase
|
|
86
|
+
= identifier
|
|
87
|
+
| SelfKw
|
|
88
|
+
|
|
89
|
+
PlaceTail
|
|
90
|
+
= "." keyName -- navStatic
|
|
91
|
+
| ".(" Expr ")" -- navDynamic
|
|
92
|
+
|
|
93
|
+
ConditionalExpr
|
|
94
|
+
= ConditionalHead Expr DoKw Block ConditionalElse? EndKw
|
|
95
|
+
|
|
96
|
+
ConditionalHead
|
|
97
|
+
= WhenKw
|
|
98
|
+
| UnlessKw
|
|
99
|
+
|
|
100
|
+
ConditionalElse
|
|
101
|
+
= ElseKw ConditionalHead Expr DoKw Block ConditionalElse? -- elseChain
|
|
102
|
+
| ElseKw Block -- else
|
|
103
|
+
|
|
104
|
+
ForExpr
|
|
105
|
+
= ForKw BindingExpr DoKw Block EndKw
|
|
106
|
+
|
|
107
|
+
DoExpr
|
|
108
|
+
= DoKw Block EndKw
|
|
109
|
+
|
|
110
|
+
BindingExpr
|
|
111
|
+
= IterBinding
|
|
112
|
+
| Expr
|
|
113
|
+
|
|
114
|
+
Block
|
|
115
|
+
= Expr*
|
|
116
|
+
|
|
117
|
+
Array
|
|
118
|
+
= "[" "]" -- empty
|
|
119
|
+
| "[" BindingExpr ";" Expr "]" -- comprehension
|
|
120
|
+
| "[" Elements<Expr> "]" -- values
|
|
121
|
+
|
|
122
|
+
Object
|
|
123
|
+
= "{" "}" -- empty
|
|
124
|
+
| "{" BindingExpr ";" ObjKey ":" Expr "}" -- comprehension
|
|
125
|
+
| "{" Elements<Pair> "}" -- pairs
|
|
126
|
+
|
|
127
|
+
IterBinding
|
|
128
|
+
= identifier "," identifier "in" Expr -- keyValueIn
|
|
129
|
+
| identifier "in" Expr -- valueIn
|
|
130
|
+
| identifier "of" Expr -- keyOf
|
|
131
|
+
|
|
132
|
+
Pair
|
|
133
|
+
= ObjKey ":" Expr
|
|
134
|
+
|
|
135
|
+
ObjKey
|
|
136
|
+
= keyName -- bare
|
|
137
|
+
| Number -- number
|
|
138
|
+
| String -- string
|
|
139
|
+
| "(" Expr ")" -- computed
|
|
140
|
+
|
|
141
|
+
keyName
|
|
142
|
+
= nameHead nameTail*
|
|
143
|
+
|
|
144
|
+
CompareOp
|
|
145
|
+
= "=="
|
|
146
|
+
| "!="
|
|
147
|
+
| ">="
|
|
148
|
+
| ">"
|
|
149
|
+
| "<="
|
|
150
|
+
| "<"
|
|
151
|
+
|
|
152
|
+
AssignOp
|
|
153
|
+
= "="
|
|
154
|
+
| "+="
|
|
155
|
+
| "-="
|
|
156
|
+
| "*="
|
|
157
|
+
| "/="
|
|
158
|
+
| "%="
|
|
159
|
+
| "&="
|
|
160
|
+
| "|="
|
|
161
|
+
| "^="
|
|
162
|
+
|
|
163
|
+
Elements<item>
|
|
164
|
+
= item (","? item)* ","?
|
|
165
|
+
|
|
166
|
+
identifier
|
|
167
|
+
= ~reserved nameHead nameTail*
|
|
168
|
+
|
|
169
|
+
nameHead
|
|
170
|
+
= letter
|
|
171
|
+
| "_"
|
|
172
|
+
|
|
173
|
+
nameTail
|
|
174
|
+
= letter
|
|
175
|
+
| digit
|
|
176
|
+
| "_"
|
|
177
|
+
| "-"
|
|
178
|
+
|
|
179
|
+
reserved
|
|
180
|
+
= trueTok
|
|
181
|
+
| falseTok
|
|
182
|
+
| nullTok
|
|
183
|
+
| undefinedTok
|
|
184
|
+
| selfTok
|
|
185
|
+
| whenTok
|
|
186
|
+
| unlessTok
|
|
187
|
+
| forTok
|
|
188
|
+
| inTok
|
|
189
|
+
| ofTok
|
|
190
|
+
| doTok
|
|
191
|
+
| elseTok
|
|
192
|
+
| endTok
|
|
193
|
+
| breakTok
|
|
194
|
+
| continueTok
|
|
195
|
+
| andTok
|
|
196
|
+
| orTok
|
|
197
|
+
| deleteTok
|
|
198
|
+
| stringTok
|
|
199
|
+
| numberTok
|
|
200
|
+
| objectTok
|
|
201
|
+
| arrayTok
|
|
202
|
+
| booleanTok
|
|
203
|
+
|
|
204
|
+
TrueKw
|
|
205
|
+
= trueTok
|
|
206
|
+
|
|
207
|
+
FalseKw
|
|
208
|
+
= falseTok
|
|
209
|
+
|
|
210
|
+
NullKw
|
|
211
|
+
= nullTok
|
|
212
|
+
|
|
213
|
+
UndefinedKw
|
|
214
|
+
= undefinedTok
|
|
215
|
+
|
|
216
|
+
SelfKw
|
|
217
|
+
= selfTok
|
|
218
|
+
|
|
219
|
+
WhenKw
|
|
220
|
+
= whenTok
|
|
221
|
+
|
|
222
|
+
UnlessKw
|
|
223
|
+
= unlessTok
|
|
224
|
+
|
|
225
|
+
ForKw
|
|
226
|
+
= forTok
|
|
227
|
+
|
|
228
|
+
DoKw
|
|
229
|
+
= doTok
|
|
230
|
+
|
|
231
|
+
ElseKw
|
|
232
|
+
= elseTok
|
|
233
|
+
|
|
234
|
+
EndKw
|
|
235
|
+
= endTok
|
|
236
|
+
|
|
237
|
+
BreakKw
|
|
238
|
+
= breakTok
|
|
239
|
+
|
|
240
|
+
ContinueKw
|
|
241
|
+
= continueTok
|
|
242
|
+
|
|
243
|
+
AndKw
|
|
244
|
+
= andTok
|
|
245
|
+
|
|
246
|
+
OrKw
|
|
247
|
+
= orTok
|
|
248
|
+
|
|
249
|
+
DeleteKw
|
|
250
|
+
= deleteTok
|
|
251
|
+
|
|
252
|
+
StringKw
|
|
253
|
+
= stringTok
|
|
254
|
+
|
|
255
|
+
NumberKw
|
|
256
|
+
= numberTok
|
|
257
|
+
|
|
258
|
+
ObjectKw
|
|
259
|
+
= objectTok
|
|
260
|
+
|
|
261
|
+
ArrayKw
|
|
262
|
+
= arrayTok
|
|
263
|
+
|
|
264
|
+
BooleanKw
|
|
265
|
+
= booleanTok
|
|
266
|
+
|
|
267
|
+
trueTok
|
|
268
|
+
= "true" ~nameTail
|
|
269
|
+
|
|
270
|
+
falseTok
|
|
271
|
+
= "false" ~nameTail
|
|
272
|
+
|
|
273
|
+
nullTok
|
|
274
|
+
= "null" ~nameTail
|
|
275
|
+
|
|
276
|
+
undefinedTok
|
|
277
|
+
= "undefined" ~nameTail
|
|
278
|
+
|
|
279
|
+
selfTok
|
|
280
|
+
= "self" ~nameTail
|
|
281
|
+
|
|
282
|
+
whenTok
|
|
283
|
+
= "when" ~nameTail
|
|
284
|
+
|
|
285
|
+
unlessTok
|
|
286
|
+
= "unless" ~nameTail
|
|
287
|
+
|
|
288
|
+
forTok
|
|
289
|
+
= "for" ~nameTail
|
|
290
|
+
|
|
291
|
+
inTok
|
|
292
|
+
= "in" ~nameTail
|
|
293
|
+
|
|
294
|
+
ofTok
|
|
295
|
+
= "of" ~nameTail
|
|
296
|
+
|
|
297
|
+
doTok
|
|
298
|
+
= "do" ~nameTail
|
|
299
|
+
|
|
300
|
+
elseTok
|
|
301
|
+
= "else" ~nameTail
|
|
302
|
+
|
|
303
|
+
endTok
|
|
304
|
+
= "end" ~nameTail
|
|
305
|
+
|
|
306
|
+
breakTok
|
|
307
|
+
= "break" ~nameTail
|
|
308
|
+
|
|
309
|
+
continueTok
|
|
310
|
+
= "continue" ~nameTail
|
|
311
|
+
|
|
312
|
+
andTok
|
|
313
|
+
= "and" ~nameTail
|
|
314
|
+
|
|
315
|
+
orTok
|
|
316
|
+
= "or" ~nameTail
|
|
317
|
+
|
|
318
|
+
deleteTok
|
|
319
|
+
= "delete" ~nameTail
|
|
320
|
+
|
|
321
|
+
stringTok
|
|
322
|
+
= "string" ~nameTail
|
|
323
|
+
|
|
324
|
+
numberTok
|
|
325
|
+
= "number" ~nameTail
|
|
326
|
+
|
|
327
|
+
objectTok
|
|
328
|
+
= "object" ~nameTail
|
|
329
|
+
|
|
330
|
+
arrayTok
|
|
331
|
+
= "array" ~nameTail
|
|
332
|
+
|
|
333
|
+
booleanTok
|
|
334
|
+
= "boolean" ~nameTail
|
|
335
|
+
|
|
336
|
+
String
|
|
337
|
+
= DQuotedString
|
|
338
|
+
| SQuotedString
|
|
339
|
+
|
|
340
|
+
DQuotedString
|
|
341
|
+
= "\"" dStringChar* "\""
|
|
342
|
+
|
|
343
|
+
dStringChar
|
|
344
|
+
= ~("\"" | "\\") any
|
|
345
|
+
| escape
|
|
346
|
+
|
|
347
|
+
SQuotedString
|
|
348
|
+
= "'" sStringChar* "'"
|
|
349
|
+
|
|
350
|
+
sStringChar
|
|
351
|
+
= ~("'" | "\\") any
|
|
352
|
+
| escape
|
|
353
|
+
|
|
354
|
+
escape
|
|
355
|
+
= "\\" (escapeChar | hexEscape | unicodeEscape)
|
|
356
|
+
|
|
357
|
+
escapeChar
|
|
358
|
+
= "\"" | "'" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "0"
|
|
359
|
+
|
|
360
|
+
hexEscape
|
|
361
|
+
= "x" hex hex
|
|
362
|
+
|
|
363
|
+
unicodeEscape
|
|
364
|
+
= "u" hex hex hex hex
|
|
365
|
+
|
|
366
|
+
hex
|
|
367
|
+
= digit
|
|
368
|
+
| "A".."F"
|
|
369
|
+
| "a".."f"
|
|
370
|
+
|
|
371
|
+
Number
|
|
372
|
+
= hexNumber
|
|
373
|
+
| binaryNumber
|
|
374
|
+
| decimalNumber
|
|
375
|
+
|
|
376
|
+
hexNumber
|
|
377
|
+
= "-"? "0x" hex+
|
|
378
|
+
|
|
379
|
+
binaryNumber
|
|
380
|
+
= "-"? "0b" bit+
|
|
381
|
+
|
|
382
|
+
decimalNumber
|
|
383
|
+
= "-"? decimalInteger ("." digit+)? exponent?
|
|
384
|
+
|
|
385
|
+
decimalInteger
|
|
386
|
+
= nonZeroDigit digit* -- nonZero
|
|
387
|
+
| "0" -- zero
|
|
388
|
+
|
|
389
|
+
bit
|
|
390
|
+
= "0" | "1"
|
|
391
|
+
|
|
392
|
+
exponent
|
|
393
|
+
= ("e" | "E") ("+" | "-")? digit+
|
|
394
|
+
|
|
395
|
+
nonZeroDigit
|
|
396
|
+
= "1".."9"
|
|
397
|
+
|
|
398
|
+
comment
|
|
399
|
+
= lineComment
|
|
400
|
+
| blockComment
|
|
401
|
+
|
|
402
|
+
lineComment
|
|
403
|
+
= "//" (~"\n" any)* "\n"?
|
|
404
|
+
|
|
405
|
+
blockComment
|
|
406
|
+
= "/*" (~"*/" any)* "*/"
|
|
407
|
+
}
|
|
408
|
+
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// AUTOGENERATED FILE
|
|
2
|
+
// This file was generated from rex.ohm by `ohm generateBundles`.
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
BaseActionDict,
|
|
6
|
+
Grammar,
|
|
7
|
+
IterationNode,
|
|
8
|
+
Node,
|
|
9
|
+
NonterminalNode,
|
|
10
|
+
Semantics,
|
|
11
|
+
TerminalNode
|
|
12
|
+
} from 'ohm-js';
|
|
13
|
+
|
|
14
|
+
export interface RexActionDict<T> extends BaseActionDict<T> {
|
|
15
|
+
space?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T;
|
|
16
|
+
Program?: (this: NonterminalNode, arg0: IterationNode) => T;
|
|
17
|
+
Expr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
18
|
+
AssignExpr_assign?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
19
|
+
AssignExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
20
|
+
AssignExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
21
|
+
ExistenceExpr_and?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
22
|
+
ExistenceExpr_or?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
23
|
+
ExistenceExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
24
|
+
ExistenceExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
25
|
+
BitExpr_and?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
26
|
+
BitExpr_xor?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
27
|
+
BitExpr_or?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
28
|
+
BitExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
29
|
+
BitExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
30
|
+
CompareExpr_binary?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
31
|
+
CompareExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
32
|
+
CompareExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
33
|
+
AddExpr_add?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
34
|
+
AddExpr_sub?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
35
|
+
AddExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
36
|
+
AddExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
37
|
+
MulExpr_mul?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
38
|
+
MulExpr_div?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
39
|
+
MulExpr_mod?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
40
|
+
MulExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
41
|
+
MulExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
42
|
+
UnaryExpr_neg?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode) => T;
|
|
43
|
+
UnaryExpr_not?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode) => T;
|
|
44
|
+
UnaryExpr_delete?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode) => T;
|
|
45
|
+
UnaryExpr_value?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
46
|
+
UnaryExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
47
|
+
PostfixExpr_chain?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
|
|
48
|
+
PostfixExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
49
|
+
PostfixTail_navStatic?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode) => T;
|
|
50
|
+
PostfixTail_navDynamic?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
51
|
+
PostfixTail_callEmpty?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode) => T;
|
|
52
|
+
PostfixTail_call?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
53
|
+
PostfixTail?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
54
|
+
PrimaryExpr_break?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
55
|
+
PrimaryExpr_continue?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
56
|
+
PrimaryExpr_stringPred?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
57
|
+
PrimaryExpr_numberPred?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
58
|
+
PrimaryExpr_objectPred?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
59
|
+
PrimaryExpr_arrayPred?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
60
|
+
PrimaryExpr_booleanPred?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
61
|
+
PrimaryExpr_true?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
62
|
+
PrimaryExpr_false?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
63
|
+
PrimaryExpr_null?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
64
|
+
PrimaryExpr_undefined?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
65
|
+
PrimaryExpr_self?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
66
|
+
PrimaryExpr_identifier?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
67
|
+
PrimaryExpr_group?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
68
|
+
PrimaryExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
69
|
+
SelfExpr_depth?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
70
|
+
SelfExpr_plain?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
71
|
+
SelfExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
72
|
+
Place?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
|
|
73
|
+
PlaceBase?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
74
|
+
PlaceTail_navStatic?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode) => T;
|
|
75
|
+
PlaceTail_navDynamic?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
76
|
+
PlaceTail?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
77
|
+
ConditionalExpr?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: IterationNode, arg5: NonterminalNode) => T;
|
|
78
|
+
ConditionalHead?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
79
|
+
ConditionalElse_elseChain?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: IterationNode) => T;
|
|
80
|
+
ConditionalElse_else?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode) => T;
|
|
81
|
+
ConditionalElse?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
82
|
+
ForExpr?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode) => T;
|
|
83
|
+
DoExpr?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
84
|
+
BindingExpr?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
85
|
+
Block?: (this: NonterminalNode, arg0: IterationNode) => T;
|
|
86
|
+
Array_empty?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode) => T;
|
|
87
|
+
Array_comprehension?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode) => T;
|
|
88
|
+
Array_values?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
89
|
+
Array?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
90
|
+
Object_empty?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode) => T;
|
|
91
|
+
Object_comprehension?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode, arg5: NonterminalNode, arg6: TerminalNode) => T;
|
|
92
|
+
Object_pairs?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
93
|
+
Object?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
94
|
+
IterBinding_keyValueIn?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode) => T;
|
|
95
|
+
IterBinding_valueIn?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
96
|
+
IterBinding_keyOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
97
|
+
IterBinding?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
98
|
+
Pair?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T;
|
|
99
|
+
ObjKey_bare?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
100
|
+
ObjKey_number?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
101
|
+
ObjKey_string?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
102
|
+
ObjKey_computed?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T;
|
|
103
|
+
ObjKey?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
104
|
+
keyName?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
|
|
105
|
+
CompareOp?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
106
|
+
AssignOp?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
107
|
+
Elements?: (this: NonterminalNode, arg0: Node, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T;
|
|
108
|
+
identifier?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
|
|
109
|
+
nameHead?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T;
|
|
110
|
+
nameTail?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T;
|
|
111
|
+
reserved?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
112
|
+
TrueKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
113
|
+
FalseKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
114
|
+
NullKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
115
|
+
UndefinedKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
116
|
+
SelfKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
117
|
+
WhenKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
118
|
+
UnlessKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
119
|
+
ForKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
120
|
+
DoKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
121
|
+
ElseKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
122
|
+
EndKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
123
|
+
BreakKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
124
|
+
ContinueKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
125
|
+
AndKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
126
|
+
OrKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
127
|
+
DeleteKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
128
|
+
StringKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
129
|
+
NumberKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
130
|
+
ObjectKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
131
|
+
ArrayKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
132
|
+
BooleanKw?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
133
|
+
trueTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
134
|
+
falseTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
135
|
+
nullTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
136
|
+
undefinedTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
137
|
+
selfTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
138
|
+
whenTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
139
|
+
unlessTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
140
|
+
forTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
141
|
+
inTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
142
|
+
ofTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
143
|
+
doTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
144
|
+
elseTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
145
|
+
endTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
146
|
+
breakTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
147
|
+
continueTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
148
|
+
andTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
149
|
+
orTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
150
|
+
deleteTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
151
|
+
stringTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
152
|
+
numberTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
153
|
+
objectTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
154
|
+
arrayTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
155
|
+
booleanTok?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
156
|
+
String?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
157
|
+
DQuotedString?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: TerminalNode) => T;
|
|
158
|
+
dStringChar?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
159
|
+
SQuotedString?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: TerminalNode) => T;
|
|
160
|
+
sStringChar?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
161
|
+
escape?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode) => T;
|
|
162
|
+
escapeChar?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
163
|
+
hexEscape?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: NonterminalNode) => T;
|
|
164
|
+
unicodeEscape?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode) => T;
|
|
165
|
+
hex?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T;
|
|
166
|
+
Number?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
167
|
+
hexNumber?: (this: NonterminalNode, arg0: IterationNode, arg1: TerminalNode, arg2: IterationNode) => T;
|
|
168
|
+
binaryNumber?: (this: NonterminalNode, arg0: IterationNode, arg1: TerminalNode, arg2: IterationNode) => T;
|
|
169
|
+
decimalNumber?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: IterationNode, arg3: IterationNode, arg4: IterationNode) => T;
|
|
170
|
+
decimalInteger_nonZero?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T;
|
|
171
|
+
decimalInteger_zero?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
172
|
+
decimalInteger?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
173
|
+
bit?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
174
|
+
exponent?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T;
|
|
175
|
+
nonZeroDigit?: (this: NonterminalNode, arg0: TerminalNode) => T;
|
|
176
|
+
comment?: (this: NonterminalNode, arg0: NonterminalNode) => T;
|
|
177
|
+
lineComment?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T;
|
|
178
|
+
blockComment?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: TerminalNode) => T;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface RexSemantics extends Semantics {
|
|
182
|
+
addOperation<T>(name: string, actionDict: RexActionDict<T>): this;
|
|
183
|
+
extendOperation<T>(name: string, actionDict: RexActionDict<T>): this;
|
|
184
|
+
addAttribute<T>(name: string, actionDict: RexActionDict<T>): this;
|
|
185
|
+
extendAttribute<T>(name: string, actionDict: RexActionDict<T>): this;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface RexGrammar extends Grammar {
|
|
189
|
+
createSemantics(): RexSemantics;
|
|
190
|
+
extendSemantics(superSemantics: RexSemantics): RexSemantics;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
declare const grammar: RexGrammar;
|
|
194
|
+
export default grammar;
|
|
195
|
+
|