2011-06-30 10 views
4

にCommonTreeパラメータを渡す方法:は、私はANTLR 3.3でルールに渡して、簡単なパラメータだと思う何をしようとしていますANTLRルール

grammar rule_params; 


options 
{ 
    output = AST; 
} 

rule_params 
    : outer; 


outer: outer_id '[' inner[$outer_id.tree] ']'; 

inner[CommonTree parent] : inner_id '[' ']'; 


outer_id : '#'! ID; 

inner_id : '$'! ID ; 


ID : ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_')* ; 
ので

inner[CommonTree parent]以下を生成します。

inner4=inner((outer_id2!=null?((Object)outer_id2.tree):null)); 
このエラーが発生

:として最高の私が言うことができる

The method inner(CommonTree) in the type rule_paramsParser is not applicable for the arguments (Object) 

、これは正確なSAMです - 申し訳ありませんが、私はページ番号を知らないが、それは第9章では本の真ん中にある、「でノードを作成するラベルのセクション

classDefinition[CommonTree mod] 

(Kindleの場所3993):Antrl帳の一例として、電子恣意的な行為 "。

ありがとうございました。

M

答えて

3

明示的に(getTree()の略である).tree、あなたの文法で使用するツリーを指定しない場合java.lang.Objectを返し、CommonTreeはデフォルトTreeの実装として使用されます。キャストを避けるには、options { ... }セクションのツリーのタイプを設定してください:

options 
{ 
    output=AST; 
    ASTLabelType=CommonTree; 
} 
関連する問題