开源GIS实验田

OpenSource GIS Space

  • 内容导航

  • 最新评论

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

  • 随机阅读

    • 2012 年二月
      « 十二    
       12345
      6789101112
      13141516171819
      20212223242526
      272829  
    • Gao Ang

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

      站点搜索

    • 只言片语

      我们老一辈子走错误是可以原谅的,因为我们原来没有已铺平的路可走。但是对入世较晚的一辈人要求就要更严格些,他们不应该老是摸索和走错误,应该听老年人的忠告。 ——歌德

    JavaCC语法分析器

    4th 八月 2009

    作者: Gao Ang 可以转载,请以超链接标明原始出处和作者信息及版权声明
    网址: http://www.gaoang.com/archives/135

    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中的详细教程

    One Response to “JavaCC语法分析器”

    1. GISer Says:

      希望能邀请您来www.upgis.com来~很多做GIS开源的朋友

    Leave a Reply

    XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>