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.
558 559 560 561 562 |
# File 'lib/saikuro.rb', line 558 def initialize(lexer,parent=nil) super(lexer,parent) @complexity = 1 @lbraces = Array.new end |
Instance Method Details
#do_right_brace_token(token) ⇒ Object
582 583 584 585 586 |
# File 'lib/saikuro.rb', line 582 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.
567 568 569 570 571 572 573 574 575 576 577 578 579 580 |
# File 'lib/saikuro.rb', line 567 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 |