def nullable_symbols
      raise 'Grammar not yet closed' unless @closed
      @nullable_symbols ||= Sym.set_closure(
        @symbols.select { |nt| nt.heads.any?(&:reduce?) }).freeze
    end
def nullable_symbols
      raise 'Grammar not yet closed' unless @closed
      @nullable_symbols ||= Sym.set_closure(
        @symbols.select { |nt| nt.heads.any?(&:reduce?) }).freeze
    end
Can an empty sequence of tokens reduce to this nonterminal?
 (Can it be produced out of "nothing"?)