Module: ABNF::Parser::Controls::Rules
Instance Method Summary collapse
- #alternation ⇒ Object
- #concatenation ⇒ Object
- #option(rule = nil) ⇒ Object
- #prose_val ⇒ Object
- #reference ⇒ Object
- #regexp_pattern ⇒ Object
- #repetition(abnf: nil, range: nil) ⇒ Object
- #terminal ⇒ Object (also: #example, #foo)
- #terminal_range ⇒ Object
Instance Method Details
#alternation ⇒ Object
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/abnf/parser/controls/rules.rb', line 7 def alternation Parser::Rules::Alternation.new( [ Parser::Rules::Terminal.string('foo', ABNF.foo), Parser::Rules::Terminal.string('bar', ABNF.), Parser::Rules::Terminal.string('baz', ABNF.baz), ], ABNF.alternation, ) end |
#concatenation ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/abnf/parser/controls/rules.rb', line 18 def concatenation Parser::Rules::Concatenation.new( [ Parser::Rules::Terminal.string('[', '"["'), Parser::Rules::Terminal.string('foo', ABNF.foo), Parser::Rules::Terminal.string(']', '"]"'), ], ABNF.concatenation, ) end |
#option(rule = nil) ⇒ Object
29 30 31 32 33 |
# File 'lib/abnf/parser/controls/rules.rb', line 29 def option rule=nil rule ||= example abnf = "[#{rule.abnf}]" Parser::Rules::Repetition.new rule, (0..1), abnf end |
#prose_val ⇒ Object
35 36 37 |
# File 'lib/abnf/parser/controls/rules.rb', line 35 def prose_val Parser::Rules::ProseVal.new '<Some Prose>' end |
#reference ⇒ Object
39 40 41 |
# File 'lib/abnf/parser/controls/rules.rb', line 39 def reference Parser::Rules::Reference.new 'some-rule' end |
#regexp_pattern ⇒ Object
43 44 45 46 |
# File 'lib/abnf/parser/controls/rules.rb', line 43 def regexp_pattern regexp = %r{(?<word1>[[:alpha:]]+)-(?<word2>[[:alpha:]]+)|~} Parser::Rules::RegexpPattern.new regexp, ABNF.regexp_pattern, 9 end |
#repetition(abnf: nil, range: nil) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/abnf/parser/controls/rules.rb', line 48 def repetition abnf: nil, range: nil range ||= (0..Float::INFINITY) abnf ||= '*"foo"' Parser::Rules::Repetition.new terminal, range, abnf end |