词法分析和算符优先分析课程设计

词法分析和算符优先分析课程设计

ID:9856296

大小:245.50 KB

页数:23页

时间:2018-05-12

词法分析和算符优先分析课程设计_第1页
词法分析和算符优先分析课程设计_第2页
词法分析和算符优先分析课程设计_第3页
词法分析和算符优先分析课程设计_第4页
词法分析和算符优先分析课程设计_第5页
资源描述:

《词法分析和算符优先分析课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、南华大学计算机科学与技术学院课程设计课程名称:编译原理题目:词法分析和算符优先分析班级:01班学号:姓名:段检妹2012年5月24日设计一:词法分析器1.课程设计目的和要求11.1实验目的11.2实验要求12.设计描述23.函数模块35.测试样例与测试结果66.结论7设计二:算符优先语法分析1.课程设计的目的和要求81.1课程设计的目的81.2课程设计的要求82.设计描述82.1自底向上分析方法的描述:82.2算符优先文法的描述:93.概要设计和详细设计104.1功能结构104.2模块的划分105.源代码115.测试样例与测试结果216.结论22

2、设计一:词法分析器1.课程设计目的和要求1.1实验目的通过完成词法分析程序,了解词法分析的过程。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。1.2实验要求通过词法分析器能够实现以下五种类型如单词等的识别。(1)关键字"begin","end","if","then","else","while","write","read"等,"do","call","const","char","until","procedure","rep

3、eat"等(2)运算符:"+","-","*","/","="等(3)界符:"{","}","[","]",";",",",".","(",")",":"等(4)标识符(5)常量2.设计描述词法分析:逐个读入源程序字符并按照构词规则切分成一系列单词。单词是语言中具有独立意义的最小单位,包括保留字、标识符、运算符、标点符号和常量等。词法分析是编译过程中的一个阶段,在语法分析前进行。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。表1各种单词符号对应类型表单词符号类型编码助记符标识符1$SYMNOL常量

4、2$CNSTANTint3$INTif4$IFelse5$ELSEwhile6$WHILEfor7$FORread8$READwrite9$WRITE+10$ADD-11$SUB*12$MUL/13$DIV<14$L<=15$LE>16$G>=17$GE!=18$NE==19$E=20$ASSIGN(21$LPAR)22$RPAR,23$COM;24$SEM3.函数模块1.LexAnalyz()函数实现整个分析的过程2.main主函数:主要实验将输入的字符串存进token中,和组织其他函数已完成功能。3.print()函数将识别的结果打印出来。4

5、.设计源码#include#include#include#includeusingnamespacestd;constchar*reserchar[7]={"int","if","else","while","for","read","write"};//关键字constchar*rememchar[25]={"","$SYMBOL","$CNSTANT","$INT","$IF","$ELSE","$WHILE","$FOR","$READ","$WRITE","$AD

6、D","$SUB","$MUL","$DIV","$L","$LE","$G","$GE","$NE","$E","$ASSIGN","$LPAR","$RPAR","$COM","$SEM"};//助记符voidLexAnalyz();voidPrint();charprog[100];chartoken[10];intsyn,p;charch;intmain(){charsym;Print();p=0;do{ch=getchar();prog[p++]=ch;}while(ch!='#');p=0;do{LexAnalyz();if(syn=

7、=-1)printf("error");elseif(syn!=0){printf("%s%d%s",token,syn,rememchar[syn]);}//system("pause");}while(syn!=0);system("pause");return0;}voidLexAnalyz(){intj=0,i=0;syn=0;for(i=0;i<10;i++)token[i]='';ch=prog[p++];while(ch=='')ch=prog[p++];if(isalpha(ch)){while(isalpha(ch)

8、

9、

10、isdigit(ch)){token[j++]=ch;ch=prog[p++];}ch=prog[p--];syn=1;for(i=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。