module ABNF::Parser::Controls::Rules

Public Instance Methods

alternation() click to toggle source
# 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.bar),
      Parser::Rules::Terminal.string('baz', ABNF.baz),
    ],
    ABNF.alternation,
  )
end
concatenation() click to toggle source
# 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
example()
Alias for: terminal
foo()
Alias for: terminal
option(rule=nil) click to toggle source
# 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() click to toggle source
# File lib/abnf/parser/controls/rules.rb, line 35
def prose_val
  Parser::Rules::ProseVal.new '<Some Prose>'
end
reference() click to toggle source
# File lib/abnf/parser/controls/rules.rb, line 39
def reference
  Parser::Rules::Reference.new 'some-rule'
end
regexp_pattern() click to toggle source
# 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) click to toggle source
# 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
terminal() click to toggle source
# File lib/abnf/parser/controls/rules.rb, line 55
def terminal
  Parser::Rules::Terminal.string 'foo', ABNF.foo
end
Also aliased as: example, foo
terminal_range() click to toggle source
# File lib/abnf/parser/controls/rules.rb, line 61
def terminal_range
  Parser::Rules::Terminal.character_range (' '..'!'), ABNF.foo
end