Class: Depager::StatefulLexerExtension::PreRuleList0::Parser
- Inherits:
-
LALR::Basis
- Object
- LALR::Parser
- LALR::Basis
- Depager::StatefulLexerExtension::PreRuleList0::Parser
- Includes:
- Utils::ExtensionSlaveMethods
- Defined in:
- lib/depager/plugins/slex.rb
Overview
:nodoc:all
Constant Summary collapse
- REDUCE_TABLE =
Reduce Table
[ [ -1, 1 ], [ 0, 1 ], [ 1, 0 ], [ 1, 3 ], [ 2, 4 ], [ 4, 0 ], [ 4, 2 ], [ 3, 1 ], [ 3, 2 ], [ 5, 3 ], [ 7, 0 ], [ 7, 1 ], [ 6, 1 ], [ 6, 3 ], ]
- TERM_TO_INT =
Term to Int
{ nil => 0, false => 1, "<" => 2, :ID => 3, ">" => 4, ":" => 5, :ACTION => 6, "!" => 7, :LEX => 8, "," => 9, }
- INT_TO_TERM =
Int to Term
[ nil, false, "<", :ID, ">", ":", :ACTION, "!", :LEX, ",", ]
- ACTION_TABLE =
Action Table
[ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, 8, nil, ], [ nil, nil, nil, 9, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, 8, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, 12, nil, 13, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, 15, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, 16, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, 17, nil, ], [ nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, ], [ nil, nil, nil, 19, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ], ]
- DEFRED_TABLE =
Default Reduce Table
[ -2, nil, -1, nil, nil, -3, -7, -10, -12, -5, -8, nil, -11, nil, nil, nil, -9, -13, -4, -6, ]
- DEFRED_AFTER_SHIFT_TABLE =
[ -2, nil, nil, nil, nil, nil, -7, nil, -12, nil, -8, nil, -11, nil, nil, nil, -9, -13, -4, -6, ]
- NONTERM_TO_INT =
Nonterm to Int
{ :start => 0, :mode_list => 1, :mode => 2, :lexactlist => 3, :opt_super => 4, :lexact => 5, :lexlist => 6, :opt_noskip => 7, }
- INT_TO_NONTERM =
Int to Nonterm
[ :start, :mode_list, :mode, :lexactlist, :opt_super, :lexact, :lexlist, :opt_noskip, ]
- GOTO_TABLE =
Goto Table
[ [ 1, 2, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, 3, nil, nil, nil, nil, nil, ], [ nil, nil, nil, 5, nil, 6, 7, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, 10, 7, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, 11, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, 14, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], [ nil, nil, nil, nil, nil, nil, nil, nil, ], ]
Constants inherited from LALR::Parser
Instance Attribute Summary
Attributes included from Utils::ExtensionSlaveMethods
Attributes inherited from LALR::Basis
#action_value, #basis, #file, #line, #lookahead, #parser_size, #stack
Instance Method Summary collapse
- #action_table ⇒ Object
- #banner ⇒ Object
- #defred_after_shift_table ⇒ Object
- #defred_table ⇒ Object
- #do_parse? ⇒ Boolean
- #goto_table ⇒ Object
-
#initialize(g_parser, master) ⇒ Parser
constructor
A new instance of Parser.
- #int_to_nonterm ⇒ Object
- #int_to_term ⇒ Object
- #lex {|nil, nil| ... } ⇒ Object
- #nonterm_to_int ⇒ Object
- #reduce_table ⇒ Object
- #term_to_int ⇒ Object
Methods included from Utils::ExtensionSlaveMethods
#abort_driver, #do_default, #do_parse
Methods included from Utils::CodeGeneratorMethods
#expand_inline_code, #generate_action_decorator_code, #generate_decorator_code, #parse_block
Methods included from Utils::CommonMethods
#error_exit, #error_message, #expanded_code_delimiter, #file, #full_target_name, #input_path, #inspect, #target_name, #target_namespace, #warning
Methods inherited from LALR::Basis
#abort_driver, #accept, #do_abort_driver, #error, #next_decorator_index, #reduce, #shift
Methods inherited from LALR::Parser
#accept, #error, #parse, #reduce, #shift
Constructor Details
Instance Method Details
#action_table ⇒ Object
177 |
# File 'lib/depager/plugins/slex.rb', line 177 def action_table; ACTION_TABLE; end |
#banner ⇒ Object
298 299 300 |
# File 'lib/depager/plugins/slex.rb', line 298 def "%LEX{ ... } / Depager::StatefulLexerExtension" end |
#defred_after_shift_table ⇒ Object
226 |
# File 'lib/depager/plugins/slex.rb', line 226 def defred_after_shift_table; DEFRED_AFTER_SHIFT_TABLE; end |
#defred_table ⇒ Object
202 |
# File 'lib/depager/plugins/slex.rb', line 202 def defred_table; DEFRED_TABLE; end |
#do_parse? ⇒ Boolean
288 289 290 291 292 293 294 295 |
# File 'lib/depager/plugins/slex.rb', line 288 def do_parse? if @line.match(/^\s*%LEX\{\s*\Z/) @line = $' true else false end end |
#goto_table ⇒ Object
277 |
# File 'lib/depager/plugins/slex.rb', line 277 def goto_table; GOTO_TABLE; end |
#int_to_nonterm ⇒ Object
252 |
# File 'lib/depager/plugins/slex.rb', line 252 def int_to_nonterm; INT_TO_NONTERM; end |
#int_to_term ⇒ Object
152 |
# File 'lib/depager/plugins/slex.rb', line 152 def int_to_term; INT_TO_TERM; end |
#lex {|nil, nil| ... } ⇒ Object
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
# File 'lib/depager/plugins/slex.rb', line 302 def lex begin until @line.empty? case @line when /\A\s+/, /\A#.*\Z/ @line = $' when /\A[A-Z]+/ @line = $' yield token(:ID, $&) when /\A\%\}\s*\Z/ @line = $' yield nil,nil when /\A\/(([^\/\\]+|\\.)*)\// @line = $' yield token(:LEX, "/\\A#{$1}/") when /\A'([^'\\]+|\\.)*'/, /\A"([^"\\]+|\\.)*"/ @line = $' yield token(:LEX, "/\\A#{Regexp.escape($1).gsub('/', '\/')}/") when /\A\{/ # lineno = file.lineno yield token(:ACTION, parse_block, lineno) when /\A./ @line = $' yield token($&, $&) else raise RuntimeError, "must not happen #{@line}" end end end while @original_line = @line = file.gets yield nil, nil end |
#nonterm_to_int ⇒ Object
239 |
# File 'lib/depager/plugins/slex.rb', line 239 def nonterm_to_int; NONTERM_TO_INT; end |
#reduce_table ⇒ Object
122 |
# File 'lib/depager/plugins/slex.rb', line 122 def reduce_table; REDUCE_TABLE; end |
#term_to_int ⇒ Object
137 |
# File 'lib/depager/plugins/slex.rb', line 137 def term_to_int; TERM_TO_INT; end |