云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 编译原理课设

编译原理课设

  • 62 次阅读
  • 3 次下载
  • 2025/6/1 6:32:28

“编译原理”课程设计报告 CPR-1206010231

//扫描,对字符串进行逐一扫描 {

for(n=0;n<9;n++) //先将令牌清空

token[n]=NULL; ch=chter[p++]; while(ch==' ')

//当扫描到空格时,空格有分隔两个单词的作用

{

ch=chter[p]; p++; }

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) //当扫描到单词首字符为字母时

{

m=0;

while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

//首字符后的字符为字母后数字

{

token[m++]=ch; ch=chter[p++]; }

token[m++]='\\0'; p--; syn=10;

for(n=0;n<6;n++)

//因为扫描到的ID有可能有关键字的情况,所以要进行关键字判定

{

if(strcmp(token,keyword[n])==0) {

syn=n+1; break; } } }

Page 5 of 24

“编译原理”课程设计报告 CPR-1206010231

else if((ch>='0'&&ch<='9')) //当扫描到单词首字符为数字时

{

sum = 0;

while((ch>='0'&&ch<='9'))

//首字符后的字符也为数字时

{

sum=sum*10+ch-'0'; ch=chter[p++]; } p--; syn=11; if(sum>32767)

//定义的整数不能超过int类型的范围,否则种别码为-1

syn=-1;

}

else switch(ch)

//当扫描到的单词首字符为以下列出的符号时

{

case'+':syn=13;

token[0]=ch; break; case'-':syn=14;

token[0]=ch; break; case'*':syn=15;

token[0]=ch; break; case'/':syn=16;

token[0]=ch; break; case':':m=0;

token[m++]=ch; ch=chter[p++]; if(ch=='=')

Page 6 of 24

“编译原理”课程设计报告 CPR-1206010231

//首字符为:第二个字符为=时

{

syn=18; token[m++]=ch; } else {

syn=17; p--; } break; case'<':m=0;

token[m++]=ch; ch=chter[p++]; if(ch=='>')

//首字符为<第二个字符为>时

{

syn=21; token[m++]=ch; }

else if(ch=='=')

//首字符为<第二个字符为=时

{

syn=22; token[m++]=ch; } else {

syn=20; p--; } break; case'>':m=0;

token[m++]=ch; ch=chter[p++];

Page 7 of 24

“编译原理”课程设计报告 CPR-1206010231 if(ch=='=')

//首字符为>第二个字符为=时

{

syn=24; token[m++]=ch; } else {

syn=23; p--; } break; case'=':syn=25;

token[0]=ch; break; case';':syn=26;

token[0]=ch; break; case'(':syn=27;

token[0]=ch; break; case')':syn=28;

token[0]=ch; break; case'#':syn=0;

token[0]=ch; break; default: syn=-1;

break;

} }

【实验1.4】调试与测试数据

输入字符不在分析范围中的错误界面:

Page 8 of 24

搜索更多关于: 编译原理课设 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

“编译原理”课程设计报告 CPR-1206010231 //扫描,对字符串进行逐一扫描 { for(n=0;n<9;n++) //先将令牌清空 token[n]=NULL; ch=chter[p++]; while(ch==' ') //当扫描到空格时,空格有分隔两个单词的作用 { ch=chter[p]; p++; } if((ch>='a'&&ch='A'&&ch<='Z')) //当扫描到单词首字符为字母时 { m=0; while((ch>='0'&&ch='a'&&ch='A'&&ch<='Z')) //首字

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com