module Rattler::Compiler::ParserGenerator

A ParserGenerator generates ruby parsing code from parser models.

Constants

GEN_METHOD_NAMES

@private

GEN_METHOD_TYPES

@private

Public Class Methods

code_for(parser, opts={}) click to toggle source

Generate parsing code for parser using a new {RubyGenerator} with the given options and return the generated code.

@overload code_for(grammar, opts)

@param [Rattler::Parsers::Grammar] grammar the grammar model
@return [String] the generated code

@overload code_for(rules, opts)

@param [Rules] rules the parse rules
@return [String] the generated code

@overload code_for(rule, opts)

@param [Rule] rule the parse rule
@return [String] the generated code

@overload code_for(parser, opts)

@param [Parser] parser the parser model
@return [String] the generated code
# File lib/rattler/compiler/parser_generator.rb, line 103
def self.code_for(parser, opts={})
  ::Rattler::Compiler::RubyGenerator.code(opts) {|g| generate g, parser, opts }
end
generate(g, parser, opts={}) click to toggle source

Generate parsing code for a parser model using a ruby generator g.

@overload generate(g, grammar)

@param [RubyGenerator] g the ruby generator to use
@param [Rattler::Parsers::Grammar] grammar the grammar model
@return g

@overload generate(g, rules)

@param [RubyGenerator] g the ruby generator to use
@param [Rules] rules the parse rules
@return g

@overload generate(g, rule)

@param [RubyGenerator] g the ruby generator to use
@param [Rule] rule the parse rule
@return g

@overload generate(g, parser)

@param [RubyGenerator] g the ruby generator to use
@param [Parser] parser the parser model
@return g
# File lib/rattler/compiler/parser_generator.rb, line 76
def self.generate(g, parser, opts={})
  unless opts[:no_optimize]
    parser = ::Rattler::Compiler::Optimizer.optimize(parser, opts)
  end
  GrammarGenerator.new(g).generate(parser, opts)
  g
end