1 JavaCC
is a parser/scanner generator for java : https://javacc.dev.java.net/
如果你还没有听说过JavaCC,建议你在wikipedia上从了解YACC(Yet Another Compiler Compiler)开始。
2 基本简介
【来自IBM DW文章的翻译】
许多基于 Web的项目都包含即席(ad-hoc)查询系统以允许终端用户搜索信息。因此,终端用户会需要某种语言来表达他们所希望搜索的内容。以前,用户查询语言的定义极其简单。如果终端用户满足于使用与最典型的 Google 搜索一般简单的语言,那么 Java 的 StringTokenizer对于解析任务就绰绰有余了。然而,如果用户希望有一种更健壮的语言,比如要添加括号和"AND"/"OR"逻辑,那么我们很快就会发现我们需要更强大的工具。我们需要一种方法,用以首先定义用户将要使用的语言,然后用该定义解析相应的条目并且对各种后端数据库制定正确的查询。
这就是工具JavaCC 出现的原因。JavaCC 代表"Java® Compiler Compiler",是对 YACC("Yet Another Compiler Compiler")的继承(YACC 是 AT&T 为了构建 C 和其他高级语言解析器而开发的一个基于 C的工具)。YACC 和其伙伴词法记号赋予器(tokenizer)——"Lex"——接收由常用的巴科斯-诺尔范式(Backus-Nauer form,又称 Bacchus Normal Form,BNF)形式的语言定义的输入,并生成一个"C"程序,用以解析该语言的输入以及执行其中的功能。JavaCC 与 YACC一样,是为加快语言解析器逻辑的开发过程而设计的。但是,YACC 生成 C 代码,而 JavaCC 呢,正如您想像的那样,JavaCC 生成的是
Java 代码。<br><br>JavaCC 的历史极具传奇色彩。它起源于 Sun 公司的"Jack"。Jack后来辗转了几家拥有者,比如著名的 Metamata 和 WebGain,最后变成了 JavaCC,然后又回到了 Sun。Sun 公司最后在
BSD 的许可下将它作为开放源代码的代码发布。JavaCC 目前的 Web 主页是 http://javacc.net.java.net。
JavaCC的长处在于它的简单性和可扩展性。要编译由 JavaCC 生成的 Java 代码,无需任何外部 JAR 文件或目录。仅仅用基本的 Java1.2 版编译器就可以进行编译。而该语言的布局也使得它易于添加产生式规则和行为。该 Web站点甚至描述了如何编制异常以便给出用户合适的语法提示。
3 IBM DW上关于JavaCC介绍的原文
http://www.ibm.com/developerworks/data/library/techarticle/dm-0401brereton/index.html
4 JavaCC典型应用
我个人根据理解总结如下:
- 在搜索应用中为用户自定义查询语言
- 在一些工具软件或者平台中作为语法分析等工具(使用JJTree等)
- 某些场合,用于自定义不只是用于查询的新语言
分享到:
相关推荐
该文档为自学JAVACC的笔记,以实例为例,具有较为详尽的介绍
javacc是专门用于设计编译器的eclipse插件!主要介绍了javacc的基本语法,以及基本的使用教程!
简介javacc ,列举javacc案例
javacc-4.0以及 javacc-5.0下载
国软06级解释器构造课程96分的作品,绝对原创! 在基本的功能上做了延伸,包含函数功能等等附加功能。
javacc语法分析
javacc eclipse 插件
具体使用方法:假如我们要创建一个a.jj,在项目图标上点右键->new->other->javacc目录下的javacc template file即可 对于创建好的a.jj 在其图标上点击右键compile with javacc 即可生成.java文件
它是100%的纯Java代码 可以在多种平台上运行 与Sun当时推出Java的口号"WriteOnceRunAnywhere"相一致 JavaCC还提供JJTree工具来帮助我们建立语法树 JJDoc工具为我们的源文件生成BNF范式 巴科斯 诺尔范式 ...
eclipse javacc
自己写的javacc学习心得,希望对大家能有帮助,说实话,我觉得写的还不错。
cmm javacc 对CMM语言的词法语法分析器的自动实现
JavaCC附源码详细教程,对快速了解和学习JavaCC有很大帮助,结合实例讲角,通俗易懂
javacc-5.0.rar
javacc构造编译器的方法 javacc代码生成器的基本介绍.
很详细的JAVACC对于初学者可以学到很多!
通过javacc来设计一个小型编译器,思路清晰,功能完善
Java Compiler Compiler
javacc 编译器 有实例 用法:javacc xxx.jj javac *.java java ***