class ABNF::Parser::Compiler::Element

Attributes

rule[RW]

Public Instance Methods

bin_val_range(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 7
def bin_val_range token
  num_val_range token, 2
end
bin_val_sequence(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 11
def bin_val_sequence token
  num_val_sequence token, 2
end
char_val(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 15
def char_val token
  string = token.lexeme[1...-1]
  rule = Rules::Terminal.string string, token.abnf
  compiler.pop rule
end
dec_val_range(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 21
def dec_val_range token
  num_val_range token, 10
end
dec_val_sequence(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 25
def dec_val_sequence token
  num_val_sequence token, 10
end
group_start(_) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 29
def group_start _
  compiler.push Group do |rule|
    compiler.pop rule
  end
end
hex_val_range(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 35
def hex_val_range token
  num_val_range token, 16
end
hex_val_sequence(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 39
def hex_val_sequence token
  num_val_sequence token, 16
end
num_val_range(token, base) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 43
def num_val_range token, base
  first, last = token.lexeme[2..-1].split '-'

  first = first.to_i base
  last = last.to_i base

  range = (first.chr..last.chr)

  rule = Rules::Terminal.character_range range, token.abnf
  compiler.pop rule
end
num_val_sequence(token, base) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 55
def num_val_sequence token, base
  codes = token.lexeme[2..-1].split '.'

  codes.map! do |code|
    code.to_i base
  end

  string = codes.pack 'C*'
  rule = Rules::Terminal.string string, token.abnf
  compiler.pop rule
end
option_start(_) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 67
def option_start _
  compiler.push Option do |rule|
    abnf = "[#{rule.abnf}]"
    rule = Rules::Repetition.new rule, (0..1), abnf
    compiler.pop rule
  end
end
prose_val(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 75
def prose_val token
  rule = Rules::ProseVal.new token.abnf
  compiler.pop rule
end
rulename(token) click to toggle source
# File lib/abnf/parser/compiler/element.rb, line 80
def rulename token
  rule = Rules::Reference.new token.lexeme
  compiler.pop rule
end