lib/antelope/generator/output.rb in antelope-0.1.7 vs lib/antelope/generator/output.rb in antelope-0.1.8

- old
+ new

@@ -1,23 +1,40 @@ # encoding: utf-8 require "pp" module Antelope - class Generator + module Generator # Generates an output file, mainly for debugging. Included always # as a generator for a grammar. - class Output < Generator + class Output < Base + register_as "output" + # Defines singleton method for every mod that the grammar passed # to the generator. # # @see Generator#initialize def initialize(*) super mods.each do |k, v| define_singleton_method (k) { v } + end + end + + def unused_symbols + @_unused_symbols ||= begin + used = grammar.all_productions.map(&:items).flatten.uniq + all = grammar.symbols.map do |s| + if Symbol === s + grammar.find_token(s) + else + s + end + end + + all - used - [grammar.find_token(:"$start")] end end # Actually performs the generation. Uses the template in # output.erb, and generates the file `<file>.output`.