Java Compiler Compiler (JavaCC) is the most popular parser generator for use with Java applications.
Java编译器编译器(JavaCC)是最流行的用于Java应用程序的解析器生成器。解析器生成器是一种工具,用于读取语法规范并将其转换为可以识别与语法匹配的Java程序。
JavaCC是一个词法分析生成器和语法分析生成器。词法分析和语法分析是处理输入字符序列的软件组件,编译器和解释器协同词法分析和语法分析来解码程序文件。词法分析器可以把一连串的字符序列划分成一个一个的叫做“Token”的子序列,同时它也可以把这些Token分类。这些Token序列将会传送给语法分析器以供其决定程序的结构。
JavaCC的输入文件是一个词法和语法的规范文件,其中也包括一些动作的描述,它的后缀应该是jj。
主要有以下功能:
运行JavaCC解析器所需的全部就是Java运行时环境(JRE)。
开源项目一个重要评估就是社区是否更新。目前看起来近期有更新,而且更新速度较为友好。
JavaCC 7.0.5 is our latest stable release.
JavaCC 7.0.5 - 2019-10-14
JavaCC is an open source project released under the BSD License 2.0. The JavaCC project was originally developed at Sun Microsystems Inc. by Sreeni Viswanadha and Sriram Sankar.
<!-- https://mvnrepository.com/artifact/net.java.dev.javacc/javacc -->
<dependency>
<groupId>net.java.dev.javacc</groupId>
<artifactId>javacc</artifactId>
<version>7.0.5</version>
</dependency>
javacc项目仓库 https://github.com/javacc/javacc
javacc的语法文件是
所以创建一个.jj文件,IDEA检测到是javacc文件,自动提示安装插件。安装重启IDEA后就会更新对javacc的支持。
由四个部分组成:
就是语法分析器的配置选项,每一个选项都有默认值,因此省略也没有问题。例如向前看的token的个数(用来解除冲突)。也可以把这些选项作为javacc命令的参数来启动javacc,可以达到同样的效果。
具体选项见:(TODO)
这部分是必要的。我理解这部分就是语法文件的main函数。
要求:
下面是一个简单示例
PARSER_BEGIN(Example)
/** Simple brace matcher. */
public class Example {
/** Main entry point. */
public static void main(String args[]) throws ParseException {
Example parser = new Example(System.in);
parser.Input();
}
}
PARSER_END(Example)
这里面有四类:SKIP、TOKEN、SPECIAL_TOKEN、MORE。其中,SKIP用来说明被忽略的串
Dos Reis, Anthony J., Compiler Construction Using Java, JavaCC, and Yacc., Wiley-Blackwell 2012. ISBN 0-4709495-9-7 (book, pdf).
Copeland, Tom, Generating Parsers with JavaCC., Centennial Books, 2007. ISBN 0-9762214-3-8 (book).
Looking for lex and yacc for Java? You don’t know Jack by Chuck Mcmanis.
Build your own languages with JavaCC by Oliver Enseling.
Writing an Interpreter Using JavaCC by Anand Rajasekar.
Building a lexical analyzer with JavaCC by Keyvan Akbary.
Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison-Wesley, 2006, ISBN 0-3211314-3-6 (book, pdf).
Charles N. Fischer and Richard J. Leblanc, Jr., Crafting a Compiler with C., Pearson, 1991. ISBN 0-8053216-6-7 (book).