Module: EBNF::BNF
- Included in:
- Base
- Defined in:
- lib/ebnf/bnf.rb
Instance Method Summary collapse
-
#make_bnf ⇒ ENBF
Transform EBNF Rule set to BNF:.
Instance Method Details
#make_bnf ⇒ ENBF
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.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |