java cup_使用JFlex、JavaCUP

给出使用JFlex、JavaCUP来为一个计算器建立分析器的示例的完整代码,使读者能充分领会JavaCUP的使用方法。

虽然本文仅仅给出了计算器的代码,但只要你会写你的语言的翻译模式,则只要照抄这个模版,并改改相应动作就可以了。

引用到的资料:

《CUP User's Manual》,作者:Scott E. Hudson地址为李老师那里下载下来的JavaCUP-11a.rar/CUP-develop.tar.gz/develop/manual.html,

有详细的英文说明和示例代码,但有很多错。本文中简称为《手册》。

《使用CUP进行语法分析》,摘自Apollo的博客,貎似是转载的(竟然不注明[转]和真实出处?!,BS之~),作者待考。有详尽的解释,

但缺乏示例代码。本文中简称为《语法分析》。

详细步骤:

1、准备工作。

JavaCUP和JFlex一样,压缩包里边有许多的文件夹和文件,我不知道正统的做法是否要求使用javaCUP也像Jflex一样要设置一堆path啊、

classpath啊、jflex_home之类的环境变量,但如果你像我一样只打算用它几次,你只要执行下述的两个简单步骤就可以了,它并不需要你设置

任何的环境变量(以下假设你的工作目录是work/):

1)   将JavaCUP压缩包里的java-cup-11a.jar解压到work/下。

2)   将JavaCUP压缩包里的CUP-develop.tar.gz/develop/src下的java_cup文件夹整个解压到work/下。

现在你可以使用JavaCUP了。

2、为这个计算器写一个词法分析器。或者用JFlex生成一个词法分析器

两种方法都可以生成词法分析器,其中,直接写分析器的代码如下:

scanner.java

// Simple Example Scanner Class

// scanner.java

import java_cup.runtime.*;

import java.io.*;

//import sym;

public class scanner implements java_cup.runtime.Scanner {

/**//* single lookahead character */

protected static int next_char;

// since cup v11 we use SymbolFactories rather than Symbols

private SymbolFactory sf = new DefaultSymbolFactory();

private static FileReader fileReader;

public scanner(FileReader fr){

this.fileReader=fr;

}

/**//* advance input by one character */

protected static void  advance()

throws java.io.IOException

{ next_char = fileReader.read(); }

/**//* initialize the scanner */

public static void init()

throws java.io.IOException

{ advance(); }

/**//* recognize and return the next complete token */

public Symbol ne

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值