depager 0.1.9 → 0.2.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.
- 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
|
|