Class: LL::Parser
- Inherits:
-
Driver
show all
- Defined in:
- lib/ll/parser.rb
Constant Summary
- CONFIG =
LL::DriverConfig.new
Instance Method Summary
(collapse)
Methods inherited from Driver
#id_to_terminal, #id_to_type, #parser_error_message
Constructor Details
- (Parser) initialize(*args)
Returns a new instance of Parser
135
136
137
|
# File 'lib/ll/parser.rb', line 135
def initialize(*args)
@lexer = Lexer.new(*args)
end
|
Instance Method Details
- (Object) _rule_0(val)
172
173
174
|
# File 'lib/ll/parser.rb', line 172
def _rule_0(val)
s(:grammar, val[0])
end
|
- (Object) _rule_1(val)
176
177
178
|
# File 'lib/ll/parser.rb', line 176
def _rule_1(val)
val[0]
end
|
- (Object) _rule_10(val)
216
217
218
219
220
|
# File 'lib/ll/parser.rb', line 216
def _rule_10(val)
s(:inner, [val[1]], :source_line => val[0].source_line)
end
|
- (Object) _rule_11(val)
222
223
224
225
226
|
# File 'lib/ll/parser.rb', line 222
def _rule_11(val)
s(:header, [val[1]], :source_line => val[0].source_line)
end
|
- (Object) _rule_12(val)
228
229
230
|
# File 'lib/ll/parser.rb', line 228
def _rule_12(val)
val[0]
end
|
- (Object) _rule_13(val)
232
233
234
235
236
|
# File 'lib/ll/parser.rb', line 232
def _rule_13(val)
s(:ident, [val[0].value], :source_line => val[0].source_line)
end
|
- (Object) _rule_14(val)
238
239
240
241
242
|
# File 'lib/ll/parser.rb', line 238
def _rule_14(val)
val[1] ? s(val[1][0], [val[0]], :source_line => val[1][1]) : val[0]
end
|
- (Object) _rule_15(val)
244
245
246
247
248
|
# File 'lib/ll/parser.rb', line 244
def _rule_15(val)
s(val[3][0], val[1], :source_line => val[0].source_line)
end
|
- (Object) _rule_16(val)
250
251
252
|
# File 'lib/ll/parser.rb', line 250
def _rule_16(val)
[:plus, val[0].source_line]
end
|
- (Object) _rule_17(val)
254
255
256
|
# File 'lib/ll/parser.rb', line 254
def _rule_17(val)
[:star, val[0].source_line]
end
|
- (Object) _rule_18(val)
258
259
260
|
# File 'lib/ll/parser.rb', line 258
def _rule_18(val)
[:question, val[0].source_line]
end
|
- (Object) _rule_19(val)
262
263
264
265
266
|
# File 'lib/ll/parser.rb', line 262
def _rule_19(val)
s(:steps, val[0], :source_line => val[0][0].source_line)
end
|
- (Object) _rule_2(val)
180
181
182
|
# File 'lib/ll/parser.rb', line 180
def _rule_2(val)
val[0]
end
|
- (Object) _rule_20(val)
268
269
270
271
272
|
# File 'lib/ll/parser.rb', line 268
def _rule_20(val)
s(:steps, [val[0]], :source_line => val[0].source_line)
end
|
- (Object) _rule_21(val)
274
275
276
|
# File 'lib/ll/parser.rb', line 274
def _rule_21(val)
s(:epsilon, [], :source_line => val[0].source_line)
end
|
- (Object) _rule_22(val)
278
279
280
281
282
283
284
285
286
|
# File 'lib/ll/parser.rb', line 278
def _rule_22(val)
steps = [val[0]]
steps << val[1] if val[1]
s(:branch, steps, :source_line => val[0].source_line)
end
|
- (Object) _rule_23(val)
288
289
290
|
# File 'lib/ll/parser.rb', line 288
def _rule_23(val)
s(:ruby, [val[0].value], :source_line => val[0].source_line)
end
|
- (Object) _rule_24(val)
292
293
294
|
# File 'lib/ll/parser.rb', line 292
def _rule_24(val)
[val[0], *val[1]]
end
|
- (Object) _rule_25(val)
296
297
298
|
# File 'lib/ll/parser.rb', line 296
def _rule_25(val)
val[1]
end
|
- (Object) _rule_26(val)
300
301
302
303
304
|
# File 'lib/ll/parser.rb', line 300
def _rule_26(val)
s(:rule, [val[0], *val[2]], :source_line => val[0].source_line)
end
|
- (Object) _rule_27(val)
306
307
308
|
# File 'lib/ll/parser.rb', line 306
def _rule_27(val)
val[0]
end
|
- (Object) _rule_28(val)
310
311
312
|
# File 'lib/ll/parser.rb', line 310
def _rule_28(val)
val[0]
end
|
- (Object) _rule_29(val)
314
315
316
|
# File 'lib/ll/parser.rb', line 314
def _rule_29(val)
val[0]
end
|
- (Object) _rule_3(val)
184
185
186
|
# File 'lib/ll/parser.rb', line 184
def _rule_3(val)
val[0]
end
|
- (Object) _rule_30(val)
318
319
320
|
# File 'lib/ll/parser.rb', line 318
def _rule_30(val)
val[0]
end
|
- (Object) _rule_31(val)
322
323
324
|
# File 'lib/ll/parser.rb', line 322
def _rule_31(val)
val[0]
end
|
- (Object) _rule_32(val)
326
327
328
|
# File 'lib/ll/parser.rb', line 326
def _rule_32(val)
val[0]
end
|
- (Object) _rule_33(val)
330
331
332
|
# File 'lib/ll/parser.rb', line 330
def _rule_33(val)
val[0]
end
|
- (Object) _rule_4(val)
188
189
190
|
# File 'lib/ll/parser.rb', line 188
def _rule_4(val)
val[0]
end
|
- (Object) _rule_5(val)
192
193
194
|
# File 'lib/ll/parser.rb', line 192
def _rule_5(val)
val[0]
end
|
- (Object) _rule_6(val)
196
197
198
|
# File 'lib/ll/parser.rb', line 196
def _rule_6(val)
val[0]
end
|
- (Object) _rule_7(val)
200
201
202
203
204
|
# File 'lib/ll/parser.rb', line 200
def _rule_7(val)
s(:name, [val[1], *val[2]], :source_line => val[0].source_line)
end
|
- (Object) _rule_8(val)
206
207
208
|
# File 'lib/ll/parser.rb', line 206
def _rule_8(val)
val[2]
end
|
- (Object) _rule_9(val)
210
211
212
213
214
|
# File 'lib/ll/parser.rb', line 210
def _rule_9(val)
s(:terminals, val[1], :source_line => val[0].source_line)
end
|
- (Object) each_token {|type, value| ... }
143
144
145
146
147
148
149
|
# File 'lib/ll/parser.rb', line 143
def each_token
@lexer.advance do |token|
yield [token.type, token]
end
yield [-1, -1]
end
|
- (Object) parser_error(stack_type, stack_value, token_type, token_value)
161
162
163
164
165
166
167
168
169
170
|
# File 'lib/ll/parser.rb', line 161
def parser_error(stack_type, stack_value, token_type, token_value)
message = parser_error_message(stack_type, stack_value, token_type)
if token_value.is_a?(LL::Token)
sl = token_value.source_line
message += " (line #{sl.line}, column #{sl.column})"
end
raise ParserError, message
end
|
- (Object) s(*args)
154
155
156
|
# File 'lib/ll/parser.rb', line 154
def s(*args)
return AST::Node.new(*args)
end
|