开源GIS实验田

OpenSource GIS Space

  • 内容导航

  • 最新评论

    • Gao Ang: 这将是一次开源GIS百科全书式的大会 ...
    • SHG: 恭喜恭喜 希望到时有更多国外的专...
    • Gao Ang: 这个示例可以搜索指定位置500m范围内...
    • suan: 你好,我想請問你GOOGLE MAPS API的問題 ...
    • Gao Ang: 静态地图现在支持用户自定义图标,...
  • 热门主题

  • 随机阅读

    • 2009 年八月
      « 七   九 »
       12
      3456789
      10111213141516
      17181920212223
      24252627282930
      31  
    • Gao Ang

      GaoMiao's Portrait
      有了理想
      就不要寻找放弃的理由

      站点搜索

    • 只言片语

      青年人对于社会的要求也高,失望也快,却很少注意到,一个成功的中年人或老年人的背后,往往有着许多辛酸血泪的故事。这尚不够,那份持续的认真与努力,也是一个成功者必然的付出。这以上说得又不完全,智慧才是一个人成功最大的条件之一,缺了它,什么也不成。 ——三毛

    Archive for 八月 4th, 2009

    JavaCC语法分析器

    4th 八月 2009

    JavaCC(Java Compiler Compiler)是Java实现的语法分析器,用以根据用户自定义规则进行上下文无关语法内容的分析工作,以简化编译器开发时编写涉及词法、语法、语义规则处理代码时的工程量。

    较之C语言实现的简化编译构造程序LEX(Lexical Analyzers)和YACC(Yet Another Compiler Compiler),JavaCC使用递归下降的语法分析方法,定义的文法规则表达范围广泛。JavaCC不直接生成分析树或抽象语法树(AST),但提供建立分析树或AST生成的预处理器JJTree,JJTree采用压栈出栈的递归方法生成分析树,为JavaCC的输入进行预处理。

    JavaCC在使用方面上手迅速,编译JavaCC生成的Java代码时,仅在标准JDK支持下,无需第三方JAR即可完成。首先,使用者按照JavaCC语法规范编写源文件,将标记(Token)、词法和语法规则、以及每个解析阶段中发生的行为定义在*.jj文件中。

    之后,使用JavaCC编译器编译*.jj文件,可以生成Java代码实现的特定语言分析器。生成的源程序包含:*Parser.java(语法分析器)、*TokenManager.java(词法分析器)、TokenMgrError.java(错误处理程序)、Token. java (标记信息)、*Constants.java (分析器中使用的常量)、SimpleCharStream.java (字符流类)等源文件。在使用javac将源代码编译为class之后,就可以运行JavaCC生成的语法分析器来执行语法分析工作。

    在JavaCC项目中,还提供了JJDOC工具,用以生成BNF范式表示的语法文档。同时,JavaCC项目为用户提供了可直接使用的语法库和实例代码,存放在examples目录中,其中包含文本邮件处理、JJTree示例、解释器实现等面向不同应用的示例。

    OGSA-DQP项目中,也使用了类似的查询编译器Polar*,来生成OQL对象查询树的语法解析结果,以解析分布式查询内容并绘制OQL查询树。

    目前NetBeans IDE已提供了JavaCC编写和编译插件,支持*.jj文件的语法加亮和直接编译。在NetBeans IDE中借助JavaCC构建新语言的更多细节,请查看NetBeans Wiki中的详细教程

    Posted in 编程语言 | 1 Comment »