depager 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/ChangeLog +4 -0
  2. data/bin/depager +1 -0
  3. data/data/depager/misc/depager-mode.el +35 -24
  4. data/data/depager/pre-setup.rb +3 -0
  5. data/examples/Rakefile +36 -0
  6. data/examples/c89/c89.dr +496 -0
  7. data/examples/c89/c89.tab.rb +2197 -0
  8. data/examples/c89/test.c89 +10 -0
  9. data/{data/depager/sample → examples}/extension/paction.dr +0 -0
  10. data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
  11. data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
  12. data/examples/pl0d/pl0ds.tab.rb +1702 -0
  13. data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
  14. data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
  15. data/examples/sample_calc/calc.action.tab.rb +283 -0
  16. data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
  17. data/examples/sample_calc/calc.astdf.tab.rb +476 -0
  18. data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
  19. data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
  20. data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
  21. data/examples/sample_calc/calc.astl.tab.rb +501 -0
  22. data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
  23. data/examples/sample_calc/calc.atree.tab.rb +277 -0
  24. data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
  25. data/examples/sample_calc/calc.cst.tab.rb +478 -0
  26. data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
  27. data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
  28. data/examples/sample_calc/calc.lex.tab.rb +192 -0
  29. data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
  30. data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
  31. data/examples/sample_calc/calc.tab.rb +183 -0
  32. data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
  33. data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
  34. data/examples/sample_calc/test.calc +1 -0
  35. data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
  36. data/examples/slex_test/divreg.slex.tab.rb +227 -0
  37. data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
  38. data/examples/slex_test/ljoin.slex.tab.rb +277 -0
  39. data/examples/slex_test/test.divreg +1 -0
  40. data/examples/slex_test/test.ljoin +3 -0
  41. data/lib/depager.rb +194 -127
  42. data/lib/depager/Rakefile +8 -4
  43. data/lib/depager/ast_base.dr +3 -3
  44. data/lib/depager/ast_base.rb +197 -144
  45. data/lib/depager/atree.rb +55 -36
  46. data/lib/depager/cst.dr +6 -4
  47. data/lib/depager/cst.rb +69 -49
  48. data/lib/depager/grammar.rb +136 -0
  49. data/lib/depager/lex.dr +22 -8
  50. data/lib/depager/lex.rb +94 -53
  51. data/lib/depager/lr.rb +101 -167
  52. data/lib/depager/parse_action.rb +1 -1
  53. data/lib/depager/parser.rb +34 -7
  54. data/lib/depager/slex.dr +76 -36
  55. data/lib/depager/slex.rb +345 -151
  56. data/lib/depager/srp.rb +3 -2
  57. data/lib/depager/template/extension_lalr_slave.erb +1 -1
  58. data/lib/depager/template/single_lalr_parser.erb +1 -1
  59. data/lib/depager/utils.rb +2 -1
  60. data/lib/depager/version.rb +2 -2
  61. metadata +42 -28
  62. data/Manifest.txt +0 -52
  63. 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, m|
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
- isym = g_parser.add_nonterm("__#{state_name}__".intern)
68
- new_rule = Rule[isym, []]
69
- val = ( ":_lex_#{state_name}" )
70
- @addition << [ new_rule, rhs, val, i+j, isym ]
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] = ( ":_lex_#{state_name}" )
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 _lex_#{lhs_name}_#{nrhs}_#{i} val
77
- @basis.lex_state = #{m}
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 |new_rule, rhs, val, pos, isym|
85
- g_parser.g << new_rule
86
- rhs.insert(pos, isym)
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, 2 ],
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
- :LEX => 7,
136
- "," => 8,
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, 4, nil, nil, nil, nil, nil, nil, ],
155
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, ],
156
- [ nil, nil, nil, 9, nil, nil, nil, nil, nil, ],
157
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
158
- [ nil, nil, nil, nil, nil, nil, 11, nil, 10, ],
159
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
160
- [ nil, nil, nil, nil, nil, nil, nil, 7, nil, ],
161
- [ nil, nil, nil, nil, nil, 14, nil, nil, nil, ],
162
- [ nil, nil, nil, nil, nil, nil, nil, 15, 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, 16, nil, nil, nil, nil, ],
166
- [ nil, nil, nil, 17, nil, nil, 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
- -9,
205
- -8,
228
+ -11,
206
229
  nil,
207
230
  nil,
208
- -11,
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, 3, nil, nil, nil, nil, ],
237
- [ nil, nil, nil, 8, nil, 5, 6, ],
238
- [ nil, nil, nil, nil, 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, 12, 6, ],
243
- [ nil, nil, nil, nil, 13, 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? do
316
+ until @line.empty?
288
317
  case @line
289
- when /\A\s+/, /\A#.*\Z/
290
-
291
- when /\A[A-Z]+/
292
- yield _Token(:ID, $&)
293
- when /\A\%\}\s*\Z/
294
- @line = $'; yield nil,nil
295
- when /\A\/(([^\/\\]+|\\.)*)\//, /\A'([^'\\]+|\\.)*\'/
296
- yield _Token(:LEX, "/\\A#{$1}/")
297
- when /\A\{/
298
- ln = lineno; yield :ACTION, Token[parse_action, ln]; //=~''
299
- when /\A./
300
- yield _Token($&, $&)
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 <<-'.,.,118028145945879.,.,', 'slex.dr', 73
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
- elsec = if s
350
- "_rest = lex_#{s}(&block)"
351
- else
352
- %!raise RuntimeError, "must not happen \#{@line}"!
353
- end
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
- #{elsec}
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 ||= :START
422
+ @lex_state ||= :START
423
+ @lex_context ||= {}
370
424
  begin
371
425
  until @line.empty?
372
- @line = self.send "lex_\#{@lex_state}", &block
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
- .,.,118028145945879.,.,
435
+ .,.,118754107818868.,.,
382
436
 
383
- module_eval <<-'.,.,118028145964322.,.,', 'slex.dr', 108
437
+ module_eval <<-'.,.,118754107863583.,.,', 'slex.dr', 130
384
438
  def _act_1 val
385
439
  [ ]
386
440
 
387
441
  end
388
442
 
389
- .,.,118028145964322.,.,
443
+ .,.,118754107863583.,.,
390
444
 
391
- module_eval <<-'.,.,118028145964390.,.,', 'slex.dr', 109
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
- .,.,118028145964390.,.,
452
+ .,.,118754107817072.,.,
399
453
 
400
- module_eval <<-'.,.,118028145932066.,.,', 'slex.dr', 112
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
- .,.,118028145932066.,.,
461
+ .,.,118754107816434.,.,
408
462
 
409
- module_eval <<-'.,.,118028145910814.,.,', 'slex.dr', 115
463
+ module_eval <<-'.,.,118754107840777.,.,', 'slex.dr', 137
410
464
  def _act_4 val
411
465
  nil
412
466
 
413
467
  end
414
468
 
415
- .,.,118028145910814.,.,
469
+ .,.,118754107840777.,.,
416
470
 
417
- module_eval <<-'.,.,118028145954649.,.,', 'slex.dr', 116
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
- .,.,118028145954649.,.,
478
+ .,.,118754107819808.,.,
425
479
 
426
- module_eval <<-'.,.,118028145953818.,.,', 'slex.dr', 119
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
- .,.,118028145953818.,.,
487
+ .,.,118754107825523.,.,
434
488
 
435
- module_eval <<-'.,.,118028145941830.,.,', 'slex.dr', 120
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
- .,.,118028145941830.,.,
496
+ .,.,11875410787826.,.,
443
497
 
444
- module_eval <<-'.,.,11802814599495.,.,', 'slex.dr', 124
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
- _rest = $'
504
+ #{ _opt_noskip ? '#' : "@oldline = @line; @line = $'" }
451
505
  #{ _ACTION.value }
452
506
  }; #code
453
507
 
454
508
  end
455
509
 
456
- .,.,11802814599495.,.,
510
+ .,.,118754107820340.,.,
457
511
 
458
- module_eval <<-'.,.,118028145922938.,.,', 'slex.dr', 133
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
- .,.,118028145922938.,.,
536
+ .,.,118754107825362.,.,
466
537
 
467
- module_eval <<-'.,.,11802814594078.,.,', 'slex.dr', 134
468
- def _act_10 val
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
- .,.,11802814594078.,.,
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
- ">" => 3,
504
- :SYMBOL => 4,
505
- "]" => 5,
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, 2, nil, nil, nil, ],
519
- [ ACC, nil, nil, nil, nil, nil, ],
520
- [ nil, nil, nil, 3, nil, nil, ],
521
- [ nil, nil, nil, nil, 4, nil, ],
522
- [ nil, nil, nil, nil, nil, 5, ],
523
- [ nil, nil, nil, 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
- [ 1, ],
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? do
716
+ until @line.empty?
594
717
  case @line
595
- when /\A\s+/
596
-
597
- when /\A:[a-zA-Z_]+/
598
- yield _Token(:SYMBOL, $&)
599
- when /\A\]/
600
- yield _Token($&, $&); @line = $'; yield nil, nil
601
- when /\A./
602
- yield _Token($&, $&)
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 <<-'.,.,118028146037199.,.,', 'slex.dr', 154
773
+ module_eval <<-'.,.,11875410786796.,.,', 'slex.dr', 180
635
774
  def _act_0 val
636
- _, _, _SYMBOL, _ = *val
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
- master.ins.push [g_parser.rhs.size, _SYMBOL.value]
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
- .,.,118028146037199.,.,
836
+ .,.,118754107839236.,.,
643
837
 
644
838
  end
645
839