From 1af6c27dada564d089ac9d64cf64f30289b2f5f6 Mon Sep 17 00:00:00 2001 From: Junichi Kobayashi Date: Wed, 10 Apr 2024 15:37:41 +0900 Subject: [PATCH] Refactor State#xxx_transitions --- lib/lrama/state.rb | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/lib/lrama/state.rb b/lib/lrama/state.rb index 45bfe5ac..ceb74d85 100644 --- a/lib/lrama/state.rb +++ b/lib/lrama/state.rb @@ -70,38 +70,16 @@ def set_look_ahead(rule, look_ahead) reduce.look_ahead = look_ahead end - # Returns array of [Shift, next_state] def nterm_transitions - return @nterm_transitions if @nterm_transitions - - @nterm_transitions = [] - - shifts.each do |shift| - next if shift.next_sym.term? - - @nterm_transitions << [shift, @items_to_state[shift.next_items]] - end - - @nterm_transitions + @nterm_transitions ||= transitions.select {|shift, _| shift.next_sym.nterm? } end - # Returns array of [Shift, next_state] def term_transitions - return @term_transitions if @term_transitions - - @term_transitions = [] - - shifts.each do |shift| - next if shift.next_sym.nterm? - - @term_transitions << [shift, @items_to_state[shift.next_items]] - end - - @term_transitions + @term_transitions ||= transitions.select {|shift, _| shift.next_sym.term? } end def transitions - term_transitions + nterm_transitions + @transitions ||= shifts.map {|shift| [shift, @items_to_state[shift.next_items]] } end def selected_term_transitions