- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
本科实验报告
课程名称:程序设计训练
学院:电子信息与电气工程学部
词法分析器
程序说明:
此词法分析器是一个能够扫描输入的字符流,并将扫描到的字符按照二元式的形式保存到word.txt文件中的一个程序(也可以通过屏幕输出的方式输出)。通过词法分析可以为完成对应语言的编译程序做准备,同时词法分析器也可以完成对输入流的字符统计。
运行环境:
WINDOWS7,visualc++6.0。
定义语言G={VN,VT,P,S}
其中,VN={P,D,S,B,T’,L,L’,E,T,F,NUM,RELOP,ID}
VT={int,if,then,else,while,do,read,write,;,,|,{,},=,=,,,==,!=,=,+,-,*,/,++,--,(,),a~z,A~Z,0~9,}
P={
P→{DS}
D→intID;{intID;}
S→if(B)thenS[elseS]|while(B)doS|{L}|ID=E
|writeE;|readID;
L→SL’
L’→;L|e
B→T’{∨T’}
T’→F’{∧F’}
F’→IDrelopID|ID
E→T{+T|-T}
T→F{*F|/F}
F→(E)|NUM|ID
NUM-0|1|2|3|4|5|6|7|8|9
RELOP-|=||=|==
}
S={P}
P代表程序,D代表声明语句,S代表语句,
L代表语句的表列,
B代表布尔表达式,非零代表真。
实现的代码如下
#includestdio.h
#includestring.h
#defineMAX80
#defineIDMAX8
//标识符最大长度为IDMAX个字符,最大输入字符为MAX个字符,类别编码syn,保留字共8个rwtab[8]
charprog[MAX],token[IDMAX],ch;
intsyn,p,m,n,sum;
char*rwtab[8]={int,if,then,else,while,do,read,write};//保留字
voidscaner();
intmain()
{
FILE*fout;
fout=fopen(word.txt,w);//建立单词本
p=0;
printf(\npleaseinputastring(endwith#):\n);
do{
scanf(%c,ch);
prog[p++]=ch;
}while(ch!=#);
p=0;
do{
scaner();
switch(syn)
{
case-1:
printf(youhaveinputawrongstring\n);
return0;
break;
default:
fprintf(fout,%d\t%s\n,syn,token);//文件输出和屏幕输出切换
//printf(%s\t%d\n,token,syn);
break;
}
}while(syn!=0);
getchar();
}
voidscaner(void)
{
sum=0;
for(m=0;m8;m++)
token[m++]=\0;
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)))
您可能关注的文档
- 垃圾渗滤液处理系统设计.doc
- 垃圾焚烧厂课程设计.docx
- 课程设计--某线路板厂有机废气吸附净化设计.docx
- 机械加速澄清池设计计算说明书.doc
- 固体废物处置与资源化 课程设计--城市污泥干化处理.doc
- 固体废物处理与处置课程设计--日处理300t城市脱水污泥焚烧处理工艺设计.doc
- 固体废物处理与处置课程设计--日处理30t电镀污泥综合利用项目工艺设计.docx
- 固体废物处理与处置课程设计--日处理20t重金属残渣的水泥固化处理工艺设计.docx
- 固体废物处理与处置课程设计--日处理20t废覆铜板分选回收处理工艺设计.doc
- 固体废物处理与处置课程设计--日处理10t重金属残渣的水泥固化处理工艺设计.doc
文档评论(0)