安装配置
需要JRE或者JDK
下载ANTLRWorks: http://www.antlr.org/works/index.html
查看DFA需要使用Graphviz,下载安装: http://www.graphviz.org/
运行antlrworks-1.1.7.jar,在菜单File -> Preferences中设置DOT path为Graphviz安装路径"bin"dot.exe。这里还可以设置ANTLR的临时工作目录、global options,Java的CLASSPATH、javac路径等。
编辑
打开文章后面给出的Expr.g语法文件。
1. Syntax Diagram。选择一个语法规则,在Syntax Diagram窗口可以看到语法图,例如stat:
这样可以了解ANTLR是如何解析语法描述的,例如ANTLR笔记2中提到的expr: PLUS expr | INT;,语法图如下,这样就不会理解为expr: PLUS (expr | INT);这种效果。
勾选Syntax Diagram右下角的NFA可以查看NFA,例如stat:
2. DFA。菜单Grammar -> Show Tokens DFA可以查看语法的DFA,例如官方网站的截图:
3. 一些不错的编辑操作。
a.) 查看语法规则的使用状况。选择某个语法规则,Alt+F7。
b.) 快速定位语法规则。Ctrl+Shift+B。
解释
在Interpreter窗口输入2+3*4,并加上一个回车,选择prog语法规则,点击运行按钮,分析结果语法树如下:
调试
Ctrl+D调出调试窗口,文本输入2+3*4,并加上一个回车,Start Rule选择prog,确定。然后就可以单步调试ANTLR语法解析过程,可以看到每个步骤当前执行的一些信息,例如输入字符、分析结果语法树、堆栈情况等。
ANTLR只能调试Java的,C#的调试参考http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Target,我试了一下没有成功。
附示例语法文件Expr.g
@header {
package test;
import java.util.HashMap;
}
@lexer::header {package test;}
@members {
/** Map variable name to Integer object holding value */
HashMap memory = new HashMap();
}
prog: stat+ ;
stat: expr NEWLINE {System.out.println($expr.value);}
| ID '=' expr NEWLINE
{memory.put($ID.text, new Integer($expr.value));}
| NEWLINE
;
expr returns [int value]
: e=multExpr {$value = $e.value;}
( '+' e=multExpr {$value += $e.value;}
| '-' e=multExpr {$value -= $e.value;}
)*
;
multExpr returns [int value]
: e=atom {$value = $e.value;} ('*' e=atom {$value *= $e.value;})*
;
atom returns [int value]
: INT {$value = Integer.parseInt($INT.text);}
| ID
{
Integer v = (Integer)memory.get($ID.text);
if ( v!=null ) $value = v.intValue();
else System.err.println("#ff0000 variable "+$ID.text);
}
| '(' e=expr ')' {$value = $e.value;}
;
ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'"r'? '"n' ;
WS : (' '|'"t')+ {skip();} ;
相关推荐
赠送jar包:antlr-runtime-3.4.jar; 赠送原API文档:antlr-runtime-3.4-javadoc.jar; 赠送源代码:antlr-runtime-3.4-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.4.pom; 包含翻译后的API文档:antlr-...
赠送jar包:antlr-runtime-3.5.jar; 赠送原API文档:antlr-runtime-3.5-javadoc.jar; 赠送源代码:antlr-runtime-3.5-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.5.pom; 包含翻译后的API文档:antlr-...
赠送jar包:antlr-runtime-3.5.2.jar; 赠送原API文档:antlr-runtime-3.5.2-javadoc.jar; 赠送源代码:antlr-runtime-3.5.2-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.5.2.pom; 包含翻译后的API文档...
总的来说,ANTLR-python-runtime-3.1.3.zip是一个包含ANTLR 3 Python运行时环境的压缩文件,用于在Python中解析和处理自定义语法的数据。通过学习和使用ANTLR,你可以构建强大的语言处理工具,极大地提高开发效率。
antlr-4.8-complete.jar
对于下载的"antlr-intellij-plugin-v4-1.14.zip"文件,它是2020年版本的ANTLR Intellij Plugin v4.14的备份。这意味着它可以安装到IntelliJ IDEA中,为用户提供ANTLR 4的支持。安装步骤通常包括解压缩文件,将解压后...
赠送jar包:antlr4-runtime-4.2.jar; 赠送原API文档:antlr4-runtime-4.2-javadoc.jar; 赠送源代码:antlr4-runtime-4.2-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.2.pom; 包含翻译后的API文档:...
antlr-3.5.2-complete.jar
赠送jar包:antlr4-runtime-4.7.jar; 赠送原API文档:antlr4-runtime-4.7-javadoc.jar; 赠送源代码:antlr4-runtime-4.7-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.7.pom; 包含翻译后的API文档:...
antlr-runtime-3.2.jar
官方版本,亲测可用
3. 将`antlr-runtime-3.4.jar` 添加到项目的类路径中。 4. 在程序中实例化ANTLR解析器,传入输入源(如字符串、文件或输入流),调用解析方法进行解析。 5. 解析过程中,ANTLR会自动构建解析树,可以利用ANTLR提供的...
antlr-runtime-3.0.1开发需要的jar包
antlr-4.7-complete.jar运行环境库(java版)
在使用`antlr-runtime-3.1.jar.zip` 进行开发时,首先需要解压缩文件,然后将`antlr-runtime-3.1.jar` 添加到项目的类路径中。如果使用Maven或Gradle等构建工具,可以在`pom.xml`或`build.gradle`文件中配置依赖,...
赠送jar包:antlr-runtime-3.5.jar; 赠送原API文档:antlr-runtime-3.5-javadoc.jar; 赠送源代码:antlr-runtime-3.5-sources.jar; 赠送Maven依赖信息文件:antlr-runtime-3.5.pom; 包含翻译后的API文档:antlr-...
在本案例中,我们关注的是`antlr-runtime-3.1.1.jar.zip`文件,它是一个包含ANTLR运行时库的压缩包,版本为3.1.1。 ANTLR的主要功能是生成解析器和词法分析器,这些生成器能够解析符合特定语法规则的输入。ANTLR...
antlr-3.4-complete-no-antlrv2.jar
antlr-4.6-complete.jar
在Java项目中,如果你需要使用ANTLR的运行时库,通常会将`antlr-runtime-3.0.jar` 添加到项目的类路径(classpath)中,或者通过Maven、Gradle等构建工具管理依赖,确保在编译和运行时能够正确地找到和加载ANTLR的...