lib/lrama/states_reporter.rb in lrama-0.6.1 vs lib/lrama/states_reporter.rb in lrama-0.6.2
- old
+ new
@@ -51,11 +51,11 @@
def report_grammar(io)
io << "Grammar\n"
last_lhs = nil
@states.rules.each do |rule|
- if rule.rhs.empty?
+ if rule.empty_rule?
r = "ε"
else
r = rule.rhs.map(&:display_name).join(" ")
end
@@ -82,32 +82,30 @@
# Report item
last_lhs = nil
list = itemsets ? state.items : state.kernels
list.sort_by {|i| [i.rule_id, i.position] }.each do |item|
- rule = item.rule
- position = item.position
- if rule.rhs.empty?
+ if item.empty_rule?
r = "ε •"
else
- r = rule.rhs.map(&:display_name).insert(position, "•").join(" ")
+ r = item.rhs.map(&:display_name).insert(item.position, "•").join(" ")
end
- if rule.lhs == last_lhs
- l = " " * rule.lhs.id.s_value.length + "|"
+ if item.lhs == last_lhs
+ l = " " * item.lhs.id.s_value.length + "|"
else
- l = rule.lhs.id.s_value + ":"
+ l = item.lhs.id.s_value + ":"
end
la = ""
if lookaheads && item.end_of_rule?
reduce = state.find_reduce_by_item!(item)
look_ahead = reduce.selected_look_ahead
if !look_ahead.empty?
la = " [#{look_ahead.map(&:display_name).join(", ")}]"
end
end
- last_lhs = rule.lhs
+ last_lhs = item.lhs
- io << sprintf("%5i %s %s%s\n", rule.id, l, r, la)
+ io << sprintf("%5i %s %s%s\n", item.rule_id, l, r, la)
end
io << "\n"
# Report shifts
tmp = state.term_transitions.select do |shift, _|