用java做一个简单的词法分析器网上有个antlr-2.7.5-chinese的文档,你先把基本概念看懂先,否则给你例子也看不懂,去博客园找找几篇博客看看 , 静下心来看,我这两天也在研究 , 写出来后再把g文件给你
如何使用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生成一个词法分析器
两种方法都可以生成词法分析器,其中,直接写分析器的代码如下:
帮忙写份词法分析程序,C,C++,java,C#都行,越简单越好!这个我做了一个类似的,识别字符串的,发给你,你在这个基础上改一下吧,哥最近在忙软考不然帮你做做 。
程序识别的字符串输入的格式:
1、输入如下正确的常量说明串:
const count=10,sum=81.5,char1=‘f’,max=169,str1=“h*54 2..4S!AAsj”, char2=‘@’,str2=“aa!+h”;
输出:
count(integer,10)
sum(float,81.5)
char1(char, ‘f’)
max(integer,169)
str1(string,“h*542..4S!AAsj”)
char2(char, ‘@’)
str2(string,“aa!+h”)
int_num=2;char_num=2; string_num=2; float_num=1.
程序如下:
#includeiostream
using namespace std;
int char_num=0,string_num=0,int_num=0,float_num=0;// 字符值类型,0=字符,1=字符串,2=整数,3=浮点数
class zifu//建立字符类,存储一个字符串的信息
{
public:
int i;
char name[20];
char data[20];
int dataname;
void display(){
i=0;
while(name[i]!='\0')
{
coutname[i];
i++;
}
cout"=";
i=0;
while(data[i]!='\0'){
coutdata[i];
}
coutendl;
coutdatanameendl;
}
};
void input(char a[])//输入函数
{
charstand[6]="const";
int i=0,judge=0;
gets(a);
for(i=0;i5;i++)
{
if(a[i]==stand[i])
judge++;
}
if(judge!=5 || a[5]!=' ')
{
cout"It is not a constant declaration statement! ";
推荐阅读
- word表格怎么放大,word表格怎么放大到整页
- jquery鼠标悬浮没效果,js鼠标悬浮显示内容
- 即时战略游戏破解版,即时战略游戏单机版
- 夫妻俩直播带货话术文案,夫妻俩直播带货话术文案简短
- go语言数组删除 go数组append
- 海报设计如何运营销售,海报设计技巧有哪些
- html5的flex布局的简单介绍
- sap发布标准价估算明细,sap计价方式
- linux中的查找命令行 linux快速查找命令