下载和尝试了好几个版本的ANTLR 和 antlrworks进行调试,现在把成功的例子保存一下。
ANTLRWorks是自带ANTLR的,所以你电脑中安装的ANTLR版本与ANTLRWorks无关。
ANTLRWorks1.4.3下载(提取码3pfa)
双击打开ANTLRWorks1.4.3,按照下面截图一步步执行。
将下面代码贴到文档编辑区。
grammar ExprSimple;
options {
output = AST;
ASTLabelType = CommonTree; // type of $stat.tree ref etc...
}
INT : '0'..'9'+ ;
NEWLINE : '\r'? '\n' ;
WS : (' '|'\t')+ {skip();} ;
prog : stat+ ;
stat : expr NEWLINE -> expr
;
expr : multExpr (('+'^|'-'^) multExpr)*
;
multExpr: atom ('*'^ atom)* ;
atom : INT
| '('! expr ')'!
;
另存为(save as)–>找个路径存储,将鼠标放到某一行时,下面就会出现对应的Syntax Diagram。
选择菜单栏中Generate->Generate Code,得到下面提示。
选择栏中Run->Debug,可以选择手动input或者通过文件input,这里注意Start Rule要选择小写开头的,相当于C语言中的main函数。(用大写命名lexer,用小写命名parser)
test.txt
1+2+3+4
得到如下图所示的Parse Tree。