Module: ABNF::Parser::Controls::Rules

Extended by:
Rules
Included in:
Rules
Defined in:
lib/abnf/parser/controls/rules.rb

Instance Method Summary collapse

Instance Method Details

#alternationObject



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.bar),
      Parser::Rules::Terminal.string('baz', ABNF.baz),
    ],
    ABNF.alternation,
  )
end

#concatenationObject



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_valObject



35
36
37
# File 'lib/abnf/parser/controls/rules.rb', line 35

def prose_val
  Parser::Rules::ProseVal.new '<Some Prose>'
end

#referenceObject



39
40
41
# File 'lib/abnf/parser/controls/rules.rb', line 39

def reference
  Parser::Rules::Reference.new 'some-rule'
end

#regexp_patternObject



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

#terminalObject Also known as: example, foo



55
56
57
# File 'lib/abnf/parser/controls/rules.rb', line 55

def terminal
  Parser::Rules::Terminal.string 'foo', ABNF.foo
end

#terminal_rangeObject



61
62
63
# File 'lib/abnf/parser/controls/rules.rb', line 61

def terminal_range
  Parser::Rules::Terminal.character_range (' '..'!'), ABNF.foo
end