antlrツリーパーサー文法

私はastを生成することができる文法ファイルを持っています。 tree generated をトラバースできる tree grammar を書くにはどうすればよいですか?インターネットからいくつかの例がありますが、理解できる間に、ゼロから。例えば:

ExprTree.g

stat: expr NEWLINE -> expr   
     | ID '=' expr NEWLINE -> ^('=' ID expr)   
     | NEWLINE ->   
;   

expr: multExpr (('+' ^|'-' ^) multExpr)* ;   
multExpr: atom ('*' ^ atom)* ;   
atom: INT   
     | ID   
     | '(' ! expr ')' !   
;   

ID  :   ('a'..'z'|'A'..'Z')+ ;   
INT :   '0'..'9'+ ;   
NEWLINE: (('/r'? '/n')|';')+ ;   
WS  :   (' '|'/t')+ { $channel = HIDDEN; } ;

ExprEval.g

stat: expr 
| ^('=' ID expr)     ;   

expr   
: ^('+' a=expr b=expr) 
| ^('-' a=expr b=expr) 
| ^('*' a=expr b=expr) 
| ID        
| INT 

ExprTree.gはastを生成する文法であり、ExprEval.gはexprEval.gのルールexprのためにtree:

expr: multExpr (('+' ^|'-' ^) multExpr)*  
1
@ BartKiers、私の文法は非常に大きいです、それを投稿することは適切ではありません。私はちょうど木をたどることができる文法を書く方法についていくつかの一般的なsuggetionや指示がほしいと思う。
追加された 著者 Fiary,
@ BartKiers、ありがとうございます。しかし、私はblogspotにアクセスすることができません。あなたのブログと同様のコンテンツを持っている他の場所はどこですか?
追加された 著者 Fiary,
@ BartKiers、私はそれをダウンロードしました。もう一度ありがとう!
追加された 著者 Fiary,
vimeo.com/groups/29150/videos/sort:oldest 見ることができますビデオクリップがかなり良いので、ステップを通って。
追加された 著者 Lex Li,
パーサー文法とツリー文法の試行を投稿できますか?
追加された 著者 Bart Kiers,
問題はない、フィアリー。
追加された 著者 Bart Kiers,

答えはありません

0