Class: Language::Atom::And

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(left:, right:) ⇒ And

Returns a new instance of And.



256
257
258
259
# File 'lib/language/atom.rb', line 256

def initialize(left:, right:)
  @left = left
  @right = right
end

Instance Method Details

#parse(parser) ⇒ Object



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'lib/language/atom.rb', line 261

def parse(parser)
  @left.parse(parser)
  right_clone =
    Parser.new(
      root: self,
      input: parser.input,
      cursor: parser.cursor,
      buffer: parser.buffer
    )
  @right.parse(right_clone)
  parser.cursor = right_clone.cursor
  parser.buffer = right_clone.buffer

  parser.output.merge(right_clone.output)
end

#to_sObject



277
278
279
# File 'lib/language/atom.rb', line 277

def to_s
  "#{@left} >> #{@right}".to_s
end