Class: TDParser::NegativeParser

Inherits:
CompositeParser show all
Defined in:
lib/tdp.rb

Instance Attribute Summary

Attributes inherited from CompositeParser

#parsers

Instance Method Summary collapse

Methods inherited from CompositeParser

#==, #optimize, #same?

Methods inherited from Parser

#%, #*, #+, #-, #/, #==, #>, #>>, #do, #optimize, #parse, #peek, #same?, #to_proc, #|, #~@

Methods included from TDParser

#any_rule, #backref, #chainl, #chainr, #condition_rule, define, #empty_rule, #fail_rule, #leftrec, #none_rule, #rightrec, #rule, #stackref, #state, #token

Methods included from BufferUtils

#prepare, #recover

Constructor Details

#initialize(parser) ⇒ NegativeParser

Returns a new instance of NegativeParser.



582
583
584
# File 'lib/tdp.rb', line 582

def initialize(parser)
  super(parser)
end

Instance Method Details

#call(tokens, buff) ⇒ Object



586
587
588
589
590
591
592
593
594
595
596
# File 'lib/tdp.rb', line 586

def call(tokens, buff)
  b = prepare(buff)
  r = @parsers[0].call(tokens,b)
  rev = b.reverse
  recover(b, tokens)
  if( r.nil? )
    Sequence[Sequence[*rev]]
  else
    nil
  end
end

#to_sObject



598
599
600
# File 'lib/tdp.rb', line 598

def to_s()
  "~#{@parsers[0]}"
end