A. 如何使用JFlex、javaCUP(详细代码模版) by 踏雪赤兔
编译原理的实验要求我们用JFlex和JavaCUP来对语言进行分析处理,JavaCUP有一个User's Manual教你怎样做,上面还有一个简单的计算器作为例子,但一试之下,却发现那个例子有不少错误,结果改了我n久才完成~当然马上就决定写一篇博客告诉大家怎样做才是正确的,以免像我那样白走许多弯路。我也不知是不是我找的那份不好,如果你有更好的manual,记得告诉我。
撰写本文的目的:给出使用JFlex、JavaCUP来为一个计算器建立分析器的示例的完整代码,使读者能充分领会JavaCUP的使用方法。虽然本文仅仅给出了计算器的代码,但只要你会写你的语言的翻译模式,则只要照抄这个模版,并改改相应动作就可以了。
引用到的资料:
《CUP User's Manual》,作者:
Scott E. Hudson
地址为李老师那里下载下来的JavaCUP-11a.rar\CUP-develop.tar.gz\develop\manual.html,有详细的英文说明和示例代码,但有很多错。本文中简称为《手册》。
《使用CUP进行语法分析》
详细步骤: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生成一个词法分析器
两种方法都可以生成词法分析器,其中,直接写分析器的代码如下:
B. 关于JFlex,CUP高手指点拜托各位大神
我是那天给你回答问题的,你说在你别的问题上留言会把分转来的。 可是为什么我回复的你的那个问题给删除了呢?
满意请采纳
C. 一个关于JFlex和CUP的问题
最后一句,直接java paser input.in
D. jflex 配置
1.首先确保java jdk已经设置好环境变量
2.下载jflex,解压到c:\
3.修改C:\jflex\bin\jflex.bat里的JFLEX_HOME=c:\jflex和JAVA_HOME=...(jdk的安装目录),修改环境变
量path,在后面加上;c:\jflex\bin
4.下载java-cup-11a.jar到目录C:\jflex\examples\cup
5.在命令行模式下编译C:\jflex\examples\cup里的lcalc.flex:jflex lcalc.flex
将java-cup-11a.jar 文件里的java-cup文件夹放到外层目录中。
6.在目录C:\jflex\examples\cup执行命令java -jar java-cup-11a.jar ycalc.cup
7.编译Lexer.java:javac Lexer.java
8.编译Main:javac Main.java
9.执行Main:java Main test.txt
10.完成