lib/lrama/state.rb in lrama-0.5.3 vs lib/lrama/state.rb in lrama-0.5.4

- old
+ new

@@ -1,13 +1,13 @@ require "lrama/state/reduce" -require "lrama/state/shift" +require "lrama/state/reduce_reduce_conflict" require "lrama/state/resolved_conflict" +require "lrama/state/shift" +require "lrama/state/shift_reduce_conflict" module Lrama class State - Conflict = Struct.new(:symbols, :reduce, :type, keyword_init: true) - attr_reader :id, :accessing_symbol, :kernels, :conflicts, :resolved_conflicts, :default_reduction_rule, :closure, :items attr_accessor :shifts, :reduces def initialize(id, accessing_symbol, kernels) @@ -99,10 +99,14 @@ end @term_transitions end + def transitions + term_transitions + nterm_transitions + end + def selected_term_transitions term_transitions.select do |shift, next_state| !shift.not_selected end end @@ -140,9 +144,13 @@ reduces.each do |r| if r.rule == default_reduction_rule r.default_reduction = true end end + end + + def has_conflicts? + !@conflicts.empty? end def sr_conflicts @conflicts.select do |conflict| conflict.type == :shift_reduce