`
wanghuanqiu
  • 浏览: 109919 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Javacc实例及代码详解

阅读更多

     javaCC 是一个能生成语法和词法分析器的生成程序。语法和词法分析器是字符串处理软件的重要组件。编译器和解释器集成了词法和语法分析器来解释那些含有程序的文件.

如果想详细了解javacc可以在网上收集到很多资料。

    这里举一个简单的javacc实例帮助大家学习javacc

首先下载javacc的eclipse插件,然后再eclipse.exe目录中安装即可。

这是新建中就会出现新建javacc文件。有三种类型文件为jj、jjt、jtb,本章介绍jj的文件例子。是一个简单加减法的例子,并返回结果

   代码如下:

 options{
  STATIC = true;

  //options有如下的选项

 

//CHOICE_AMBIGUITY_CHECK=true;

//OTHER_AMBIGUITY_CHECK =true;

//DEBUG_PARSER=true;

//DEBUG_TOKEN_MANAGER=true;

 

// FORCE_LA_CHECK=true;
  // DEBUG_PARSER = true;//以debug形式生成,便于调试.
  // STATIC=false; //生成非静态类.
  // LOOKAHEAD=3;
//向前看三个字母,消除歧义用的

 


}
PARSER_BEGIN(Fei)//名称的开始,和类名相同
package com.demo16;
import java.io.Reader;
import java.io.StringReader;
public class Fei{

 

//如果需要定义一些动作再次类中写方法,此方法为转换为字符
  public Fei(String expr){
    this ((Reader)new StringReader(expr));
  }
  public static void main(String args[])throws ParseException{
    Fei fei = new Fei(System.in);//实例化,并且有一个输入参数
    System.out.println(fei.elexpr());//输出结果
  }
}
PARSER_END(Fei)//结束
SKIP:{//分析器忽略不计的字符
  " "
  | "\r"
  | "\t"
  | "\n"
}

//定义的字符,一些正则表达式
TOKEN[IGNORE_CASE]://自定义的字符,IGNORE_CASE不计大小写
  <ADD:"+">
  | <SUB:"-">
  | <RK:"(">
  | <LK:")">
  | <NUMBER:(["1"-"9"])*(["0"-"9"])+>
}

 

//SPECIAL_TOKEN:{特殊字符分析器不进行语法解析但会给解释器}

 

//MORE:{ 这些定义的字符是放在缓存里的,个人理解为必须出现的字符}

//接下来这些方法为BNF范式,javacc是自上而下的分析方法,所以要推出左推导,不能有左递归
double elexpr():{
  double temp = 0;
}
{
  temp = expr(){
    return temp;//返回值
  }
}
double expr():{
  double temp = 0;
  double first, second;
}
{
  first = term(){
    temp = first;
  }
  (<ADD>second = term(){
    temp = first+second;//实际加法运算
  }
  | <SUB>second = term(){
    temp = first-second;//实际减法运算
  }
  )*//可以出现0次或多次

{
    return temp;
  }
}
double term():{
  double temp = 0;
  Token t;
}
{
  t = <NUMBER>{
    return Double.parseDouble(t.image);//image是字符域,保存当前的值
  }
  | <RK>temp = expr()<LK>{
    return temp;
  }
}

 

 

 

 

例如输入8+(5-3) 回车输出  9

 

分享到:
评论

相关推荐

    基于JavaCC的C代码自动并行化的设计与实现

    基于JavaCC的C代码自动并行化设计与实现是一个旨在优化C语言程序性能的项目,通过分析C源代码并进行智能转化,将原本串行的执行流程转化为可以并行处理的部分。 JavaCC(Java Compiler Compiler)是一个广泛使用的...

    JavaCC文档及部分翻译

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

    javacc7.0.10源代码

    JavaCC JavaCompilerCompiler 是一个用JAVA开发的最受欢迎的语法分析生成器 这个分析生成器工具可以读取上下文无关且有着特殊意义的语法并把它转换成可以识别且匹配该语法的JAVA程序 JavaCC可以在Java虚拟机 JVM V1 ...

    JavaCC入门详解.docx

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

    javacc4.1源码

    JavaCC(Java Compiler Compiler)是Java语言的一个开源工具,它用于生成词法分析器(lexical analyzer)和语法分析器(parser)的源代码。这个工具主要用于解析符合特定语法规则的输入,例如编程语言的源代码,从而...

    javacc源代码

    它是100%的纯Java代码 可以在多种平台上运行 与Sun当时推出Java的口号&quot;WriteOnceRunAnywhere&quot;相一致 JavaCC还提供JJTree工具来帮助我们建立语法树 JJDoc工具为我们的源文件生成BNF范式 巴科斯 诺尔范式 ...

    javacc 词法分析器

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

    javacc 语法分析代码

    1. 掌握 JavaCC 语法分析器工作原理; 2. 设计 MiniC 的上下文无关文法,在“Parser.jjt”文件中表示该文法,生成调试递归下降分析程序,以便对任意输入的符号串进行分析; 3. 输出语法树。 4. 以文件流的形式读入...

    javacc6.0安装及学习示例

    这个"javacc6.0安装及学习示例"压缩包文件包含了JavaCC的源代码、学习示例和官方文档,对于想要深入理解和使用JavaCC的人来说,是一份非常宝贵的资源。 首先,让我们了解什么是JavaCC。JavaCC是基于Java的,它通过...

    JavaCC语法分析器 基于Eclipse插件 能从文件读取源代码输出语法树

    JavaCC能够处理复杂语法,并生成符合Java语言的解析器代码,使得开发者可以构建自己的编程语言或者对特定格式的数据进行解析。在这个项目中,JavaCC被用来创建一个能读取源代码并输出语法树的解析器,集成到了...

    JavaCC

    JavaCC的核心功能是生成符合用户自定义语法规则的解析代码,这些代码能够读取、分析并理解特定格式的数据输入。 JavaCC的工作原理基于上下文无关语法(Context-Free Grammar,CFG),允许开发者通过定义文法来描述...

    javaCC入门文档

    #### 八、JavaCC代码生成 当在命令行中运行`javacc Simple1.jj`时,JavaCC会生成以下文件: - `Simple1.java`: 主解析器类。 - `Simple1TokenManager.java`: 词法分析器类。 - `Simple1Constants.java`: 包含符号...

    javacc-4.0以及 javacc-5.0下载

    JavaCC将这个JJ文件转换为Java源代码,生成的类可以解析符合所定义语法规则的输入。这些类包括一个词法分析器(Token Manager)和一个语法分析器(Parser),它们共同工作以理解和处理输入。 使用JavaCC的优势包括...

    javacc学习手册(个人总结)

    8. 参考实例:javacc的发行版包括了Java和HTML语法的例子,这些实例可以很快的帮助你熟悉javacc。 9. 国际化:javacc的词法分析器可以处理各种Unicode的输入,设置JAVA_UNICODE_ESCAPE和UNICODE_INPUT选项可以控制...

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

    Java编写的CMM词法分析器是用于解析特定语言(如CMM)源代码的工具,它是编译器或解释器的重要组成部分。词法分析器的任务是从源代码中识别出一个个有意义的单元,称为标记(Token),这些标记是语法分析阶段的输入...

    自己编写的100个javacc例子程序

    这个压缩包包含了一百个我自己编写的JavaCC示例程序,每个实例都代表了一个特定的语法或功能,可以帮助你深入理解和掌握JavaCC的使用。 在这些例子中,`README`文件通常会提供整体的介绍,包括如何运行这些示例,...

    javacc语法分析.zip

    JavaCC(Java Compiler Compiler)是Java语言的一个开源工具,用于生成词法分析器(Lexer)和语法解析器(Parser)的源代码。它基于LL(k)解析算法,并且支持自定义文法,使得开发者能够构建复杂的语法分析器,用于...

Global site tag (gtag.js) - Google Analytics