




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
计算机网络课程设计报告 词法分析器: 实验目的 调试并完成一个词法分析程序,加深对词法分析原理的理解。 实验要求 待分析的简单语言的词法 关键字: beginifthenwhiledoend 所有关键字都是小写。 运算符和界符: :=+–*/<<=<>>>==;()# 其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: ID=letter(letter|digit)* NUM=digitdigit* 空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 各种单词符号对应的种别码 单词符号种别码单词符号种别码begin1:17if2:=18then3>20while4<>21do5<=22end6<23letter(letter|digit)*10>=24digitdigit*11=25*13;26/14(27+15)28-16#0 词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 三、C语言程序源代码: #include<stdio.h> #include<string.h> charprog[80],token[8],ch; intsyn,p,m,n,sum; char*rwtab[6]={"begin","if","then","while","do","end"}; scaner(); main() {p=0; printf("\npleaseinputastring(endwith'#'):/n"); do{ scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; do{ scaner(); switch(syn) {case11:printf("(%-10d%5d)\n",sum,syn); break; case-1:printf("youhaveinputawrongstring\n"); getch(); exit(0); default:printf("(%-10s%5d)\n",token,syn); break; } }while(syn!=0); getch(); } scaner() {sum=0; for(m=0;m<8;m++)token[m++]=NULL; ch=prog[p++]; m=0; while((ch=='')||(ch=='\n'))ch=prog[p++]; if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))) {while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9'))) {token[m++]=ch; ch=prog[p++]; } p--; syn=10; for(n=0;n<6;n++) if(strcmp(token,rwtab[n])==0) {syn=n+1; break; } } elseif((ch>='0')&&(ch<='9')) {while((ch>='0')&&(ch<='9')) {sum=sum*10+ch-'0'; ch=prog[p++]; } p--; syn=11; } elseswitch(ch) {case'<':token[m++]=ch; ch=prog[p++]; if(ch=='=') {syn=22; token[m++]=ch; } else {syn=20; p--; } break; case'>':token[m++]=ch; ch=prog[p++]; if(ch=='=') {syn=24; token[m++]=ch; } else {syn=23; p--; } break; case'+':token[m++]=ch; ch=prog[p++]; if(ch=='+') {syn=17; token[m++]=ch; } else {syn=13; p--; } break; case'-':token[m++]=ch; ch=prog[p++]; if(ch=='-') {syn=29; token[m++]=ch; } else {syn=14; p--; } break; case'!':ch=prog[p++]; if(ch=='=') {syn=21; token[m++]=ch; } else {syn=31; p--; } break; case'=':token[m++]=ch
Ta的资源

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中考试模拟试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中综合测试试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中综合测试模拟试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中统考试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中统考模拟试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中经典试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中经典模拟试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中监测试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中监测模拟试题含解析

2024-2025学年吉林九台区加工河中学七年级数学第一学期期中检测试题含解析

lj****88
实名认证
内容提供者


最近下载