module EBNF::BNF
Public Instance Methods
make_bnf()
click to toggle source
Transform EBNF
Rule
set to BNF:
* Add rule [0] (_empty rule (seq)) * Transform each rule into a set of rules that are just BNF, using {Rule#to_bnf}.
@return [ENBF] self
# File lib/ebnf/bnf.rb, line 9 def make_bnf progress("make_bnf") {"Start: #{@ast.length} rules"} new_ast = [Rule.new(:_empty, "0", [:seq], kind: :rule)] ast.each do |rule| debug("make_bnf") {"expand from: #{rule.inspect}"} new_rules = rule.to_bnf debug(" => ") {new_rules.map(&:sym).join(', ')} new_ast += new_rules end @ast = new_ast progress("make_bnf") {"End: #{@ast.length} rules"} self end