JavaCC全称为Java Compiler Compiler,它是一个生成器,用于生成词法分析器(lexical analysers)和语法分析器(parsers);JavaCC本身并不是词法分析器和语法分析器,它是一个生成器!JavaCC通过读取一个后缀为.jj的描述文件中的特定描述,来生成词法分析器和语法分析器,并且生成的词法分析器和语法分析器使用Java书写的
1. 安装;
下载地址: https://github.com/javacc/javacc/tree/master#download
2. 解压
javacc-javacc-7.0.12.zip 文件, 在解压目录创建 target 目录,将 bootstrap 目录下的javacc.jar copy 到 target 目录下;
创建环境变量JAVACC_HOME; 并且在 PATH 路径下增加配置:%JAVACC_HOME%\scripts,指向 scripts 目录;
验证:
文档:
https://www.engr.mun.ca/~theo/JavaCC-Tutorial/javacc-tutorial.pdf
良心玩家:
https://www.cnblogs.com/suhaha/p/11733487.html
词法分析器:
SKIP : { "\n" | "\r" | "\r\n" }
TOKEN : { < PLUS : "+" > }
语法分析器
语法分析器的描述由BNF生产式构成。可以看到,语法分析器的描述看起来跟java的方法定义形式有点相似。
void Start() :
{}
{
<NUMBER>
(
<PLUS>
<NUMBER>
)*
<EOF>
}
上面的BNF生产式指定了合法的token序列的规则:必须以NUMBER token开头,以EOF token结尾,而在NUMBER和EOF中间,可以是0至多个PLUS和NUMBER的token,而且必须是PLUS后跟着NUMBER。
想起内容去 良心玩家哪里看;