Sha256: 439b57488e35af90dc6363006543ba7cb6971741b7a6b40bb084f6160bd7d169
Contents?: true
Size: 693 Bytes
Versions: 16
Compression:
Stored size: 693 Bytes
Contents
module EBNF module BNF ## # 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 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 end end
Version data entries
16 entries across 16 versions & 1 rubygems