Class: PEG::Rule

Inherits:
ValueObject show all
Defined in:
lib/peg.rb

Direct Known Subclasses

Literal, Reference, Sequence

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ValueObject

#==

Constructor Details

#initialize(*children) ⇒ Rule

Returns a new instance of Rule.



23
24
25
# File 'lib/peg.rb', line 23

def initialize(*children)
  @children = children
end

Instance Attribute Details

#childrenObject

Returns the value of attribute children.



21
22
23
# File 'lib/peg.rb', line 21

def children
  @children
end

Instance Method Details

#inspectObject



49
50
51
52
# File 'lib/peg.rb', line 49

def inspect
  repr = "#{self.class}.new(#{_inspect})"
  @name ? repr + ".name(#{@name.inspect})" : repr
end

#name(value = nil) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/peg.rb', line 27

def name(value=nil)
  if value
    @name = value
    self
  else
    @name
  end
end

#parse(source) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/peg.rb', line 36

def parse(source)
  node = match(source)
  if node.text.length != source.length
    raise SyntaxError.new source[node.text.length, 50].inspect
  else
    node
  end
end

#result(text, children = []) ⇒ Object



45
46
47
# File 'lib/peg.rb', line 45

def result(text, children=[])
  Node.new(text, children, @name)
end