Sha256: d2d60c97ce6481cfc050e43ebda2024199e43b33081f608ba5df07d9815f6e8c
Contents?: true
Size: 1.53 KB
Versions: 2
Compression:
Stored size: 1.53 KB
Contents
Productions: <% len = grammar.all_productions.size.to_s.size productions = recognizer.states.map(&:rules).inject(:merge). select(&:final?).map { |x| [x.to_s(false), x.production.block] } body = productions.map { |_| _[0].size }.max productions.each do |prod| -%> <%= sprintf("%-#{body}s", prod[0]) %> <%= prod[1] %> <% end -%> <% if unused_symbols.any? -%> Symbols unused in grammar: <%- unused_symbols.each do |sym| -%> <%= sym %> <%- end -%> <%- end -%> Precedence: --- highest <% grammar.precedence.each do |pr| -%> <%= format("%-8s", pr.type) %> <%= pr.level %>: <%= "{" << pr.tokens.to_a.join(", ") << "}" %> <%- end -%> --- lowest <% states = grammar.states.to_a table.each_with_index do |v, i| state = states[i] -%> State <%= i %>: <%- state.rules.each do |rule| -%> <%= rule %> {<%= rule.lookahead.to_a.join(", ") %>} <% end transitions = v.each.select { |_, a| a && a[0] == :state } reductions = v.each.select { |_, a| a && a[0] == :reduce} accepting = v.each.select { |_, a| a && a[0] == :accept} thing = [:transitions, :reductions, :accepting] num_type = { transitions: "State", reductions: "Rule", accepting: "Rule" } h = Hash[thing.zip([transitions, reductions, accepting])] h.each do |key, value| next unless value.any? -%> <%= key %>: <% value.each do |token, (_, name)| token_value = grammar.terminals. find { |_| _.name == token } || token -%> <%= token_value %>: <%= num_type[key] %> <%= name %> <%- end -%> <%- end -%> <%- end -%>
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
antelope-0.4.1 | lib/antelope/generator/templates/info.erb |
antelope-0.4.0 | lib/antelope/generator/templates/info.erb |