Class: LL::Parser
Constant Summary
collapse
- CONFIG =
LL::DriverConfig.new
Instance Method Summary
collapse
Methods inherited from Driver
#id_to_terminal, #id_to_type, #parser_error, #parser_error_message
Constructor Details
#initialize(*args) ⇒ Parser
Returns a new instance of Parser.
115
116
117
|
# File 'lib/ll/parser.rb', line 115
def initialize(*args)
@lexer = Lexer.new(*args)
end
|
Instance Method Details
#_rule_0(val) ⇒ Object
138
139
140
|
# File 'lib/ll/parser.rb', line 138
def _rule_0(val)
s(:grammar, val[0])
end
|
#_rule_1(val) ⇒ Object
142
143
144
|
# File 'lib/ll/parser.rb', line 142
def _rule_1(val)
s(:grammar)
end
|
#_rule_10(val) ⇒ Object
180
181
182
|
# File 'lib/ll/parser.rb', line 180
def _rule_10(val)
[val[2]] + val[3]
end
|
#_rule_11(val) ⇒ Object
184
185
186
|
# File 'lib/ll/parser.rb', line 184
def _rule_11(val)
val
end
|
#_rule_12(val) ⇒ Object
188
189
190
191
192
|
# File 'lib/ll/parser.rb', line 188
def _rule_12(val)
s(:terminals, val[1], :source_line => val[0].source_line)
end
|
#_rule_13(val) ⇒ Object
194
195
196
197
198
|
# File 'lib/ll/parser.rb', line 194
def _rule_13(val)
s(:inner, [val[1]], :source_line => val[0].source_line)
end
|
#_rule_14(val) ⇒ Object
200
201
202
203
204
|
# File 'lib/ll/parser.rb', line 200
def _rule_14(val)
s(:header, [val[1]], :source_line => val[0].source_line)
end
|
#_rule_15(val) ⇒ Object
206
207
208
|
# File 'lib/ll/parser.rb', line 206
def _rule_15(val)
[val[0]] + val[1]
end
|
#_rule_16(val) ⇒ Object
210
211
212
|
# File 'lib/ll/parser.rb', line 210
def _rule_16(val)
val[0]
end
|
#_rule_17(val) ⇒ Object
214
215
216
|
# File 'lib/ll/parser.rb', line 214
def _rule_17(val)
val
end
|
#_rule_18(val) ⇒ Object
218
219
220
221
222
|
# File 'lib/ll/parser.rb', line 218
def _rule_18(val)
s(:ident, [val[0].value], :source_line => val[0].source_line)
end
|
#_rule_19(val) ⇒ Object
224
225
226
227
228
|
# File 'lib/ll/parser.rb', line 224
def _rule_19(val)
s(:steps, val[0], :source_line => val[0][0].source_line)
end
|
#_rule_2(val) ⇒ Object
146
147
148
|
# File 'lib/ll/parser.rb', line 146
def _rule_2(val)
val[0] + val[1]
end
|
#_rule_20(val) ⇒ Object
230
231
232
233
234
|
# File 'lib/ll/parser.rb', line 230
def _rule_20(val)
s(:steps, [val[0]], :source_line => val[0].source_line)
end
|
#_rule_21(val) ⇒ Object
236
237
238
|
# File 'lib/ll/parser.rb', line 236
def _rule_21(val)
s(:epsilon, [], :source_line => val[0].source_line)
end
|
#_rule_22(val) ⇒ Object
240
241
242
243
244
245
246
247
248
|
# File 'lib/ll/parser.rb', line 240
def _rule_22(val)
steps = [val[0]]
steps << val[1] if val[1]
s(:branch, steps, :source_line => val[0].source_line)
end
|
#_rule_23(val) ⇒ Object
250
251
252
|
# File 'lib/ll/parser.rb', line 250
def _rule_23(val)
val[0]
end
|
#_rule_24(val) ⇒ Object
254
255
256
|
# File 'lib/ll/parser.rb', line 254
def _rule_24(val)
nil
end
|
#_rule_25(val) ⇒ Object
258
259
260
|
# File 'lib/ll/parser.rb', line 258
def _rule_25(val)
s(:ruby, [val[0].value], :source_line => val[0].source_line)
end
|
#_rule_26(val) ⇒ Object
262
263
264
|
# File 'lib/ll/parser.rb', line 262
def _rule_26(val)
[val[0]] + val[1]
end
|
#_rule_27(val) ⇒ Object
266
267
268
|
# File 'lib/ll/parser.rb', line 266
def _rule_27(val)
val[1]
end
|
#_rule_28(val) ⇒ Object
270
271
272
|
# File 'lib/ll/parser.rb', line 270
def _rule_28(val)
val
end
|
#_rule_29(val) ⇒ Object
274
275
276
277
278
|
# File 'lib/ll/parser.rb', line 274
def _rule_29(val)
s(:rule, [val[0], *val[2]], :source_line => val[0].source_line)
end
|
#_rule_3(val) ⇒ Object
150
151
152
|
# File 'lib/ll/parser.rb', line 150
def _rule_3(val)
val
end
|
#_rule_4(val) ⇒ Object
154
155
156
|
# File 'lib/ll/parser.rb', line 154
def _rule_4(val)
val
end
|
#_rule_5(val) ⇒ Object
158
159
160
|
# File 'lib/ll/parser.rb', line 158
def _rule_5(val)
val
end
|
#_rule_6(val) ⇒ Object
162
163
164
|
# File 'lib/ll/parser.rb', line 162
def _rule_6(val)
val
end
|
#_rule_7(val) ⇒ Object
166
167
168
|
# File 'lib/ll/parser.rb', line 166
def _rule_7(val)
val
end
|
#_rule_8(val) ⇒ Object
170
171
172
|
# File 'lib/ll/parser.rb', line 170
def _rule_8(val)
val
end
|
#_rule_9(val) ⇒ Object
174
175
176
177
178
|
# File 'lib/ll/parser.rb', line 174
def _rule_9(val)
s(:name, [val[1], *val[2]], :source_line => val[0].source_line)
end
|
#each_token {|type, value| ... } ⇒ Object
123
124
125
126
127
128
129
|
# File 'lib/ll/parser.rb', line 123
def each_token
@lexer.advance do |token|
yield [token.type, token]
end
yield [-1, -1]
end
|
#s(*args) ⇒ Object
134
135
136
|
# File 'lib/ll/parser.rb', line 134
def s(*args)
return AST::Node.new(*args)
end
|