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.
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
@@ -0,0 +1,192 @@
1
+
2
+ begin; require 'rubygems'; rescue Exception; end
3
+ require 'depager/parser.rb'
4
+
5
+
6
+ module D4TinyCalc
7
+ end
8
+
9
+ class TinyCalc < Depager::LALR::Basis
10
+
11
+
12
+ ### Reduce Table
13
+ reduce_table = [
14
+ [ -1, 1 ], # ( 0) $start : expr
15
+ [ 0, 3 ], # ( 1) expr : expr + term
16
+ [ 0, 3 ], # ( 2) expr : expr - term
17
+ [ 0, 1 ], # ( 3) expr : term
18
+ [ 1, 3 ], # ( 4) term : term * fact
19
+ [ 1, 3 ], # ( 5) term : term / fact
20
+ [ 1, 1 ], # ( 6) term : fact
21
+ [ 2, 1 ], # ( 7) fact : NUM
22
+ [ 2, 3 ], # ( 8) fact : ( expr )
23
+ ]
24
+ ### Extension Params
25
+ nparams = {
26
+ }
27
+ ### Term to Int
28
+ t2i = {
29
+ nil => 0,
30
+ false => 1,
31
+ "+" => 2,
32
+ "-" => 3,
33
+ "*" => 4,
34
+ "/" => 5,
35
+ :NUM => 6,
36
+ "(" => 7,
37
+ ")" => 8,
38
+ }
39
+ ### Int to Term
40
+ i2t = [
41
+ nil,
42
+ false,
43
+ "+",
44
+ "-",
45
+ "*",
46
+ "/",
47
+ :NUM,
48
+ "(",
49
+ ")",
50
+ ]
51
+ ### Action Table
52
+ action_table = [
53
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
54
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
55
+ [ ACC, nil, 7, 8, nil, nil, nil, nil, nil, ],
56
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
57
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
58
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
59
+ [ nil, nil, 7, 8, nil, nil, nil, nil, 11, ],
60
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
61
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
62
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
63
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
64
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
65
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
66
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
67
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
68
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
69
+ ]
70
+ ### Default Reduce Table
71
+ defred_table = [
72
+ nil,
73
+ nil,
74
+ nil,
75
+ -3,
76
+ -6,
77
+ -7,
78
+ nil,
79
+ nil,
80
+ nil,
81
+ nil,
82
+ nil,
83
+ -8,
84
+ -1,
85
+ -2,
86
+ -4,
87
+ -5,
88
+ ]
89
+ defred_after_shift_table = [
90
+ nil,
91
+ nil,
92
+ nil,
93
+ nil,
94
+ -6,
95
+ -7,
96
+ nil,
97
+ nil,
98
+ nil,
99
+ nil,
100
+ nil,
101
+ -8,
102
+ nil,
103
+ nil,
104
+ -4,
105
+ -5,
106
+ ]
107
+ ### Nonterm to Int
108
+ nt2i = {
109
+ :expr => 0,
110
+ :term => 1,
111
+ :fact => 2,
112
+ }
113
+ ### Int to Nonterm
114
+ i2nt = [
115
+ :expr,
116
+ :term,
117
+ :fact,
118
+ ]
119
+ ### Goto Table
120
+ goto_table = [
121
+ [ 2, 3, 4, ],
122
+ [ 6, 3, 4, ],
123
+ [ nil, nil, nil, ],
124
+ [ nil, nil, nil, ],
125
+ [ nil, nil, nil, ],
126
+ [ nil, nil, nil, ],
127
+ [ nil, nil, nil, ],
128
+ [ nil, 12, 4, ],
129
+ [ nil, 13, 4, ],
130
+ [ nil, nil, 14, ],
131
+ [ nil, nil, 15, ],
132
+ [ nil, nil, nil, ],
133
+ [ nil, nil, nil, ],
134
+ [ nil, nil, nil, ],
135
+ [ nil, nil, nil, ],
136
+ [ nil, nil, nil, ],
137
+ ]
138
+
139
+ Tables = [ reduce_table, nparams, action_table,
140
+ defred_table, defred_after_shift_table, goto_table,
141
+ t2i, i2t, nt2i, i2nt ]
142
+
143
+ def self.createDecoratedParser
144
+ TinyCalc.new()
145
+ end
146
+
147
+ ### Inner Code
148
+
149
+ def lex
150
+ begin
151
+ until @line.empty?
152
+ case @line
153
+
154
+ when /\A\s+/, /\A\#.*/, /\A\n/
155
+ @oldline = @line; @line = $'
156
+
157
+
158
+
159
+ when /\A[1-9][0-9]*/
160
+ @oldline = @line; @line = $'
161
+ yield :NUM, $&.to_i
162
+
163
+
164
+ when /\A./
165
+ @oldline = @line; @line = $'
166
+ yield $&, $&
167
+
168
+
169
+ else
170
+ raise RuntimeError, "must not happen #{@line}"
171
+ end
172
+ end
173
+ end while @line0 = @line = getline
174
+ yield nil, nil
175
+ end
176
+
177
+ end
178
+
179
+ ### Outer Code
180
+
181
+
182
+ def createDecoratedTinyCalc
183
+ TinyCalc.new()
184
+ end
185
+
186
+ ### main
187
+ if __FILE__ == $0
188
+ ### Main Code
189
+ parser = TinyCalc.new()
190
+ parser.yyparse(STDIN)
191
+
192
+ end
@@ -0,0 +1,291 @@
1
+
2
+ begin; require 'rubygems'; rescue Exception; end
3
+ require 'depager/parser.rb'
4
+
5
+
6
+ module D4TinyCalc
7
+ end
8
+
9
+ class TinyCalc < Depager::LALR::Basis
10
+
11
+
12
+ ### Reduce Table
13
+ reduce_table = [
14
+ [ -1, 1 ], # ( 0) $start : expr
15
+ [ 0, 3 ], # ( 1) expr : expr + term
16
+ [ 0, 3 ], # ( 2) expr : expr - term
17
+ [ 0, 1 ], # ( 3) expr : term
18
+ [ 1, 3 ], # ( 4) term : term * fact
19
+ [ 1, 3 ], # ( 5) term : term / fact
20
+ [ 1, 1 ], # ( 6) term : fact
21
+ [ 2, 1 ], # ( 7) fact : NUM
22
+ [ 2, 3 ], # ( 8) fact : ( expr )
23
+ ]
24
+ ### Extension Params
25
+ nparams = {
26
+ 'NVAction' => 2,
27
+ }
28
+ ### Term to Int
29
+ t2i = {
30
+ nil => 0,
31
+ false => 1,
32
+ "+" => 2,
33
+ "-" => 3,
34
+ "*" => 4,
35
+ "/" => 5,
36
+ :NUM => 6,
37
+ "(" => 7,
38
+ ")" => 8,
39
+ }
40
+ ### Int to Term
41
+ i2t = [
42
+ nil,
43
+ false,
44
+ "+",
45
+ "-",
46
+ "*",
47
+ "/",
48
+ :NUM,
49
+ "(",
50
+ ")",
51
+ ]
52
+ ### Action Table
53
+ action_table = [
54
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
55
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
56
+ [ ACC, nil, 7, 8, nil, nil, nil, nil, nil, ],
57
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
58
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
59
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
60
+ [ nil, nil, 7, 8, nil, nil, nil, nil, 11, ],
61
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
62
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
63
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
64
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
65
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
66
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
67
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
68
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
69
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
70
+ ]
71
+ ### Default Reduce Table
72
+ defred_table = [
73
+ nil,
74
+ nil,
75
+ nil,
76
+ -3,
77
+ -6,
78
+ -7,
79
+ nil,
80
+ nil,
81
+ nil,
82
+ nil,
83
+ nil,
84
+ -8,
85
+ -1,
86
+ -2,
87
+ -4,
88
+ -5,
89
+ ]
90
+ defred_after_shift_table = [
91
+ nil,
92
+ nil,
93
+ nil,
94
+ nil,
95
+ -6,
96
+ -7,
97
+ nil,
98
+ nil,
99
+ nil,
100
+ nil,
101
+ nil,
102
+ -8,
103
+ nil,
104
+ nil,
105
+ -4,
106
+ -5,
107
+ ]
108
+ ### Nonterm to Int
109
+ nt2i = {
110
+ :expr => 0,
111
+ :term => 1,
112
+ :fact => 2,
113
+ }
114
+ ### Int to Nonterm
115
+ i2nt = [
116
+ :expr,
117
+ :term,
118
+ :fact,
119
+ ]
120
+ ### Goto Table
121
+ goto_table = [
122
+ [ 2, 3, 4, ],
123
+ [ 6, 3, 4, ],
124
+ [ nil, nil, nil, ],
125
+ [ nil, nil, nil, ],
126
+ [ nil, nil, nil, ],
127
+ [ nil, nil, nil, ],
128
+ [ nil, nil, nil, ],
129
+ [ nil, 12, 4, ],
130
+ [ nil, 13, 4, ],
131
+ [ nil, nil, 14, ],
132
+ [ nil, nil, 15, ],
133
+ [ nil, nil, nil, ],
134
+ [ nil, nil, nil, ],
135
+ [ nil, nil, nil, ],
136
+ [ nil, nil, nil, ],
137
+ [ nil, nil, nil, ],
138
+ ]
139
+
140
+ Tables = [ reduce_table, nparams, action_table,
141
+ defred_table, defred_after_shift_table, goto_table,
142
+ t2i, i2t, nt2i, i2nt ]
143
+
144
+ def self.createDecoratedParser
145
+ D4TinyCalc::NVAction.new(TinyCalc.new())
146
+ end
147
+
148
+ ### Inner Code
149
+
150
+ def lex
151
+ begin
152
+ until @line.empty?
153
+ case @line
154
+
155
+ when /\A\s+/, /\A\#.*/
156
+ @oldline = @line; @line = $'
157
+
158
+
159
+
160
+ when /\A[1-9][0-9]*/
161
+ @oldline = @line; @line = $'
162
+ yield _Token(:NUM, $&.to_i)
163
+
164
+
165
+ when /\A./
166
+ @oldline = @line; @line = $'
167
+ yield _Token($&, $&)
168
+
169
+
170
+ else
171
+ raise RuntimeError, "must not happen #{@line}"
172
+ end
173
+ end
174
+ end while @line0 = @line = getline
175
+ yield nil, nil
176
+ end
177
+
178
+ end
179
+
180
+ ### Outer Code
181
+
182
+ class D4TinyCalc::NVAction < Depager::LALR::Action #:nodoc:all
183
+ include Depager::DecoratorUtils
184
+
185
+ on_reduce = [
186
+ nil,
187
+ :_act_0,
188
+ :_act_1,
189
+ :_act_2,
190
+ :_act_3,
191
+ :_act_4,
192
+ :_act_5,
193
+ :_act_6,
194
+ :_act_7,
195
+
196
+ ]
197
+ Tables = [on_reduce]
198
+ def initialize inside
199
+ super inside, 'NVAction'
200
+ @on_reduce, = self.class::Tables
201
+ init_parser
202
+ end
203
+
204
+
205
+ module_eval <<-'.,.,11875410918262.,.,', 'sample_calc/calc.nvaction.dr', 14
206
+ def _act_0 val
207
+ _expr, _, _term = *val
208
+ _expr + _term
209
+
210
+ end
211
+
212
+ .,.,11875410918262.,.,
213
+
214
+ module_eval <<-'.,.,1187541091927.,.,', 'sample_calc/calc.nvaction.dr', 15
215
+ def _act_1 val
216
+ _expr, _, _term = *val
217
+ _expr - _term
218
+
219
+ end
220
+
221
+ .,.,1187541091927.,.,
222
+
223
+ module_eval <<-'.,.,118754109144413.,.,', 'sample_calc/calc.nvaction.dr', 16
224
+ def _act_2 val
225
+ _term = *val
226
+ _term
227
+
228
+ end
229
+
230
+ .,.,118754109144413.,.,
231
+
232
+ module_eval <<-'.,.,118754109140027.,.,', 'sample_calc/calc.nvaction.dr', 19
233
+ def _act_3 val
234
+ _term, _, _fact = *val
235
+ _term * _fact
236
+
237
+ end
238
+
239
+ .,.,118754109140027.,.,
240
+
241
+ module_eval <<-'.,.,118754109114448.,.,', 'sample_calc/calc.nvaction.dr', 20
242
+ def _act_4 val
243
+ _term, _, _fact = *val
244
+ _term / _fact
245
+
246
+ end
247
+
248
+ .,.,118754109114448.,.,
249
+
250
+ module_eval <<-'.,.,11875410913851.,.,', 'sample_calc/calc.nvaction.dr', 21
251
+ def _act_5 val
252
+ _fact = *val
253
+ _fact
254
+
255
+ end
256
+
257
+ .,.,11875410913851.,.,
258
+
259
+ module_eval <<-'.,.,118754109131622.,.,', 'sample_calc/calc.nvaction.dr', 24
260
+ def _act_6 val
261
+ _NUM = *val
262
+ _NUM.value
263
+
264
+ end
265
+
266
+ .,.,118754109131622.,.,
267
+
268
+ module_eval <<-'.,.,118754109111174.,.,', 'sample_calc/calc.nvaction.dr', 25
269
+ def _act_7 val
270
+ _, _expr, _ = *val
271
+ _expr
272
+
273
+ end
274
+
275
+ .,.,118754109111174.,.,
276
+
277
+ end
278
+
279
+
280
+ def createDecoratedTinyCalc
281
+ D4TinyCalc::NVAction.new(TinyCalc.new())
282
+ end
283
+
284
+ ### main
285
+ if __FILE__ == $0
286
+ ### Main Code
287
+ parser = createDecoratedTinyCalc
288
+ r, = parser.yyparse(STDIN)
289
+ puts r
290
+
291
+ end