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