计算机网络课程设计-词法分析器.docx 立即下载
2025-01-15
约2.8万字
约27页
0
197KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

计算机网络课程设计-词法分析器.docx

计算机网络课程设计-词法分析器.docx

预览

免费试读已结束,剩余 22 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

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
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

计算机网络课程设计-词法分析器

文档大小:197KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用