depager 0.2.3 → 0.3.0.b20250423

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.
Files changed (106) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +44 -0
  3. data/.simplecov +5 -0
  4. data/Gemfile +12 -0
  5. data/LICENSE.gpl +339 -0
  6. data/Manifest.txt +73 -0
  7. data/README.en +7 -21
  8. data/README.ja +19 -99
  9. data/Rakefile +31 -0
  10. data/bin/depager +7 -45
  11. data/examples/action_pl0d/pl0d.action.dr +421 -0
  12. data/examples/action_pl0d/test.pl0ds +48 -0
  13. data/examples/c89/c89.dr +493 -496
  14. data/examples/c89/test.c89 +10 -10
  15. data/examples/extension/astdf.rb +9 -0
  16. data/examples/extension/atree.dr +55 -0
  17. data/examples/{sample_calc → extension}/calc.atree.dr +42 -43
  18. data/examples/{sample_calc/calc.action.dr → extension/calc.simple_action.dr} +33 -33
  19. data/examples/extension/paction.dr +16 -15
  20. data/examples/extension/pactiontest.dr +14 -14
  21. data/examples/extension/simple_action.rb +46 -0
  22. data/examples/pl0d/pl0ds.dr +337 -334
  23. data/examples/pl0d/test.pl0ds +33 -33
  24. data/examples/rie_calc/calc.rie.dr +57 -0
  25. data/examples/rie_calc/test.calc +4 -0
  26. data/examples/rie_dcuse/dcuse.rie.dr +71 -0
  27. data/examples/rie_dcuse/test.dcuse +1 -0
  28. data/examples/rie_pl0/orig_ex/exerrdg.pl0 +44 -0
  29. data/examples/rie_pl0/orig_ex/exerrm.pl0 +19 -0
  30. data/examples/rie_pl0/orig_ex/exerrmre.pl0 +20 -0
  31. data/examples/rie_pl0/orig_ex/exerrtok.pl0 +18 -0
  32. data/examples/rie_pl0/orig_ex/exmdg.pl0 +40 -0
  33. data/examples/rie_pl0/orig_ex/exmdgwwl.pl0 +43 -0
  34. data/examples/rie_pl0/orig_ex/exmrw.pl0 +22 -0
  35. data/examples/rie_pl0/orig_ex/exmwwl.pl0 +18 -0
  36. data/examples/rie_pl0/orig_ex/exnorw.pl0 +17 -0
  37. data/examples/rie_pl0/pl0.rie.dr +450 -0
  38. data/examples/rie_pl0/test.pl0 +10 -0
  39. data/examples/slex_test/divreg.slex.dr +29 -29
  40. data/examples/slex_test/ljoin.slex.dr +36 -36
  41. data/examples/slex_test/test.divreg +1 -1
  42. data/examples/slex_test/test.ljoin +3 -3
  43. data/examples/{sample_calc/calc.nvaction.dr → tiny_calc/calc.action.dr} +33 -33
  44. data/examples/{sample_calc → tiny_calc}/calc.ast.action.dr +76 -66
  45. data/examples/{sample_calc → tiny_calc}/calc.ast.dr +67 -55
  46. data/examples/tiny_calc/calc.cst.dr +50 -0
  47. data/examples/{sample_calc → tiny_calc}/calc.dr +43 -43
  48. data/examples/{sample_calc → tiny_calc}/calc.lex.dr +29 -29
  49. data/examples/{sample_calc/calc_prec.nvaction.dr → tiny_calc/calc_prec.action.dr} +31 -31
  50. data/lib/depager/cli.rb +44 -0
  51. data/lib/depager/grammar.rb +253 -291
  52. data/lib/depager/lr.rb +589 -579
  53. data/lib/depager/parser.rb +269 -277
  54. data/lib/depager/plugins/_rie_debug.rb +63 -0
  55. data/lib/depager/plugins/action.rb +47 -0
  56. data/lib/depager/plugins/ast.dr +367 -0
  57. data/lib/depager/plugins/ast.rb +1329 -0
  58. data/lib/depager/{ruby/plugins → plugins}/cst.dr +174 -180
  59. data/lib/depager/plugins/cst.rb +591 -0
  60. data/lib/depager/{ruby/plugins → plugins}/lex.dr +85 -89
  61. data/lib/depager/plugins/lex.rb +313 -0
  62. data/lib/depager/plugins/rie.dr +725 -0
  63. data/lib/depager/plugins/rie.rb +1614 -0
  64. data/lib/depager/{ruby/plugins → plugins}/slex.dr +201 -200
  65. data/lib/depager/plugins/slex.rb +769 -0
  66. data/lib/depager/plugins/srp.rb +46 -0
  67. data/lib/depager/ruby/templates/extension_lalr_master.erb +40 -51
  68. data/lib/depager/ruby/templates/extension_lalr_slave.erb +113 -107
  69. data/lib/depager/ruby/templates/single_lalr_parser.erb +124 -117
  70. data/lib/depager/utils.rb +158 -318
  71. data/lib/depager/version.rb +3 -3
  72. data/lib/depager.rb +572 -670
  73. metadata +77 -80
  74. data/ChangeLog +0 -16
  75. data/data/depager/pre-setup.rb +0 -3
  76. data/examples/c89/c89.tab.rb +0 -7127
  77. data/examples/pl0d/pl0ds.tab.rb +0 -2698
  78. data/examples/sample_calc/calc.action.tab.rb +0 -457
  79. data/examples/sample_calc/calc.ast.action.tab.rb +0 -749
  80. data/examples/sample_calc/calc.ast.tab.rb +0 -665
  81. data/examples/sample_calc/calc.astdf.dr +0 -54
  82. data/examples/sample_calc/calc.astdf.tab.rb +0 -672
  83. data/examples/sample_calc/calc.atree.tab.rb +0 -451
  84. data/examples/sample_calc/calc.cst.dr +0 -45
  85. data/examples/sample_calc/calc.cst.tab.rb +0 -644
  86. data/examples/sample_calc/calc.lex.tab.rb +0 -374
  87. data/examples/sample_calc/calc.nvaction.tab.rb +0 -465
  88. data/examples/sample_calc/calc.tab.rb +0 -365
  89. data/examples/sample_calc/calc_prec.nvaction.tab.rb +0 -431
  90. data/examples/slex_test/divreg.slex.tab.rb +0 -303
  91. data/examples/slex_test/ljoin.slex.tab.rb +0 -370
  92. data/lib/depager/ruby/plugins/_ast_tmpl.rb +0 -73
  93. data/lib/depager/ruby/plugins/action.rb +0 -43
  94. data/lib/depager/ruby/plugins/ast.dr +0 -269
  95. data/lib/depager/ruby/plugins/ast.rb +0 -1308
  96. data/lib/depager/ruby/plugins/astdf.rb +0 -6
  97. data/lib/depager/ruby/plugins/atree.dr +0 -55
  98. data/lib/depager/ruby/plugins/atree.rb +0 -347
  99. data/lib/depager/ruby/plugins/cst.rb +0 -626
  100. data/lib/depager/ruby/plugins/lex.rb +0 -336
  101. data/lib/depager/ruby/plugins/nvaction.rb +0 -19
  102. data/lib/depager/ruby/plugins/slex.rb +0 -817
  103. data/lib/depager/ruby/plugins/srp.rb +0 -51
  104. data/lib/depager/ruby/templates/simple.erb +0 -23
  105. data/setup.rb +0 -1585
  106. /data/examples/{sample_calc → tiny_calc}/test.calc +0 -0
@@ -1,6 +0,0 @@
1
- require 'plugins/ast.rb'
2
- class ASTBuilderDepthFirstExtension < ASTBuilderExtension #:nodoc:all
3
- def gen_accept_code sym
4
- " @#{sym}.accept(v)\n"
5
- end
6
- end
@@ -1,55 +0,0 @@
1
- %defext ATreeBuilderExtension
2
- %extend NVAction ('plugins/nvaction.rb')
3
- %extend Lexer ('plugins/lex.rb')
4
- %decorate @NVAction
5
- #%decorate ShiftReducePrinter ('plugins/srp.rb')
6
- %inner{
7
- attr_accessor :optouter, :on_reduce
8
- def init_parser
9
- @optouter = []
10
- @on_reduce = []
11
- end
12
- def post_rule_list
13
- g_parser.optouter <<
14
- gen_action_decorator_code(target_name, paramkey,
15
- @on_reduce, @optouter)
16
- end
17
- %}
18
- %hook post_rhs
19
- %banner '=>...'
20
- %%
21
- %LEX{
22
- /[ \t]+/ { }
23
- /\n/ { yield nil, nil }
24
- /[a-zA-Z][a-zA-Z0-9_]*/ { yield :ID, Token[$&, lineno] }
25
- /'(.+)'/ { yield :STR, Token[$1, lineno] }
26
- /::/ { yield :CC, Token[$&, lineno] }
27
- /=>/ { yield :EG, Token[$&, lineno] }
28
- /./ { yield $&, Token[$&, lineno] }
29
- %}
30
-
31
- #begin-rule
32
- start:
33
- EG ast
34
- {
35
- n = master.nrules
36
- master.optouter <<
37
- master.gen_defm_code("_atree_#{n} val", _ast, _EG.lineno)
38
- master.on_reduce[n] = ":_atree_#{n}"
39
- }
40
- ;
41
- ast:
42
- ID '(' ')' { "[:#{_ID.value}]" }
43
- | ID '(' fact_list ')' { "[:#{_ID.value}, #{_fact_list.join(',')}]" }
44
- | ID { "val[#{g_parser.name_to_rhs_index(_ID.value)}]" }
45
- ;
46
- fact_list:
47
- fact { [ _fact ] }
48
- | fact_list ',' fact { _fact_list.push _fact }
49
- ;
50
- fact:
51
- ID { "val[#{g_parser.name_to_rhs_index(_ID.value)}]" }
52
- | STR { "'#{_STR.value}'" }
53
- ;
54
- #end-rule
55
- %%
@@ -1,347 +0,0 @@
1
-
2
- ###
3
- ### ATreeBuilderExtension - Depager Extension (master)
4
- ###
5
- require 'pp.rb'
6
- require 'depager/parser.rb'
7
-
8
-
9
- module D4ATreeBuilderExtension #:nodoc:all
10
- end
11
-
12
- class ATreeBuilderExtension #:nodoc:all
13
- include Depager::ExtensionUtils
14
-
15
- attr_accessor :h2p
16
-
17
- def initialize
18
- @master = self
19
- @hook = []
20
- @h2p = {}
21
- init_parser
22
- end
23
-
24
- def __regext__ p
25
- super p, :default, nil
26
-
27
- @hook[0] = ATreeBuilderExtension_post_rhs.new(p, @nparam, self)
28
- @h2p['post_rhs'] = @hook[0]
29
- p.hooks[:post_rhs].push [@hook[0], :do_parse]
30
-
31
- regext p
32
- end
33
-
34
- ### Inner Code
35
- attr_accessor :optouter, :on_reduce
36
- def init_parser
37
- @optouter = []
38
- @on_reduce = []
39
- end
40
- def post_rule_list
41
- g_parser.optouter <<
42
- gen_action_decorator_code(target_name, paramkey,
43
- @on_reduce, @optouter)
44
- end
45
-
46
- end
47
-
48
- ### Outer Code
49
-
50
- ###
51
- ### ATreeBuilderExtension_post_rhs - Part of Depager Extension (slave)
52
- ###
53
- module D4ATreeBuilderExtension_post_rhs #:nodoc:all
54
- end
55
-
56
- class ATreeBuilderExtension_post_rhs < Depager::LALR::Basis #:nodoc:all
57
- include Depager::ExtensionUtils
58
-
59
-
60
- ### Reduce Table
61
- reduce_table = [
62
- [ -1, 1 ],
63
- [ 0, 2 ],
64
- [ 1, 3 ],
65
- [ 1, 4 ],
66
- [ 1, 1 ],
67
- [ 2, 1 ],
68
- [ 2, 3 ],
69
- [ 3, 1 ],
70
- [ 3, 1 ],
71
- ]
72
- ### Extension Params
73
- nparams = {
74
- 'NVAction' => 2,
75
- }
76
- ### Term to Int
77
- t2i = {
78
- nil => 0,
79
- false => 1,
80
- :EG => 2,
81
- :ID => 3,
82
- "(" => 4,
83
- ")" => 5,
84
- "," => 6,
85
- :STR => 7,
86
- }
87
- ### Int to Term
88
- i2t = [
89
- nil,
90
- false,
91
- :EG,
92
- :ID,
93
- "(",
94
- ")",
95
- ",",
96
- :STR,
97
- ]
98
- ### Action Table
99
- action_table = [
100
- [ nil, nil, 2, nil, nil, nil, nil, nil, ],
101
- [ ACC, nil, nil, nil, nil, nil, nil, nil, ],
102
- [ nil, nil, nil, 4, nil, nil, nil, nil, ],
103
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
104
- [ nil, nil, nil, nil, 5, nil, nil, nil, ],
105
- [ nil, nil, nil, 7, nil, 10, nil, 6, ],
106
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
107
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
108
- [ nil, nil, nil, nil, nil, 12, 11, nil, ],
109
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
110
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
111
- [ nil, nil, nil, 7, nil, nil, nil, 6, ],
112
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
113
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
114
- ]
115
- ### Default Reduce Table
116
- defred_table = [
117
- nil,
118
- nil,
119
- nil,
120
- -1,
121
- -4,
122
- nil,
123
- -8,
124
- -7,
125
- nil,
126
- -5,
127
- -2,
128
- nil,
129
- -3,
130
- -6,
131
- ]
132
- defred_after_shift_table = [
133
- nil,
134
- nil,
135
- nil,
136
- -1,
137
- nil,
138
- nil,
139
- -8,
140
- -7,
141
- nil,
142
- -5,
143
- -2,
144
- nil,
145
- -3,
146
- -6,
147
- ]
148
- ### Nonterm to Int
149
- nt2i = {
150
- :start => 0,
151
- :ast => 1,
152
- :fact_list => 2,
153
- :fact => 3,
154
- }
155
- ### Int to Nonterm
156
- i2nt = [
157
- :start,
158
- :ast,
159
- :fact_list,
160
- :fact,
161
- ]
162
- ### Goto Table
163
- goto_table = [
164
- [ 1, nil, nil, nil, ],
165
- [ nil, nil, nil, nil, ],
166
- [ nil, 3, nil, nil, ],
167
- [ nil, nil, nil, nil, ],
168
- [ nil, nil, nil, nil, ],
169
- [ nil, nil, 8, 9, ],
170
- [ nil, nil, nil, nil, ],
171
- [ nil, nil, nil, nil, ],
172
- [ nil, nil, nil, nil, ],
173
- [ nil, nil, nil, nil, ],
174
- [ nil, nil, nil, nil, ],
175
- [ nil, nil, nil, 13, ],
176
- [ nil, nil, nil, nil, ],
177
- [ nil, nil, nil, nil, ],
178
- ]
179
-
180
- Tables = [ reduce_table, nparams, action_table,
181
- defred_table, defred_after_shift_table, goto_table,
182
- t2i, i2t, nt2i, i2nt ]
183
-
184
- attr_accessor :p, :m
185
- def initialize p, nparam, master = nil
186
- super()
187
- @g_parser = @p = p
188
- @master = @m = master
189
- @nparam = nparam
190
- @dect = D4ATreeBuilderExtension_post_rhs::NVAction.new(self)
191
- init_parser
192
- end
193
-
194
-
195
-
196
- def banner
197
- "=>... / #{@master.class.name}"
198
- end
199
-
200
- ### Inner Code
201
-
202
- def lex
203
- begin
204
- until @line.empty?
205
- case @line
206
-
207
- when /\A[ \t]+/
208
- @oldline = @line; @line = $'
209
-
210
-
211
-
212
- when /\A\n/
213
- @oldline = @line; @line = $'
214
- yield nil, nil
215
-
216
-
217
- when /\A[a-zA-Z][a-zA-Z0-9_]*/
218
- @oldline = @line; @line = $'
219
- yield :ID, Token[$&, lineno]
220
-
221
-
222
- when /\A'(.+)'/
223
- @oldline = @line; @line = $'
224
- yield :STR, Token[$1, lineno]
225
-
226
-
227
- when /\A::/
228
- @oldline = @line; @line = $'
229
- yield :CC, Token[$&, lineno]
230
-
231
-
232
- when /\A=>/
233
- @oldline = @line; @line = $'
234
- yield :EG, Token[$&, lineno]
235
-
236
-
237
- when /\A./
238
- @oldline = @line; @line = $'
239
- yield $&, Token[$&, lineno]
240
-
241
-
242
- else
243
- raise RuntimeError, "must not happen #{@line}"
244
- end
245
- end
246
- end while @line0 = @line = getline
247
- yield nil, nil
248
- end
249
-
250
- end
251
-
252
- ### Outer Code
253
-
254
- class D4ATreeBuilderExtension_post_rhs::NVAction < Depager::LALR::Action #:nodoc:all
255
- include Depager::DecoratorUtils
256
-
257
- on_reduce = [
258
- nil,
259
- :_act_0,
260
- :_act_1,
261
- :_act_2,
262
- :_act_3,
263
- :_act_4,
264
- :_act_5,
265
- :_act_6,
266
- :_act_7,
267
-
268
- ]
269
- Tables = [on_reduce]
270
- def initialize inside
271
- super inside, 'NVAction'
272
- @on_reduce, = self.class::Tables
273
- init_parser
274
- end
275
-
276
-
277
- module_eval <<-'.,.,122745803312021.,.,', 'atree.dr', 32
278
- def _act_0 val
279
- _EG, _ast, = *val
280
-
281
- n = master.nrules
282
- master.optouter <<
283
- master.gen_defm_code("_atree_#{n} val", _ast, _EG.lineno)
284
- master.on_reduce[n] = ":_atree_#{n}"
285
-
286
- end
287
- .,.,122745803312021.,.,
288
-
289
- module_eval <<-'.,.,122745803352334.,.,', 'atree.dr', 40
290
- def _act_1 val
291
- _ID, _, _, = *val
292
- "[:#{_ID.value}]"
293
-
294
- end
295
- .,.,122745803352334.,.,
296
-
297
- module_eval <<-'.,.,122745803310141.,.,', 'atree.dr', 41
298
- def _act_2 val
299
- _ID, _, _fact_list, _, = *val
300
- "[:#{_ID.value}, #{_fact_list.join(',')}]"
301
-
302
- end
303
- .,.,122745803310141.,.,
304
-
305
- module_eval <<-'.,.,12274580336943.,.,', 'atree.dr', 42
306
- def _act_3 val
307
- _ID, = *val
308
- "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
309
-
310
- end
311
- .,.,12274580336943.,.,
312
-
313
- module_eval <<-'.,.,122745803340243.,.,', 'atree.dr', 45
314
- def _act_4 val
315
- _fact, = *val
316
- [ _fact ]
317
-
318
- end
319
- .,.,122745803340243.,.,
320
-
321
- module_eval <<-'.,.,122745803340227.,.,', 'atree.dr', 46
322
- def _act_5 val
323
- _fact_list, _, _fact, = *val
324
- _fact_list.push _fact
325
-
326
- end
327
- .,.,122745803340227.,.,
328
-
329
- module_eval <<-'.,.,122745803346290.,.,', 'atree.dr', 49
330
- def _act_6 val
331
- _ID, = *val
332
- "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
333
-
334
- end
335
- .,.,122745803346290.,.,
336
-
337
- module_eval <<-'.,.,122745803310739.,.,', 'atree.dr', 50
338
- def _act_7 val
339
- _STR, = *val
340
- "'#{_STR.value}'"
341
-
342
- end
343
- .,.,122745803310739.,.,
344
-
345
- end
346
-
347
-