| #!/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 |