Sha256: 0083c3b031d4ab4b5ff7f978f6dc75138d60557bf6fa334799f3f4537db15c7e

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

Productions:
% len = grammar.all_productions.size.to_s.size
% productions = grammar.all_productions.
%   map { |x| ["#{x.label}: #{x.items.join(' ')}", x.block] }
% body = productions.map { |_| _.first.size }.max
% productions.each_with_index do |prod, i|
  <%= "%#{len}s" % i %> <%= "%-#{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|
  <%= "%-8s" % pr.type %> <%= pr.level %>:
    {<%= pr.tokens.to_a.join(", ") %>}
% end
  --- lowest

% len = tableizer.table.flatten.map(&:keys).flatten.map(&:size).max
% states = grammar.states.to_a
% tableizer.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}
%   conflicts   = tableizer.conflicts[i].each
%   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
%   if conflicts.any?
    conflicts:
%     conflicts.each do |token, (first, second, rule, terminal)|
      <%= token %>: <%= first.join(" ") %>/<%= second.join(" ") %> (<%= rule %> vs <%= terminal %>)
%     end
%   end

% end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
antelope-0.1.8 lib/antelope/generator/templates/output.erb