Class: TDParser::CompositeParser

Inherits:
Parser
  • Object
show all
Defined in:
lib/tdp.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Parser

#%, #*, #+, #-, #/, #>, #>>, #call, #do, #parse, #peek, #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(*parsers, &b) ⇒ CompositeParser

Returns a new instance of CompositeParser.



269
270
271
# File 'lib/tdp.rb', line 269

def initialize(*parsers, &b)
  @parsers = parsers
end

Instance Attribute Details

#parsersObject

Returns the value of attribute parsers.



267
268
269
# File 'lib/tdp.rb', line 267

def parsers
  @parsers
end

Instance Method Details

#==(r) ⇒ Object



279
280
281
282
# File 'lib/tdp.rb', line 279

def ==(r)
  (self.class == r.class) &&
  (@parsers == r.parsers)
end

#optimize(default = false) ⇒ Object



273
274
275
276
277
# File 'lib/tdp.rb', line 273

def optimize(default=false)
  parser = dup()
  parser.parsers = @parsers.collect{|x| x.optimize(default)}
  parser
end

#same?(r) ⇒ Boolean

Returns:

  • (Boolean)


284
285
286
287
# File 'lib/tdp.rb', line 284

def same?(r)
  super(r) &&
  @parsers.zip(r.parsers).all?{|x,y| x.same?(y)}
end

#to_sObject



289
290
291
# File 'lib/tdp.rb', line 289

def to_s()
  "<composite: #{@parsers.collect{|x| x.to_s()}}>"
end