Module: ABNF::Parser::Controls::RuleLists
- Extended by:
- RuleLists
- Included in:
- RuleLists
- Defined in:
- lib/abnf/parser/controls/rule_lists.rb,
lib/abnf/parser/controls/rule_lists/multiples_of_three.rb
Defined Under Namespace
Modules: MultiplesOfThree
Instance Method Summary
collapse
Instance Method Details
#deep_reference ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 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 ⇒ Object
29
30
31
32
33
34
35
|
# 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
|
#reference(referenced_rule = nil) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# 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
|