Class: ABNF::Compiler::Rule::Concatenation

Inherits:
Object
  • Object
show all
Includes:
ABNF::Compiler::Rule
Defined in:
lib/abnf/compiler/rule/concatenation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ABNF::Compiler::Rule

#parse?

Constructor Details

#initialize(*rules) ⇒ Concatenation

Returns a new instance of Concatenation.



9
10
11
# File 'lib/abnf/compiler/rule/concatenation.rb', line 9

def initialize *rules
  @rules = rules
end

Instance Attribute Details

#rulesObject (readonly)

Returns the value of attribute rules.



7
8
9
# File 'lib/abnf/compiler/rule/concatenation.rb', line 7

def rules
  @rules
end

Instance Method Details

#parse(stream) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/abnf/compiler/rule/concatenation.rb', line 13

def parse stream
  nodes = []

  stream.branch do
    rules.all? do |rule|
      node = rule.parse stream
      nodes << node if node
    end
  end

  return unless nodes.size == rules.size
  AST.sequence *nodes
end