module ABNF::Parser::Controls::RuleLists
Public Instance Methods
deep_reference()
click to toggle source
# File lib/abnf/parser/controls/rule_lists.rb, line 7 def deep_reference rule_list = reference Rules.regexp_pattern referenced_rule = rule_list['references-some-rule'] alternation = Parser::Rules::Alternation.new( [ referenced_rule, Rules.concatenation, ], "( #{referenced_rule.abnf} / #{ABNF.concatenation} )", ) repetition = Parser::Rules::Repetition.new( alternation, (1...Float::INFINITY), "1*#{alternation.abnf}", ) rule_list.update 'deep-reference' => repetition rule_list end
example()
click to toggle source
# File lib/abnf/parser/controls/rule_lists.rb, line 29 def example rule = Rules.example rule_list = RuleList.new rule_list.update 'some-rule' => rule rule_list end
recursive()
click to toggle source
# File lib/abnf/parser/controls/rule_lists.rb, line 37 def recursive MultiplesOfThree.rule_list end
reference(referenced_rule=nil)
click to toggle source
# File lib/abnf/parser/controls/rule_lists.rb, line 41 def reference referenced_rule=nil referenced_rule ||= Rules.example rule = Parser::Rules::Concatenation.new( [ Parser::Rules::Terminal.string('[', '"["'), Parser::Rules::Reference.new('some-rule'), Parser::Rules::Terminal.string(']', '"]"'), ], %{"[" #{referenced_rule.abnf} "]"}, ) rule_list = RuleList.new rule_list.update( 'references-some-rule' => rule, 'some-rule' => referenced_rule, ) rule_list end