class Rattler::Parsers::Grammar
Grammar
represents a parsed grammar
Constants
- DEFAULT_PARSER_BASE
The name of the default parser base class
Public Class Methods
new(rules, opts={})
click to toggle source
@param rules [RuleSet] the parse rules that define the parser
@option opts [String] start_rule (rules.first.name) @option opts [String] grammar_name (nil) @option opts [String] parser_name (nil) @option opts [String] base_name (Rattler::Runtime::RecursiveDescentParser
) @option opts [Array<String>] requires ([]) @option opts [Array<String>] includes ([])
Calls superclass method
Rattler::Util::Node::new
# File lib/rattler/parsers/grammar.rb, line 33 def initialize(rules, opts={}) start_rule = opts[:start_rule] || rules.start_rule || (rules.first && rules.first.name) super rules.with_attrs(:start_rule => start_rule), @@default_opts.merge(:start_rule => start_rule).merge(opts) attrs[:name] ||= grammar_name || parser_name end
Public Instance Methods
analysis()
click to toggle source
@return [Analysis] a static analysis of the grammar rules
# File lib/rattler/parsers/grammar.rb, line 52 def analysis rules.analysis end
rule(name)
click to toggle source
@param [Symbol] name the name of a parse rule in the grammar @return [Rule] the parse rule referenced by name
# File lib/rattler/parsers/grammar.rb, line 47 def rule(name) rules[name] end
with_rules(new_rules)
click to toggle source
@param [RuleSet] new_rules @return [Grammar] a new grammar with the parse rules replaced by
+new_rules+
# File lib/rattler/parsers/grammar.rb, line 59 def with_rules(new_rules) self.class.new new_rules, attrs end