1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#!/usr/bin/ruby 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver# encoding: utf-8 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'antlr3' 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverrequire 'antlr3/tree' 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvermodule ANTLR3 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvermodule ASTBuilder 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver extend ClassMacros 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def self.included( klass ) 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def klass.return_scope_members 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver super.push( :tree ) 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def initialize( input, options = {} ) 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver @adaptor = options[ :adaptor ] ||= begin 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ( input.adaptor rescue nil ) or 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AST::CommonTreeAdaptor.new( token_class ) 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver super( input, options ) 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver shared_attribute( :adaptor ) 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprivate 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def subtree_stream( desc, element = nil ) 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AST::RewriteRuleSubtreeStream.new( @adaptor, desc, element ) 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def token_stream( desc, element = nil ) 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AST::RewriteRuleTokenStream.new( @adaptor, desc, element ) 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def node_stream( desc, element = nil ) 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver AST::RewriteRuleNodeStream.new( @adaptor, desc, element ) 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver end 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend 41