Class: Language::Atom::Aka

Inherits:
Language::Atom show all
Defined in:
lib/language/atom.rb

Instance Method Summary collapse

Methods inherited from Language::Atom

#<<, #>>, #absent, #aka, #any, #ignore, #inspect, #maybe, #repeat, #rule, #str, #then, #|

Constructor Details

#initialize(name:, parent:) ⇒ Aka

Returns a new instance of Aka.



188
189
190
191
# File 'lib/language/atom.rb', line 188

def initialize(name:, parent:)
  @name = name
  @parent = parent
end

Instance Method Details

#parse(parser) ⇒ Object



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/language/atom.rb', line 193

def parse(parser)
  clone =
    Parser.new(root: self, input: parser.input, cursor: parser.cursor)

  @parent.parse(clone)

  if clone.output?
    parser.output = Output.new(@name => clone.output)
  else
    parser.output[@name] = Output.new(clone.buffer)
    parser.buffer = ""
  end

  parser.cursor = clone.cursor
end

#to_sObject



209
210
211
# File 'lib/language/atom.rb', line 209

def to_s
  @parent ? "#{@parent}.aka(#{@name.inspect})" : "aka(#{@name.inspect})"
end