`
bluky999
  • 浏览: 719721 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaCC简介与典型应用

    博客分类:
  • Java
阅读更多

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 学习与应用知识点详解 #### 一、JavaCC 概述 - **定义**:JavaCC(Java Compiler Compiler)是一款用于Java开发的语法分析生成器工具,能够根据给定的文法文件自动生成Java代码,这些Java代码能够解析...

    javacc简介

    javacc是专门用于设计编译器的eclipse插件!主要介绍了javacc的基本语法,以及基本的使用教程!

    武汉大学国际软件学院解释器构造作业二——JAVACC 的研究和应用

    本篇将深入探讨“武汉大学国际软件学院解释器构造作业二——JAVACC的研究和应用”这一主题,该作业是国软06级解释器构造课程中的一份优秀作品,获得了96分的高分,并且是完全原创的成果。作者不仅实现了基础的解释器...

    JavaCC

    在实际应用中,JavaCC被广泛用于实现Java、SQL等语言的解析器,以及XML、JSON等数据格式的解析工具。由于其强大的能力和广泛的社区支持,JavaCC成为了Java开发人员构建自定义解析解决方案的首选工具之一。 总结起来...

    javacc 词法分析器

    `Tomcat v5.5 Server at localhost-config`和`Tomcat v6.0 Server at localhost-config`可能是与Tomcat服务器相关的配置目录,表明这个项目可能与Web应用的开发和部署有关。`.settings`目录可能包含项目的IDE特定...

    javacc-4.0以及 javacc-5.0下载

    1. **可扩展性**:JavaCC生成的解析器和词法分析器完全由Java编写,可以方便地与Java应用程序进行集成。 2. **灵活性**:通过BNF语法定义,开发者可以根据需求定制解析规则。 3. **高性能**:JavaCC生成的代码效率高...

    javacc语法分析.zip

    JavaCC生成的解析器可以应用于各种领域,如编程语言的编译器、解释器,或者数据文件的读取等。 在"实验二"中,我们很可能是要深入理解并实践JavaCC的使用方法。这可能包括以下几个方面: 1. **JavaCC基本概念**:...

    javaCC入门文档

    #### 三、JavaCC与Lex/Yacc的关系 Lex和Yacc是经典的词法分析器和语法分析器,广泛应用于C/C++开发环境。然而,由于这些工具是专为C语言设计的,因此对于Java开发者而言,使用起来并不方便。JavaCC作为一种面向Java...

    javacc eclipse_1.5.24.zip javacc插件

    JavaCC与Eclipse结合,形成了一个便捷的插件,允许开发者在Eclipse环境中无缝地使用JavaCC进行解析器和词法分析器的开发。这个插件为Eclipse用户提供了对JavaCC的图形化支持,包括语法定义编辑、语法错误检查、代码...

    javacc-5.0.zipjavacc-5.0.zip

    在实际应用中,JavaCC常用于构建数据库查询引擎、编译器前端、配置文件解析器等。如果你需要处理结构化的文本输入,JavaCC是一个强大的选择。通过深入学习和掌握JavaCC,你可以提高自己在处理文本解析问题上的技能,...

    javacc.zip

    这些示例可以帮助用户了解JavaCC的实际应用,通过阅读和运行示例代码,用户可以更好地理解如何将JavaCC应用于自己的项目中。 **bin**目录:这个目录下通常存放的是JavaCC的可执行文件和相关的脚本,用于在不同操作...

    javacc构造编译器的方法

    #### 三、JavaCC简介 JavaCC是一个强大的编译器生成工具,由Sun Microsystems开发。它允许用户通过指定一组规则来定义语言的语法结构,并自动生成相应的解析器代码。JavaCC生成的解析器是基于递归下降解析技术的,...

    javacc学习手册(个人总结)

    4. 语法树预处理器(TREE BUILDING PREPROCESSOR):javacc与jjtree同时发布,jjtree是一个功能强大的语法树预处理器。 5. 定制化:javacc提供了很多的功能选项,来定制它的行为还有它所产生的分析器程序的行为。 6....

    javaCC5.0压缩包

    总之,JavaCC 5.0是一个强大的解析工具,它提供了丰富的特性,使开发者能够轻松创建自己的解析器,广泛应用于编译器设计、语言解析、数据解析等领域。通过掌握JavaCC,开发者可以构建更加复杂和定制化的软件系统。

    JAVACC简易教程学习

    #### 一、JavaCC简介 JavaCC是一个功能强大的解析器生成器和词法分析生成器工具,主要用于帮助开发者快速构建语法解析器和词法分析器。这类工具在语言处理领域尤为重要,尤其是在编译器、解释器的设计与实现过程中...

    JavaCC教程(附源码)

    #### 一、JavaCC概述与解析器生成器概念 JavaCC是一个强大的工具,专门用于生成解析器和词法分析器。它不仅适用于编译器的开发,还能广泛应用于需要处理文本数据的场景。在深入了解JavaCC之前,让我们先明确几个...

    JavaCC实现MiniC语言的编译

    JavaCC是Java语言的一个工具,用于生成解析器和...通过阅读和分析这些代码,你可以深入理解JavaCC如何应用于实际的编译器设计,以及MiniC语言的编译过程是如何实现的。这对于学习编译原理和JavaCC的使用非常有帮助。

    Javacc常用问题解答

    - **自然语言处理**:虽然不是最直接的应用,但 JavaCC 也可以用于某些自然语言处理任务。 **1.6 我在哪里可以获取 JavaCC?** 官方提供了 JavaCC 的下载地址:[JavaCC 官方网站](https://javacc.java.net/)。 **...

Global site tag (gtag.js) - Google Analytics