下载和尝试了好几个版本的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。