`
Tonyguxu
  • 浏览: 278519 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

JavaCC 介绍

 

JJTree

JJTree为了让JJ文件具有生成分析树的能力。

 

实践

下载 Eclipse JavaCC plugin(http://www.easyeclipse.org/site/plugins/javacc.html

在公司win7下载的easy-javacc-1.5.7.exe

 

 

 

 

一个示例程序

options {
  LOOKAHEAD = 1;
  CHOICE_AMBIGUITY_CHECK = 2;
  OTHER_AMBIGUITY_CHECK = 1;
  STATIC = true;
  DEBUG_PARSER = false;
  DEBUG_LOOKAHEAD = false;
  DEBUG_TOKEN_MANAGER = false;
  ERROR_REPORTING = true;
  JAVA_UNICODE_ESCAPE = false;
  UNICODE_INPUT = false;
  IGNORE_CASE = false;
  USER_TOKEN_MANAGER = false;
  USER_CHAR_STREAM = false;
  BUILD_PARSER = true;
  BUILD_TOKEN_MANAGER = true;
  SANITY_CHECK = true;
  FORCE_LA_CHECK = false;
}

PARSER_BEGIN(Simple1)

/** Simple brace matcher. */
public class Simple1 {

  /** Main entry point. */
  public static void main(String args[]) throws ParseException {
    Simple1 parser = new Simple1(System.in);
    parser.Input();
  }

}

PARSER_END(Simple1)

/** Root production. */
void Input() :
{}
{
  MatchedBraces() ("\n"|"\r")* <EOF>
}

/** Brace matching production. */
void MatchedBraces() :
{}
{
  "{" [ MatchedBraces() ] "}"
}
 

cmmJavaCC和cmmJJTree

 

 

问题1:运行cmmJJTree,执行到SimpleNode.dump("")抛异常。

 

 

1.参考1 http://www.cnblogs.com/Gavin_Liu/archive/2009/03/07/1405029.html

2.其他知识点:

分享到:
评论

相关推荐

    javacc+jjtree使用教程

    JavaCC和JJTree是用于构建解析器和抽象语法树(AST)的工具,常用于编译器设计和解析复杂语法的场景。它们是Java语言的版本,类似于其他编程语言中的YACC和LEX。 1. **JavaCC**: - JavaCC(Java Compiler ...

    javaCC入门文档

    ### JavaCC 入门知识点详解 #### 一、JavaCC简介 JavaCC(Java Compiler Compiler)是一款用于构建解析器的工具,尤其适用于那些希望开发编译器、解释器或脚本引擎的程序员。通过JavaCC,用户可以轻松地实现语法...

    javacc学习手册(个人总结)

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

    javacc学习心得.doc

    jjTree 是 JavaCC 的一个重要工具,定义了 Java 接口节点,所有分析树节点都必须执行。该接口提供的方法操作,如母公司设置的节点,新增的儿童和检索它们。JJTree 经营有两种模式,简单的和多(由于缺乏更好的条件)...

    javacc基础知识.pdf

    在本文中,我们将探讨JavaCC的基础知识,包括如何使用它来构建解析器,并通过实例展示如何使用JJTree辅助工具生成解析树。 首先,让我们理解BNF和EBNF。它们是形式语言的描述方法,用于定义文法规则,使得解析器...

    javacc源代码

    相一致 JavaCC还提供JJTree工具来帮助我们建立语法树 JJDoc工具为我们的源文件生成BNF范式 巴科斯 诺尔范式 文档 Html "&gt;JavaCC JavaCompilerCompiler 是一个用JAVA开发的最受欢迎的语法分析生成器 这个分析生成器...

    javacc-5.0.rar

    JavaCC(Java Compiler Compiler)是Java语言的一个开源工具,用于生成词法分析器(lexical analyzer)和语法分析器(parser)的源代码。这个工具基于经典的LL(k)和LR(1)解析技术,并且支持自定义语法和语义动作。在...

    JavaCC入门详解.docx

    【JavaCC入门详解】 JavaCC(Java Compiler Compiler)是一种基于Java的词法分析器和语法分析器生成器,常用于构建解析器和编译器。它允许开发者使用规范的语法描述语言来定义语言的结构,然后自动生成解析器代码,...

    javaCC5.0压缩包

    8. **JJTree工具**:JavaCC附带的JJTree工具用于生成AST节点类,使得用户可以自定义AST的结构和行为。 9. **可扩展性**:JavaCC允许用户插入自定义的Java代码,可以在解析过程中执行任意的Java逻辑,增强了工具的...

    JavaCC文档及部分翻译

    JavaCC,全称为Java Compiler Compiler,是一款强大的工具,用于生成Java源代码的解析器和词法分析器。它是基于LL(k)语法分析方法的,支持自定义语法,并且可以处理复杂的语言结构。JavaCC在软件工程领域,尤其是...

    javacc 词法分析器

    JavaCC(Java Compiler Compiler)是一种强大的词法和语法解析工具,用于生成Java源代码的解析器和词法分析器。这个工具广泛应用于处理结构化文本输入,如编程语言、配置文件或者任何需要解析的定制语言。JavaCC的...

    javacc-4.0以及 javacc-5.0下载

    JavaCC(Java Compiler Compiler)是Java语言的一个开源工具,用于生成词法分析器(lexical analyzers)和语法分析器(parsers)。它基于LL(k)语法解析策略,允许开发者使用简洁的BNF(巴科斯范式)语法来定义语言或...

    Java写的cmm词法分析器(源代码)及javacc学习心得文档

    JavaCC通过JJTree和JTB等工具,支持BNF(巴科斯范式)样式的语法描述,使得开发者可以方便地进行编译器设计和实现。 在Java写的CMM词法分析器源代码中,我们可以期待看到以下几个关键部分: 1. **词法规则定义**:...

    javacc文件夹版本

    3. **JJTree(语法树生成器)**: 可选组件,用于生成抽象语法树,便于后续处理和代码生成。 4. **用户定义的非终结符和动作**: 用户可以在JJT文件中定义自己的非终结符,同时插入Java代码作为动作,这些动作会在解析...

    javacc4.1源码

    3. **JJTree插件**:JavaCC还包含一个名为JJTree的插件,它用于生成抽象语法树的节点类。通过JJTree,开发者可以方便地创建自定义的语法树结构,这对于进行语义分析和代码生成非常有用。 4. **JavaCC语法**:JavaCC...

    JavaCC

    JavaCC,全称为Java Compiler Compiler,是一款强大的工具,主要用于生成解析器和词法分析器,尤其是在处理复杂的语法和解析任务时。它是一个基于Java的开源软件,被广泛应用于构建编译器、解释器以及各种语言处理...

    javaccjjtree使用教程借鉴.pdf

    JavaCC和JJTree是两个强大的工具,用于生成Java解析器和抽象语法树(AST)。JavaCC(Java Compiler Compiler)是一个自动生成词法分析器和语法分析器的工具,而JJTree是JavaCC的一个扩展,专注于生成AST。 1. **...

    javacc eclipse_1.5.24.zip javacc插件

    2. **文档**:可能包含插件的用户手册、API参考文档或者快速入门指南,帮助开发者了解如何使用插件以及其功能。 3. **示例**:可能包含一些示例项目或测试用例,展示如何利用插件创建和测试词法分析器和解析器。 4. ...

Global site tag (gtag.js) - Google Analytics