class LL::Parser
Constants
- CONFIG
Public Class Methods
new(*args)
click to toggle source
@see [LL::Lexer#initialize]
# File lib/ll/parser.rb, line 135 def initialize(*args) @lexer = Lexer.new(*args) end
Public Instance Methods
_rule_0(val)
click to toggle source
# File lib/ll/parser.rb, line 172 def _rule_0(val) s(:grammar, val[0]) end
_rule_1(val)
click to toggle source
# File lib/ll/parser.rb, line 176 def _rule_1(val) val[0] end
_rule_10(val)
click to toggle source
# File lib/ll/parser.rb, line 216 def _rule_10(val) s(:inner, [val[1]], :source_line => val[0].source_line) end
_rule_11(val)
click to toggle source
# File lib/ll/parser.rb, line 222 def _rule_11(val) s(:header, [val[1]], :source_line => val[0].source_line) end
_rule_12(val)
click to toggle source
# File lib/ll/parser.rb, line 228 def _rule_12(val) val[0] end
_rule_13(val)
click to toggle source
# File lib/ll/parser.rb, line 232 def _rule_13(val) s(:ident, [val[0].value], :source_line => val[0].source_line) end
_rule_14(val)
click to toggle source
# 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
_rule_15(val)
click to toggle source
# File lib/ll/parser.rb, line 244 def _rule_15(val) s(val[3][0], val[1], :source_line => val[0].source_line) end
_rule_16(val)
click to toggle source
# File lib/ll/parser.rb, line 250 def _rule_16(val) [:plus, val[0].source_line] end
_rule_17(val)
click to toggle source
# File lib/ll/parser.rb, line 254 def _rule_17(val) [:star, val[0].source_line] end
_rule_18(val)
click to toggle source
# File lib/ll/parser.rb, line 258 def _rule_18(val) [:question, val[0].source_line] end
_rule_19(val)
click to toggle source
# File lib/ll/parser.rb, line 262 def _rule_19(val) s(:steps, val[0], :source_line => val[0][0].source_line) end
_rule_2(val)
click to toggle source
# File lib/ll/parser.rb, line 180 def _rule_2(val) val[0] end
_rule_20(val)
click to toggle source
# File lib/ll/parser.rb, line 268 def _rule_20(val) s(:steps, [val[0]], :source_line => val[0].source_line) end
_rule_21(val)
click to toggle source
# File lib/ll/parser.rb, line 274 def _rule_21(val) s(:epsilon, [], :source_line => val[0].source_line) end
_rule_22(val)
click to toggle source
# 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
_rule_23(val)
click to toggle source
# File lib/ll/parser.rb, line 288 def _rule_23(val) s(:ruby, [val[0].value], :source_line => val[0].source_line) end
_rule_24(val)
click to toggle source
# File lib/ll/parser.rb, line 292 def _rule_24(val) [val[0], *val[1]] end
_rule_25(val)
click to toggle source
# File lib/ll/parser.rb, line 296 def _rule_25(val) val[1] end
_rule_26(val)
click to toggle source
# File lib/ll/parser.rb, line 300 def _rule_26(val) s(:rule, [val[0], *val[2]], :source_line => val[0].source_line) end
_rule_27(val)
click to toggle source
# File lib/ll/parser.rb, line 306 def _rule_27(val) val[0] end
_rule_28(val)
click to toggle source
# File lib/ll/parser.rb, line 310 def _rule_28(val) val[0] end
_rule_29(val)
click to toggle source
# File lib/ll/parser.rb, line 314 def _rule_29(val) val[0] end
_rule_3(val)
click to toggle source
# File lib/ll/parser.rb, line 184 def _rule_3(val) val[0] end
_rule_30(val)
click to toggle source
# File lib/ll/parser.rb, line 318 def _rule_30(val) val[0] end
_rule_31(val)
click to toggle source
# File lib/ll/parser.rb, line 322 def _rule_31(val) val[0] end
_rule_32(val)
click to toggle source
# File lib/ll/parser.rb, line 326 def _rule_32(val) val[0] end
_rule_33(val)
click to toggle source
# File lib/ll/parser.rb, line 330 def _rule_33(val) val[0] end
_rule_4(val)
click to toggle source
# File lib/ll/parser.rb, line 188 def _rule_4(val) val[0] end
_rule_5(val)
click to toggle source
# File lib/ll/parser.rb, line 192 def _rule_5(val) val[0] end
_rule_6(val)
click to toggle source
# File lib/ll/parser.rb, line 196 def _rule_6(val) val[0] end
_rule_7(val)
click to toggle source
# File lib/ll/parser.rb, line 200 def _rule_7(val) s(:name, [val[1], *val[2]], :source_line => val[0].source_line) end
_rule_8(val)
click to toggle source
# File lib/ll/parser.rb, line 206 def _rule_8(val) val[2] end
_rule_9(val)
click to toggle source
# File lib/ll/parser.rb, line 210 def _rule_9(val) s(:terminals, val[1], :source_line => val[0].source_line) end
each_token() { |type, token| ... }
click to toggle source
@yieldparam [Symbol] type @yieldparam [String] value
# File lib/ll/parser.rb, line 143 def each_token @lexer.advance do |token| yield [token.type, token] end yield [-1, -1] end
parser_error(stack_type, stack_value, token_type, token_value)
click to toggle source
@see [LL::Driver#parser_error]
# 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
s(*args)
click to toggle source
@see [LL::AST::Node#initialize]
# File lib/ll/parser.rb, line 154 def s(*args) return AST::Node.new(*args) end