@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/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
+