41 lines
849 B
Ruby
Executable File
41 lines
849 B
Ruby
Executable File
#!/usr/bin/ruby
|
|
# encoding: utf-8
|
|
require 'antlr3'
|
|
require 'antlr3/tree'
|
|
|
|
module ANTLR3
|
|
module ASTBuilder
|
|
extend ClassMacros
|
|
|
|
def self.included( klass )
|
|
def klass.return_scope_members
|
|
super.push( :tree )
|
|
end
|
|
end
|
|
|
|
def initialize( input, options = {} )
|
|
@adaptor = options[ :adaptor ] ||= begin
|
|
( input.adaptor rescue nil ) or
|
|
AST::CommonTreeAdaptor.new( token_class )
|
|
end
|
|
super( input, options )
|
|
end
|
|
|
|
shared_attribute( :adaptor )
|
|
|
|
private
|
|
|
|
def subtree_stream( desc, element = nil )
|
|
AST::RewriteRuleSubtreeStream.new( @adaptor, desc, element )
|
|
end
|
|
|
|
def token_stream( desc, element = nil )
|
|
AST::RewriteRuleTokenStream.new( @adaptor, desc, element )
|
|
end
|
|
|
|
def node_stream( desc, element = nil )
|
|
AST::RewriteRuleNodeStream.new( @adaptor, desc, element )
|
|
end
|
|
end
|
|
end
|