Class: ParseBlock
- Inherits:
-
EndableParseState
- Object
- ParseState
- EndableParseState
- ParseBlock
- Defined in:
- lib/saikuro.rb
Instance Attribute Summary
Attributes inherited from ParseState
#children, #complexity, #lines, #name, #parent
Instance Method Summary collapse
- #do_right_brace_token(token) ⇒ Object
-
#initialize(lexer, parent = nil) ⇒ ParseBlock
constructor
A new instance of ParseBlock.
-
#parse_token(token) ⇒ Object
Because the token for a block and hash right brace is the same, we need to track the hash left braces to determine when an end is encountered.
Methods inherited from EndableParseState
Methods inherited from ParseState
#calc_complexity, #calc_lines, #compute_state, #compute_state_for_global, #count_tokens?, #do_begin_token, #do_block_token, #do_case_token, #do_class_token, #do_comment_token, #do_conditional_do_control_token, #do_conditional_token, #do_constant_token, #do_def_token, #do_else_token, #do_end_token, #do_identifier_token, #do_module_token, #do_one_line_conditional_token, #do_symbol_token, #end_debug, get_token_counter, #lexer=, #lexer_loop?, #make_state, make_top_state, #parse, set_token_counter, #top_state?
Constructor Details
#initialize(lexer, parent = nil) ⇒ ParseBlock
Returns a new instance of ParseBlock.
562 563 564 565 566 |
# File 'lib/saikuro.rb', line 562 def initialize(lexer,parent=nil) super(lexer,parent) @complexity = 1 @lbraces = Array.new end |
Instance Method Details
#do_right_brace_token(token) ⇒ Object
586 587 588 589 590 |
# File 'lib/saikuro.rb', line 586 def do_right_brace_token(token) # we are done ? what about a hash in a block :-/ @run = false nil end |
#parse_token(token) ⇒ Object
Because the token for a block and hash right brace is the same, we need to track the hash left braces to determine when an end is encountered.
571 572 573 574 575 576 577 578 579 580 581 582 583 584 |
# File 'lib/saikuro.rb', line 571 def parse_token(token) if token.is_a?(TkLBRACE) @lbraces.push(true) elsif token.is_a?(TkRBRACE) if @lbraces.empty? do_right_brace_token(token) #do_end_token(token) else @lbraces.pop end else super(token) end end |