Object
A LALR state.
 
               # File racc/state.rb, line 647
def ==(oth)
  @ident == oth.ident
end
             
             
               # File racc/state.rb, line 664
def check_la(la_rules)
  @conflict = false
  s = []
  r = []
  @closure.each do |ptr|
    if t = ptr.dereference
      if t.terminal?
        s[t.ident] = t
        if t.ident == 1    # $error
          @conflict = true
        end
      end
    else
      r.push ptr.rule
    end
  end
  unless r.empty?
    if not s.empty? or r.size > 1
      @conflict = true
    end
  end
  s.compact!
  @stokens  = s
  @rrules = r
  if @conflict
    @la_rules_i = la_rules.size
    @la_rules = r.map {|i| i.ident }
    la_rules.concat r
  else
    @la_rules_i = @la_rules = nil
  end
end
             
             
               # File racc/state.rb, line 641
def inspect
  "<state #{@ident}>"
end
             
             
               # File racc/state.rb, line 715
def la=(la)
  return unless @conflict
  i = @la_rules_i
  @ritems = r = []
  @rrules.each do |rule|
    r.push Item.new(rule, la[i])
    i += 1
  end
end
             
             
               # File racc/state.rb, line 653
def make_closure(core)
  set = ISet.new
  core.each do |ptr|
    set.add ptr
    if t = ptr.dereference and t.nonterminal?
      set.update_a t.expand
    end
  end
  set.to_a
end
             
             
               # File racc/state.rb, line 751
def n_rrconflicts
  @rrconf ? @rrconf.size : 0
end
             
             
               # File racc/state.rb, line 747
def n_srconflicts
  @srconf ? @srconf.size : 0
end
             
             
               # File racc/state.rb, line 725
def rr_conflict(high, low, ctok)
  c = RRconflict.new(@ident, high, low, ctok)
  @rrconf ||= {}
  if a = @rrconf[ctok]
    a.push c
  else
    @rrconf[ctok] = [c]
  end
end
             
             
               # File racc/state.rb, line 702
def rruleid(rule)
  if i = @la_rules.index(rule.ident)
    @la_rules_i + i
  else
    puts '/// rruleid'
    p self
    p rule
    p @rrules
    p @la_rules_i
    raise 'racc: fatal: cannot get reduce rule id'
  end
end