depager 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/bin/depager +1 -0
- data/data/depager/misc/depager-mode.el +35 -24
- data/data/depager/pre-setup.rb +3 -0
- data/examples/Rakefile +36 -0
- data/examples/c89/c89.dr +496 -0
- data/examples/c89/c89.tab.rb +2197 -0
- data/examples/c89/test.c89 +10 -0
- data/{data/depager/sample → examples}/extension/paction.dr +0 -0
- data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
- data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
- data/examples/pl0d/pl0ds.tab.rb +1702 -0
- data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
- data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
- data/examples/sample_calc/calc.action.tab.rb +283 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
- data/examples/sample_calc/calc.astdf.tab.rb +476 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
- data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
- data/examples/sample_calc/calc.astl.tab.rb +501 -0
- data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
- data/examples/sample_calc/calc.atree.tab.rb +277 -0
- data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
- data/examples/sample_calc/calc.cst.tab.rb +478 -0
- data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
- data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
- data/examples/sample_calc/calc.lex.tab.rb +192 -0
- data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
- data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
- data/examples/sample_calc/calc.tab.rb +183 -0
- data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
- data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
- data/examples/sample_calc/test.calc +1 -0
- data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
- data/examples/slex_test/divreg.slex.tab.rb +227 -0
- data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
- data/examples/slex_test/ljoin.slex.tab.rb +277 -0
- data/examples/slex_test/test.divreg +1 -0
- data/examples/slex_test/test.ljoin +3 -0
- data/lib/depager.rb +194 -127
- data/lib/depager/Rakefile +8 -4
- data/lib/depager/ast_base.dr +3 -3
- data/lib/depager/ast_base.rb +197 -144
- data/lib/depager/atree.rb +55 -36
- data/lib/depager/cst.dr +6 -4
- data/lib/depager/cst.rb +69 -49
- data/lib/depager/grammar.rb +136 -0
- data/lib/depager/lex.dr +22 -8
- data/lib/depager/lex.rb +94 -53
- data/lib/depager/lr.rb +101 -167
- data/lib/depager/parse_action.rb +1 -1
- data/lib/depager/parser.rb +34 -7
- data/lib/depager/slex.dr +76 -36
- data/lib/depager/slex.rb +345 -151
- data/lib/depager/srp.rb +3 -2
- data/lib/depager/template/extension_lalr_slave.erb +1 -1
- data/lib/depager/template/single_lalr_parser.erb +1 -1
- data/lib/depager/utils.rb +2 -1
- data/lib/depager/version.rb +2 -2
- metadata +42 -28
- data/Manifest.txt +0 -52
- data/lib/depager/psrtmpl.rb +0 -33
data/lib/depager/slex.rb
CHANGED
@@ -61,30 +61,45 @@ class StatefulLexerExtension #:nodoc:all
|
|
61
61
|
def postRhs
|
62
62
|
j = 0
|
63
63
|
rhs = g_parser.rhs
|
64
|
-
@ins.each do |i,
|
64
|
+
@ins.each do |i, option_list, debug|
|
65
65
|
state_name = "#{lhs_name}_#{nrhs}_#{i}"
|
66
|
+
m_name = "_lex_#{state_name}"
|
66
67
|
if i != rhs.size
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
@addition << [
|
68
|
+
nt_name = "__#{state_name}__"
|
69
|
+
isym = g_parser.add_nonterm(nt_name)
|
70
|
+
g_parser.rhs_insert_sym(i+j, isym, nt_name)
|
71
|
+
@addition << [ isym, m_name ]
|
71
72
|
j += 1
|
72
73
|
else
|
73
|
-
@on_reduce[nrules] =
|
74
|
+
@on_reduce[nrules] = ':'+m_name
|
75
|
+
end
|
76
|
+
|
77
|
+
codes = option_list.map do |k, m|
|
78
|
+
case k
|
79
|
+
when :GOTO
|
80
|
+
"@basis.lex_state = #{m}" <<
|
81
|
+
(debug ? ";warn 'MODE:->#{m}'" : '')
|
82
|
+
when :ADD
|
83
|
+
"@basis.lex_context[#{m}] = true" <<
|
84
|
+
(debug ? ";warn 'CONTEXT:+#{m}/\#{@context.inspect}'" : '')
|
85
|
+
when :SUB
|
86
|
+
"@basis.lex_context.delete #{m}" <<
|
87
|
+
(debug ? ";warn 'CONTEXT:-#{m}'/\#{@context.inspect}" : '')
|
88
|
+
else
|
89
|
+
end
|
74
90
|
end
|
75
91
|
@optouter.push << %{
|
76
|
-
def
|
77
|
-
|
92
|
+
def #{m_name} val
|
93
|
+
#{codes.join("\n ")}
|
78
94
|
end
|
79
95
|
}
|
80
96
|
end
|
81
97
|
@ins.clear
|
82
98
|
end
|
83
99
|
def postRhsList
|
84
|
-
@addition.each do |
|
85
|
-
g_parser.
|
86
|
-
|
87
|
-
@on_reduce[nrules] = val
|
100
|
+
@addition.each do |isym, m_name|
|
101
|
+
g_parser.add_rule isym, []
|
102
|
+
@on_reduce[nrules] = ':'+m_name
|
88
103
|
end
|
89
104
|
@addition.clear
|
90
105
|
end
|
@@ -99,7 +114,7 @@ end
|
|
99
114
|
module D4StatefulLexerExtension_prerulelist #:nodoc:all
|
100
115
|
end
|
101
116
|
|
102
|
-
class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
117
|
+
class StatefulLexerExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
|
103
118
|
include Depager::ExtensionUtils
|
104
119
|
|
105
120
|
include ActionParser
|
@@ -115,7 +130,9 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
115
130
|
[ 4, 2 ],
|
116
131
|
[ 3, 1 ],
|
117
132
|
[ 3, 2 ],
|
118
|
-
[ 5,
|
133
|
+
[ 5, 3 ],
|
134
|
+
[ 7, 0 ],
|
135
|
+
[ 7, 1 ],
|
119
136
|
[ 6, 1 ],
|
120
137
|
[ 6, 3 ],
|
121
138
|
]
|
@@ -132,8 +149,9 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
132
149
|
">" => 4,
|
133
150
|
":" => 5,
|
134
151
|
:ACTION => 6,
|
135
|
-
|
136
|
-
|
152
|
+
"!" => 7,
|
153
|
+
:LEX => 8,
|
154
|
+
"," => 9,
|
137
155
|
}
|
138
156
|
### Int to Term
|
139
157
|
i2t = [
|
@@ -144,29 +162,32 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
144
162
|
">",
|
145
163
|
":",
|
146
164
|
:ACTION,
|
165
|
+
"!",
|
147
166
|
:LEX,
|
148
167
|
",",
|
149
168
|
]
|
150
169
|
### Action Table
|
151
170
|
action_table = [
|
152
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
153
|
-
[ ACC, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
154
|
-
[ nil, nil,
|
155
|
-
[ nil, nil, nil, nil, nil, nil, nil,
|
156
|
-
[ nil, nil, nil,
|
157
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
158
|
-
[ nil, nil, nil, nil, nil, nil,
|
159
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
160
|
-
[ nil, nil, nil, nil, nil, nil, nil,
|
161
|
-
[ nil, nil, nil, nil, nil,
|
162
|
-
[ nil, nil, nil, nil, nil, nil, nil,
|
163
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
164
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
165
|
-
[ nil, nil, nil, nil,
|
166
|
-
[ nil, nil, nil,
|
167
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
168
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
169
|
-
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
171
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
172
|
+
[ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
173
|
+
[ nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, ],
|
174
|
+
[ nil, nil, nil, 5, nil, nil, nil, nil, nil, nil, ],
|
175
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, ],
|
176
|
+
[ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, ],
|
177
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
178
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
179
|
+
[ nil, nil, nil, nil, nil, nil, nil, 12, nil, 13, ],
|
180
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, ],
|
181
|
+
[ nil, nil, nil, nil, 16, nil, nil, nil, nil, nil, ],
|
182
|
+
[ nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, ],
|
183
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
184
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, 18, nil, ],
|
185
|
+
[ nil, nil, nil, nil, nil, nil, 19, nil, nil, nil, ],
|
186
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
187
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
188
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
189
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
190
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
170
191
|
]
|
171
192
|
### Default Reduce Table
|
172
193
|
defred_table = [
|
@@ -175,19 +196,21 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
175
196
|
-1,
|
176
197
|
nil,
|
177
198
|
nil,
|
199
|
+
-5,
|
200
|
+
-12,
|
178
201
|
-7,
|
179
|
-
nil,
|
180
202
|
-10,
|
181
203
|
-3,
|
182
|
-
-5,
|
183
|
-
nil,
|
184
|
-
-9,
|
185
|
-
-8,
|
186
204
|
nil,
|
187
205
|
nil,
|
188
206
|
-11,
|
207
|
+
nil,
|
208
|
+
nil,
|
209
|
+
-8,
|
189
210
|
-4,
|
190
211
|
-6,
|
212
|
+
-13,
|
213
|
+
-9,
|
191
214
|
]
|
192
215
|
defred_after_shift_table = [
|
193
216
|
-2,
|
@@ -195,19 +218,21 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
195
218
|
nil,
|
196
219
|
nil,
|
197
220
|
nil,
|
221
|
+
nil,
|
222
|
+
-12,
|
198
223
|
-7,
|
199
224
|
nil,
|
200
|
-
-10,
|
201
225
|
nil,
|
202
226
|
nil,
|
203
227
|
nil,
|
204
|
-
-
|
205
|
-
-8,
|
228
|
+
-11,
|
206
229
|
nil,
|
207
230
|
nil,
|
208
|
-
-
|
231
|
+
-8,
|
209
232
|
-4,
|
210
233
|
-6,
|
234
|
+
-13,
|
235
|
+
-9,
|
211
236
|
]
|
212
237
|
### Nonterm to Int
|
213
238
|
nt2i = {
|
@@ -217,7 +242,8 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
217
242
|
:lexactlist => 3,
|
218
243
|
:opt_super => 4,
|
219
244
|
:lexact => 5,
|
220
|
-
:lexlist => 6,
|
245
|
+
:lexlist => 6,
|
246
|
+
:opt_noskip => 7,
|
221
247
|
}
|
222
248
|
### Int to Nonterm
|
223
249
|
i2nt = [
|
@@ -228,27 +254,30 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
228
254
|
:opt_super,
|
229
255
|
:lexact,
|
230
256
|
:lexlist,
|
257
|
+
:opt_noskip,
|
231
258
|
]
|
232
259
|
### Goto Table
|
233
260
|
goto_table = [
|
234
|
-
[ 1, 2, nil, nil, nil, nil, nil, ],
|
235
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
236
|
-
[ nil, nil,
|
237
|
-
[ nil, nil, nil,
|
238
|
-
[ nil, nil, nil,
|
239
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
240
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
241
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
242
|
-
[ nil, nil, nil, nil, nil,
|
243
|
-
[ nil, nil, nil, nil,
|
244
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
245
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
246
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
247
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
248
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
249
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
250
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
251
|
-
[ nil, nil, nil, nil, nil, nil, nil, ],
|
261
|
+
[ 1, 2, nil, nil, nil, nil, nil, nil, ],
|
262
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
263
|
+
[ nil, nil, 4, nil, nil, nil, nil, nil, ],
|
264
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
265
|
+
[ nil, nil, nil, 9, nil, 7, 8, nil, ],
|
266
|
+
[ nil, nil, nil, nil, 10, nil, nil, nil, ],
|
267
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
268
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
269
|
+
[ nil, nil, nil, nil, nil, nil, nil, 14, ],
|
270
|
+
[ nil, nil, nil, nil, nil, 15, 8, nil, ],
|
271
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
272
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
273
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
274
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
275
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
276
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
277
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
278
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
279
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
280
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, ],
|
252
281
|
]
|
253
282
|
|
254
283
|
Tables = [ reduce_table, nparams, action_table,
|
@@ -284,28 +313,52 @@ class StatefulLexerExtension_prerulelist < Basis #:nodoc:all
|
|
284
313
|
|
285
314
|
def lex
|
286
315
|
begin
|
287
|
-
until @line.empty?
|
316
|
+
until @line.empty?
|
288
317
|
case @line
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
when /\A
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
318
|
+
|
319
|
+
when /\A\s+/, /\A#.*\Z/
|
320
|
+
@oldline = @line; @line = $'
|
321
|
+
|
322
|
+
|
323
|
+
|
324
|
+
when /\A[A-Z]+/
|
325
|
+
@oldline = @line; @line = $'
|
326
|
+
yield _Token(:ID, $&)
|
327
|
+
|
328
|
+
|
329
|
+
when /\A\%\}\s*\Z/
|
330
|
+
@oldline = @line; @line = $'
|
331
|
+
yield nil,nil
|
332
|
+
|
333
|
+
|
334
|
+
when /\A\/(([^\/\\]+|\\.)*)\//
|
335
|
+
@oldline = @line; @line = $'
|
336
|
+
yield _Token(:LEX, "/\\A#{$1}/")
|
337
|
+
|
338
|
+
|
339
|
+
when /\A'([^'\\]+|\\.)*'/, /\A"([^"\\]+|\\.)*"/
|
340
|
+
@oldline = @line; @line = $'
|
341
|
+
|
342
|
+
yield _Token(:LEX, "/\\A#{Regexp.escape($1).gsub('/', '\/')}/")
|
343
|
+
|
344
|
+
|
345
|
+
when /\A\{/
|
346
|
+
#
|
347
|
+
|
348
|
+
_lineno = lineno
|
349
|
+
yield _Token(:ACTION, parse_action, _lineno)
|
350
|
+
|
351
|
+
|
352
|
+
when /\A./
|
353
|
+
@oldline = @line; @line = $'
|
354
|
+
yield _Token($&, $&)
|
301
355
|
|
356
|
+
|
302
357
|
else
|
303
358
|
raise RuntimeError, "must not happen #{@line}"
|
304
359
|
end
|
305
|
-
@oldline = @line
|
306
|
-
@line = $'
|
307
360
|
end
|
308
|
-
end while @line = getline
|
361
|
+
end while @line0 = @line = getline
|
309
362
|
yield nil, nil
|
310
363
|
end
|
311
364
|
|
@@ -313,7 +366,7 @@ end
|
|
313
366
|
|
314
367
|
### Outer Code
|
315
368
|
|
316
|
-
class D4StatefulLexerExtension_prerulelist::NVAction < Depager::Action #:nodoc:all
|
369
|
+
class D4StatefulLexerExtension_prerulelist::NVAction < Depager::LALR::Action #:nodoc:all
|
317
370
|
include Depager::DecoratorUtils
|
318
371
|
include ActionParser
|
319
372
|
|
@@ -330,6 +383,8 @@ class D4StatefulLexerExtension_prerulelist::NVAction < Depager::Action #:nodoc:a
|
|
330
383
|
:_act_8,
|
331
384
|
:_act_9,
|
332
385
|
:_act_10,
|
386
|
+
:_act_11,
|
387
|
+
:_act_12,
|
333
388
|
|
334
389
|
]
|
335
390
|
Tables = [on_reduce]
|
@@ -340,138 +395,154 @@ class D4StatefulLexerExtension_prerulelist::NVAction < Depager::Action #:nodoc:a
|
|
340
395
|
end
|
341
396
|
|
342
397
|
|
343
|
-
module_eval <<-'.,.,
|
398
|
+
module_eval <<-'.,.,118754107818868.,.,', 'slex.dr', 96
|
344
399
|
def _act_0 val
|
345
400
|
_mode_list = *val
|
346
401
|
|
347
402
|
ll = ''
|
348
403
|
_mode_list.each do |m, s, l|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
404
|
+
else_code = if s
|
405
|
+
"lex_#{s}(&block)"
|
406
|
+
else
|
407
|
+
'raise RuntimeError, "must not happen #{@line}"'
|
408
|
+
end
|
354
409
|
ll << %{
|
355
410
|
def lex_#{m}(&block)
|
356
|
-
_rest = ''
|
357
411
|
case @line
|
358
412
|
#{l.map{|i| ' '*4+i}}
|
359
413
|
else
|
360
|
-
#{
|
414
|
+
#{else_code}
|
361
415
|
end
|
362
|
-
return _rest
|
363
416
|
end
|
364
417
|
}; #code
|
365
418
|
end
|
366
419
|
g_parser.optinner << ll << %{
|
367
|
-
attr_accessor :lex_state
|
420
|
+
attr_accessor :lex_state, :lex_context
|
368
421
|
def lex(&block)
|
369
|
-
@lex_state
|
422
|
+
@lex_state ||= :START
|
423
|
+
@lex_context ||= {}
|
370
424
|
begin
|
371
425
|
until @line.empty?
|
372
|
-
|
426
|
+
self.send "lex_\#{@lex_state}", &block
|
373
427
|
end
|
374
|
-
end while @line = getline
|
428
|
+
end while @line0 = @line = getline
|
375
429
|
yield nil, nil
|
376
430
|
end
|
377
431
|
}; #code
|
378
432
|
|
379
433
|
end
|
380
434
|
|
381
|
-
.,.,
|
435
|
+
.,.,118754107818868.,.,
|
382
436
|
|
383
|
-
module_eval <<-'.,.,
|
437
|
+
module_eval <<-'.,.,118754107863583.,.,', 'slex.dr', 130
|
384
438
|
def _act_1 val
|
385
439
|
[ ]
|
386
440
|
|
387
441
|
end
|
388
442
|
|
389
|
-
.,.,
|
443
|
+
.,.,118754107863583.,.,
|
390
444
|
|
391
|
-
module_eval <<-'.,.,
|
445
|
+
module_eval <<-'.,.,118754107817072.,.,', 'slex.dr', 131
|
392
446
|
def _act_2 val
|
393
447
|
_mode_list, _mode, _lexactlist = *val
|
394
448
|
_mode_list << [_mode[0], _mode[1], _lexactlist]
|
395
449
|
|
396
450
|
end
|
397
451
|
|
398
|
-
.,.,
|
452
|
+
.,.,118754107817072.,.,
|
399
453
|
|
400
|
-
module_eval <<-'.,.,
|
454
|
+
module_eval <<-'.,.,118754107816434.,.,', 'slex.dr', 134
|
401
455
|
def _act_3 val
|
402
456
|
_, _ID, _opt_super, _ = *val
|
403
457
|
[ _ID.value, _opt_super ]
|
404
458
|
|
405
459
|
end
|
406
460
|
|
407
|
-
.,.,
|
461
|
+
.,.,118754107816434.,.,
|
408
462
|
|
409
|
-
module_eval <<-'.,.,
|
463
|
+
module_eval <<-'.,.,118754107840777.,.,', 'slex.dr', 137
|
410
464
|
def _act_4 val
|
411
465
|
nil
|
412
466
|
|
413
467
|
end
|
414
468
|
|
415
|
-
.,.,
|
469
|
+
.,.,118754107840777.,.,
|
416
470
|
|
417
|
-
module_eval <<-'.,.,
|
471
|
+
module_eval <<-'.,.,118754107819808.,.,', 'slex.dr', 138
|
418
472
|
def _act_5 val
|
419
473
|
_, _ID = *val
|
420
474
|
_ID.value
|
421
475
|
|
422
476
|
end
|
423
477
|
|
424
|
-
.,.,
|
478
|
+
.,.,118754107819808.,.,
|
425
479
|
|
426
|
-
module_eval <<-'.,.,
|
480
|
+
module_eval <<-'.,.,118754107825523.,.,', 'slex.dr', 141
|
427
481
|
def _act_6 val
|
428
482
|
_lexact = *val
|
429
483
|
[ _lexact ]
|
430
484
|
|
431
485
|
end
|
432
486
|
|
433
|
-
.,.,
|
487
|
+
.,.,118754107825523.,.,
|
434
488
|
|
435
|
-
module_eval <<-'.,.,
|
489
|
+
module_eval <<-'.,.,11875410787826.,.,', 'slex.dr', 142
|
436
490
|
def _act_7 val
|
437
491
|
_lexactlist, _lexact = *val
|
438
492
|
_lexactlist << _lexact
|
439
493
|
|
440
494
|
end
|
441
495
|
|
442
|
-
.,.,
|
496
|
+
.,.,11875410787826.,.,
|
443
497
|
|
444
|
-
module_eval <<-'.,.,
|
498
|
+
module_eval <<-'.,.,118754107820340.,.,', 'slex.dr', 146
|
445
499
|
def _act_8 val
|
446
|
-
_lexlist, _ACTION = *val
|
500
|
+
_lexlist, _opt_noskip, _ACTION = *val
|
447
501
|
|
448
502
|
%{
|
449
503
|
when #{_lexlist.join(', ')}
|
450
|
-
|
504
|
+
#{ _opt_noskip ? '#' : "@oldline = @line; @line = $'" }
|
451
505
|
#{ _ACTION.value }
|
452
506
|
}; #code
|
453
507
|
|
454
508
|
end
|
455
509
|
|
456
|
-
.,.,
|
510
|
+
.,.,118754107820340.,.,
|
457
511
|
|
458
|
-
module_eval <<-'.,.,
|
512
|
+
module_eval <<-'.,.,118754107818518.,.,', 'slex.dr', 155
|
459
513
|
def _act_9 val
|
514
|
+
false
|
515
|
+
|
516
|
+
end
|
517
|
+
|
518
|
+
.,.,118754107818518.,.,
|
519
|
+
|
520
|
+
module_eval <<-'.,.,118754107850066.,.,', 'slex.dr', 156
|
521
|
+
def _act_10 val
|
522
|
+
_ = *val
|
523
|
+
true
|
524
|
+
|
525
|
+
end
|
526
|
+
|
527
|
+
.,.,118754107850066.,.,
|
528
|
+
|
529
|
+
module_eval <<-'.,.,118754107825362.,.,', 'slex.dr', 159
|
530
|
+
def _act_11 val
|
460
531
|
_LEX = *val
|
461
532
|
[ _LEX.value ]
|
462
533
|
|
463
534
|
end
|
464
535
|
|
465
|
-
.,.,
|
536
|
+
.,.,118754107825362.,.,
|
466
537
|
|
467
|
-
module_eval <<-'.,.,
|
468
|
-
def
|
538
|
+
module_eval <<-'.,.,118754107856852.,.,', 'slex.dr', 160
|
539
|
+
def _act_12 val
|
469
540
|
_lexlist, _, _LEX = *val
|
470
541
|
_lexlist.push _LEX
|
471
542
|
|
472
543
|
end
|
473
544
|
|
474
|
-
.,.,
|
545
|
+
.,.,118754107856852.,.,
|
475
546
|
|
476
547
|
end
|
477
548
|
|
@@ -482,14 +553,20 @@ end
|
|
482
553
|
module D4StatefulLexerExtension_prerhs_postsymbol #:nodoc:all
|
483
554
|
end
|
484
555
|
|
485
|
-
class StatefulLexerExtension_prerhs_postsymbol < Basis #:nodoc:all
|
556
|
+
class StatefulLexerExtension_prerhs_postsymbol < Depager::LALR::Basis #:nodoc:all
|
486
557
|
include Depager::ExtensionUtils
|
487
558
|
|
488
559
|
|
489
560
|
### Reduce Table
|
490
561
|
reduce_table = [
|
491
562
|
[ -1, 1 ],
|
563
|
+
[ 0, 3 ],
|
492
564
|
[ 0, 4 ],
|
565
|
+
[ 1, 1 ],
|
566
|
+
[ 1, 2 ],
|
567
|
+
[ 2, 2 ],
|
568
|
+
[ 2, 2 ],
|
569
|
+
[ 2, 2 ],
|
493
570
|
]
|
494
571
|
### Extension Params
|
495
572
|
nparams = {
|
@@ -500,27 +577,42 @@ class StatefulLexerExtension_prerhs_postsymbol < Basis #:nodoc:all
|
|
500
577
|
nil => 0,
|
501
578
|
false => 1,
|
502
579
|
"[" => 2,
|
503
|
-
"
|
504
|
-
|
505
|
-
"
|
580
|
+
"]" => 3,
|
581
|
+
"?" => 4,
|
582
|
+
">" => 5,
|
583
|
+
:SYMBOL => 6,
|
584
|
+
"+" => 7,
|
585
|
+
"-" => 8,
|
506
586
|
}
|
507
587
|
### Int to Term
|
508
588
|
i2t = [
|
509
589
|
nil,
|
510
590
|
false,
|
511
591
|
"[",
|
592
|
+
"]",
|
593
|
+
"?",
|
512
594
|
">",
|
513
595
|
:SYMBOL,
|
514
|
-
"
|
596
|
+
"+",
|
597
|
+
"-",
|
515
598
|
]
|
516
599
|
### Action Table
|
517
600
|
action_table = [
|
518
|
-
[ nil, nil,
|
519
|
-
[
|
520
|
-
[ nil, nil, nil,
|
521
|
-
[ nil, nil, nil, nil,
|
522
|
-
[ nil, nil, nil, nil, nil,
|
523
|
-
[ nil, nil, nil,
|
601
|
+
[ nil, nil, 1, nil, nil, nil, nil, nil, nil, ],
|
602
|
+
[ nil, nil, nil, nil, nil, 7, nil, 3, 4, ],
|
603
|
+
[ ACC, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
604
|
+
[ nil, nil, nil, nil, nil, nil, 8, nil, nil, ],
|
605
|
+
[ nil, nil, nil, nil, nil, nil, 9, nil, nil, ],
|
606
|
+
[ nil, nil, nil, 10, 11, 7, nil, 3, 4, ],
|
607
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
608
|
+
[ nil, nil, nil, nil, nil, nil, 13, nil, nil, ],
|
609
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
610
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
611
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
612
|
+
[ nil, nil, nil, 14, nil, nil, nil, nil, nil, ],
|
613
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
614
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
615
|
+
[ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
|
524
616
|
]
|
525
617
|
### Default Reduce Table
|
526
618
|
defred_table = [
|
@@ -529,7 +621,16 @@ class StatefulLexerExtension_prerhs_postsymbol < Basis #:nodoc:all
|
|
529
621
|
nil,
|
530
622
|
nil,
|
531
623
|
nil,
|
624
|
+
nil,
|
625
|
+
-3,
|
626
|
+
nil,
|
627
|
+
-6,
|
628
|
+
-7,
|
532
629
|
-1,
|
630
|
+
nil,
|
631
|
+
-4,
|
632
|
+
-5,
|
633
|
+
-2,
|
533
634
|
]
|
534
635
|
defred_after_shift_table = [
|
535
636
|
nil,
|
@@ -537,24 +638,46 @@ class StatefulLexerExtension_prerhs_postsymbol < Basis #:nodoc:all
|
|
537
638
|
nil,
|
538
639
|
nil,
|
539
640
|
nil,
|
641
|
+
nil,
|
642
|
+
-3,
|
643
|
+
nil,
|
644
|
+
-6,
|
645
|
+
-7,
|
540
646
|
-1,
|
647
|
+
nil,
|
648
|
+
-4,
|
649
|
+
-5,
|
650
|
+
-2,
|
541
651
|
]
|
542
652
|
### Nonterm to Int
|
543
653
|
nt2i = {
|
544
|
-
:start => 0,
|
654
|
+
:start => 0,
|
655
|
+
:option_list => 1,
|
656
|
+
:option => 2,
|
545
657
|
}
|
546
658
|
### Int to Nonterm
|
547
659
|
i2nt = [
|
548
660
|
:start,
|
661
|
+
:option_list,
|
662
|
+
:option,
|
549
663
|
]
|
550
664
|
### Goto Table
|
551
665
|
goto_table = [
|
552
|
-
[
|
553
|
-
[ nil, ],
|
554
|
-
[ nil, ],
|
555
|
-
[ nil, ],
|
556
|
-
[ nil, ],
|
557
|
-
[ nil, ],
|
666
|
+
[ 2, nil, nil, ],
|
667
|
+
[ nil, 5, 6, ],
|
668
|
+
[ nil, nil, nil, ],
|
669
|
+
[ nil, nil, nil, ],
|
670
|
+
[ nil, nil, nil, ],
|
671
|
+
[ nil, nil, 12, ],
|
672
|
+
[ nil, nil, nil, ],
|
673
|
+
[ nil, nil, nil, ],
|
674
|
+
[ nil, nil, nil, ],
|
675
|
+
[ nil, nil, nil, ],
|
676
|
+
[ nil, nil, nil, ],
|
677
|
+
[ nil, nil, nil, ],
|
678
|
+
[ nil, nil, nil, ],
|
679
|
+
[ nil, nil, nil, ],
|
680
|
+
[ nil, nil, nil, ],
|
558
681
|
]
|
559
682
|
|
560
683
|
Tables = [ reduce_table, nparams, action_table,
|
@@ -590,24 +713,34 @@ class StatefulLexerExtension_prerhs_postsymbol < Basis #:nodoc:all
|
|
590
713
|
|
591
714
|
def lex
|
592
715
|
begin
|
593
|
-
until @line.empty?
|
716
|
+
until @line.empty?
|
594
717
|
case @line
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
when /\A
|
602
|
-
|
718
|
+
|
719
|
+
when /\A\s+/
|
720
|
+
@oldline = @line; @line = $'
|
721
|
+
|
722
|
+
|
723
|
+
|
724
|
+
when /\A:[a-zA-Z_]+\??/
|
725
|
+
@oldline = @line; @line = $'
|
726
|
+
yield _Token(:SYMBOL, $&)
|
727
|
+
|
728
|
+
|
729
|
+
when /\A\]/
|
730
|
+
@oldline = @line; @line = $'
|
731
|
+
yield _Token($&, $&); @line = $'; yield nil, nil
|
603
732
|
|
733
|
+
|
734
|
+
when /\A./
|
735
|
+
@oldline = @line; @line = $'
|
736
|
+
yield _Token($&, $&)
|
737
|
+
|
738
|
+
|
604
739
|
else
|
605
740
|
raise RuntimeError, "must not happen #{@line}"
|
606
741
|
end
|
607
|
-
@oldline = @line
|
608
|
-
@line = $'
|
609
742
|
end
|
610
|
-
end while @line = getline
|
743
|
+
end while @line0 = @line = getline
|
611
744
|
yield nil, nil
|
612
745
|
end
|
613
746
|
|
@@ -615,12 +748,18 @@ end
|
|
615
748
|
|
616
749
|
### Outer Code
|
617
750
|
|
618
|
-
class D4StatefulLexerExtension_prerhs_postsymbol::NVAction < Depager::Action #:nodoc:all
|
751
|
+
class D4StatefulLexerExtension_prerhs_postsymbol::NVAction < Depager::LALR::Action #:nodoc:all
|
619
752
|
include Depager::DecoratorUtils
|
620
753
|
|
621
754
|
on_reduce = [
|
622
755
|
nil,
|
623
756
|
:_act_0,
|
757
|
+
:_act_1,
|
758
|
+
:_act_2,
|
759
|
+
:_act_3,
|
760
|
+
:_act_4,
|
761
|
+
:_act_5,
|
762
|
+
:_act_6,
|
624
763
|
|
625
764
|
]
|
626
765
|
Tables = [on_reduce]
|
@@ -631,15 +770,70 @@ class D4StatefulLexerExtension_prerhs_postsymbol::NVAction < Depager::Action #:n
|
|
631
770
|
end
|
632
771
|
|
633
772
|
|
634
|
-
module_eval <<-'.,.,
|
773
|
+
module_eval <<-'.,.,11875410786796.,.,', 'slex.dr', 180
|
635
774
|
def _act_0 val
|
636
|
-
_,
|
775
|
+
_, _option_list, _ = *val
|
776
|
+
|
777
|
+
master.ins.push [g_parser.rhs.size, _option_list, false]
|
778
|
+
|
779
|
+
end
|
780
|
+
|
781
|
+
.,.,11875410786796.,.,
|
782
|
+
|
783
|
+
module_eval <<-'.,.,118754107862281.,.,', 'slex.dr', 184
|
784
|
+
def _act_1 val
|
785
|
+
_, _option_list, _, _ = *val
|
786
|
+
|
787
|
+
master.ins.push [g_parser.rhs.size, _option_list, true]
|
788
|
+
|
789
|
+
end
|
790
|
+
|
791
|
+
.,.,118754107862281.,.,
|
792
|
+
|
793
|
+
module_eval <<-'.,.,118754107859502.,.,', 'slex.dr', 190
|
794
|
+
def _act_2 val
|
795
|
+
_option = *val
|
796
|
+
[_option]
|
797
|
+
|
798
|
+
end
|
799
|
+
|
800
|
+
.,.,118754107859502.,.,
|
801
|
+
|
802
|
+
module_eval <<-'.,.,118754107825820.,.,', 'slex.dr', 191
|
803
|
+
def _act_3 val
|
804
|
+
_option_list, _option = *val
|
805
|
+
_option_list << _option
|
806
|
+
|
807
|
+
end
|
808
|
+
|
809
|
+
.,.,118754107825820.,.,
|
810
|
+
|
811
|
+
module_eval <<-'.,.,118754107852027.,.,', 'slex.dr', 194
|
812
|
+
def _act_4 val
|
813
|
+
_, _SYMBOL = *val
|
814
|
+
[:GOTO, _SYMBOL.value]
|
815
|
+
|
816
|
+
end
|
817
|
+
|
818
|
+
.,.,118754107852027.,.,
|
819
|
+
|
820
|
+
module_eval <<-'.,.,118754107811272.,.,', 'slex.dr', 195
|
821
|
+
def _act_5 val
|
822
|
+
_, _SYMBOL = *val
|
823
|
+
[:ADD, _SYMBOL.value]
|
637
824
|
|
638
|
-
|
825
|
+
end
|
826
|
+
|
827
|
+
.,.,118754107811272.,.,
|
828
|
+
|
829
|
+
module_eval <<-'.,.,118754107839236.,.,', 'slex.dr', 196
|
830
|
+
def _act_6 val
|
831
|
+
_, _SYMBOL = *val
|
832
|
+
[:SUB, _SYMBOL.value]
|
639
833
|
|
640
834
|
end
|
641
835
|
|
642
|
-
.,.,
|
836
|
+
.,.,118754107839236.,.,
|
643
837
|
|
644
838
|
end
|
645
839
|
|