Class: ParseDef
- Inherits:
-
EndableParseState
- Object
- ParseState
- EndableParseState
- ParseDef
- Defined in:
- lib/saikuro.rb
Instance Attribute Summary
Attributes inherited from ParseState
#children, #complexity, #lines, #name, #parent
Instance Method Summary collapse
- #compute_state(formater) ⇒ Object
-
#create_def_name(token) ⇒ Object
This way I don’t need to list all possible overload tokens.
-
#initialize(lexer, parent = nil) ⇒ ParseDef
constructor
A new instance of ParseDef.
- #parse_token(token) ⇒ Object
Methods inherited from EndableParseState
Methods inherited from ParseState
#calc_complexity, #calc_lines, #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_right_brace_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) ⇒ ParseDef
Returns a new instance of ParseDef.
468 469 470 471 472 473 |
# File 'lib/saikuro.rb', line 468 def initialize(lexer,parent=nil) super(lexer,parent) @complexity = 1 @looking_for_name = true @first_space = true end |
Instance Method Details
#compute_state(formater) ⇒ Object
520 521 522 523 |
# File 'lib/saikuro.rb', line 520 def compute_state(formater) formater.def_compute_state(@name, self.calc_complexity, self.calc_lines) super(formater) end |
#create_def_name(token) ⇒ Object
This way I don’t need to list all possible overload tokens.
477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 |
# File 'lib/saikuro.rb', line 477 def create_def_name(token) case token when TkSPACE # mark first space so we can stop at next space if @first_space @first_space = false else @looking_for_name = false end when TkNL,TkLPAREN,TkfLPAREN,TkSEMICOLON # we can also stop at a new line or left parenthesis @looking_for_name = false when TkDOT @name<< "." when TkCOLON2 @name<< "::" when TkASSIGN @name<< "=" when TkfLBRACK @name<< "[" when TkRBRACK @name<< "]" else begin @name<< token.name.to_s rescue Exception => err #what is this? STDOUT.puts @@token_counter.current_file STDOUT.puts @name STDOUT.puts token.inspect STDOUT.puts err. exit 1 end end end |
#parse_token(token) ⇒ Object
513 514 515 516 517 518 |
# File 'lib/saikuro.rb', line 513 def parse_token(token) if @looking_for_name create_def_name(token) end super(token) end |