下载此文档

编译原理设计c语言的词法分析器.docx


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
编译原理课程设计报告
题目:
学院:
教师:
姓名:
学号:
班级:
评分:签字:
编译原理课程设计一:设计c语言的词法分析器
、实验目的
了解高级语言单词的分类,了解状态图以及如何表示并识别单词规那么,掌握状态图到{
intcont[300];
intlen;
}constnumber;
//读入一个字符
if((ch=getc(fp))==EOF)exit(1);
}
//读入一个非空字符
voidGetBC(FILE*fp)
{
while(ch==''||ch=='\n'||ch==9)Getchar(fp);
}
//连接字符
voidcontacat()
{
char*cht=&(ch);
strcat_s(token,cht);
}
//判断是否为字母
intletter()
{
returnisalpha(ch);
}
intdigit()
returnisdigit(ch);
//回退
voidretract(FILE*fp,char*c)
{
inta=ftell(fp);
fseek(fp,0,SEEK_SET);
fprintf_s(fp,"%c",ch);
ch='';
fseek(fp,a,SEEK_SET);
}
//处理保存字
intreserve(char**k)
{
inti;
for(i=0;i<LENGTH;i++)
{
if(strcmp(token,k[i])==0)return(i+1);
}
return0;
}
//处理标识符,查找符号表并存放位置假设没有那么添加
intsysmbol(identifier*id)
inti;
for(i=0;i<id->len;i++)
if(strcmp(token,id->I[i])==0)
returni+1;
if(id->len>256)
{
cout<<"error";
}
id->I[id->len]=token;
id->len++;
returnid->len;
}
//数字字符串转化为整数
intstr_to_num()
{
inti=0;
intk=token[i]-'0';
for(i=1;token[i]!='\0';i++)
{
k=k*10+token[i]-'0';
}
returnk;
}
//存入常数表,并返回它在常数表中的位置
intconstant(constnumber*con)
con->cont[con->len]=str_to_num();
con->len++;returncon->len;
//
写到文件
voidTofile(intnum,intval,identifier*id,constnumber*con,FILE*fw)
intnum_=num;
fprintf_s(fw,"(%d,",num);
if(num>=4)
fprintf_s(fw,"%s",CODE[num-1]);
if(num<4)
switch(num)case1:fprintf_s(fw,"%s",id->I[val-1]);break;
case2:fprintf_s(fw,"%d",con->cont[val-1]);break;
case3:fprintf_s(fw,"%s",k[val-1]);break;
fprintf_s(fw,")\n");
voiderror(FILE*fw)
cout<<"(Error,"<<ch<<")"<<endl;
fprintf_s(fw,"(Error,%c\n)",ch);
}
FILE
//词法分析函数
voidWordAnalyze(char**k,char*c,char**CODE,identifier*id,constnumber*con,FILE*fp,*fw)
{
intnum,val;
strcpy_s(token,"");//初始化为空字符串
Getchar(fp);
GetBC(fp);
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))//分析标识符和保存字
{
//假设字符为A~Z或0~9,那么继续读取
while(letter()||digit())
{
contacat();
Getchar(fp);
}
retract(fp,c);
num=reserve(k);
if(num!=0)
Tofile(3,num,id,con,fw);
else
val=sy

编译原理设计c语言的词法分析器 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zhangshut
  • 文件大小91 KB
  • 时间2022-05-20
最近更新