module ABNF::Parser::Controls::Nodes

Public Instance Methods

alternation() click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 7
def alternation
  Node.alternation(
    Node.terminal('foo', ABNF.foo),
    ABNF.alternation,
  )
end
concatenation() click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 14
def concatenation
  Node.concatenation(
    [
      Node.terminal('[', '"["'),
      Node.terminal('foo', ABNF.foo),
      Node.terminal(']', '"]"'),
    ],
    ABNF.concatenation,
  )
end
example(abnf: nil, text: nil)
Alias for: unfactored
factored() click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 55
def factored
  Node.alternation(
    Node.concatenation(
      [
        Node.repetition(
          [
            Node.alternation(
              Node.terminal('s', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('o', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('m', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('e', '%x61-7A'),
              'ALPHA',
            ),
          ],
          '1*ALPHA',
        ),

        Node.terminal('-', '"-"'),

        Node.repetition(
          [
            Node.alternation(
              Node.terminal('t', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('e', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('x', '%x61-7A'),
              'ALPHA',
            ),
            Node.alternation(
              Node.terminal('t', '%x61-7A'),
              'ALPHA',
            ),
          ],
          '1*ALPHA',
        ),
      ],
      '1*ALPHA "-" 1*ALPHA',
    ),
    '(1*ALPHA "-" 1*ALPHA) / "~"',
  )
end
repetition() click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 25
def repetition
  abnf = %{#{ABNF.foo} / #{ABNF.bar} / #{ABNF.baz}}
  regexp = %r{foo|bar|baz}

  Node.repetition(
    [
      Node.alternation(Node.terminal('foo', ABNF.foo), abnf),
      Node.alternation(Node.terminal('bar', ABNF.foo), abnf),
      Node.alternation(Node.terminal('baz', ABNF.foo), abnf),
    ],
    "1*( #{abnf} )",
  )
end
string(abnf: nil, text: nil)
Alias for: unfactored
terminal() click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 39
def terminal
  Node.terminal 'foo', ABNF.foo
end
unfactored(abnf: nil, text: nil) click to toggle source
# File lib/abnf/parser/controls/nodes.rb, line 43
def unfactored abnf: nil, text: nil
  abnf ||= ABNF.example
  text ||= 'some-text'

  pattern = Rules.regexp_pattern.regexp
  match_data = pattern.match text

  Node.pattern_match match_data, abnf
end
Also aliased as: example, string