词法(语法)分析器

词法(语法)分析器

ID:6652056

大小:431.00 KB

页数:27页

时间:2018-01-21

词法(语法)分析器_第1页
词法(语法)分析器_第2页
词法(语法)分析器_第3页
词法(语法)分析器_第4页
词法(语法)分析器_第5页
资源描述:

《词法(语法)分析器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、XXXXXXX本科编译原理课程设计总结报告设计题目:词法分析器(语法分析器)学生姓名:系别:专业:班级:学号:指导教师:20010年7月2日27目录一、设计题目………………………………………………………3二、运行环境(软、硬件环境)……………………………………3三、算法设计的思想………………………………………………3四、算法流程图……………………………………………………5五、算法设计分析…………………………………………………5六、源代码…………………………………………………………6七、运行结果……………………………

2、………………………11八、收获及体会……………………………………………………1227(一)设计题目词法分析器(二)运行环境VisualC++.6.0(三)算法设计的思想源程序词法分析器Token串各种单词符号对应的种别码:单词符号种别码单词符号种别码begin1:17if2:=18then3<20while4<>21do5<=22end6>23letter(letter

3、digit)*10>=24digitdigit*11=25+13(26-14)27*15;28/16#0算法的基本任务是从字符串表示的源程序中识别

4、出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。1.主程序示意图:27主程序示意图如下;其中初值包括如下两个方面:(1)关键字表的初值。关键字作为特殊标示符处理,把它们预先安排到一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如果能查到匹配的单词,则该单词为关键字,否则为一般的标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[6]={“begin”,”if”,”then”,”while”,”do”,”end”};置初值调用扫描子程序

5、输出单词二元组输入串结束?否是结束(2)程序需要用到的主要变量为syn,token和sum。2.扫描子程序的算法思想首先设置3个变量:(1)token用来存放构成单词符号的字符串;(2)sum用来存放整型单词(3)syn用来存放单词符号的种别码。27main(四)算法的流程图变量初始化忽略空格结束文件结束否否拼字符串其它字符对不同符号给出相应的syn值是否是关键字数字报错拼数syn为对应单词的种别码syn=10syn=11结束(五)算法设计分析算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基

6、本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。其中初值包括如下两个方面:(一)关键字表的初值。关键字作为特殊标示符处理,把它们预先安排到一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如果能查到匹配的单词,则该单词为关键字,否则为一般的标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[6]={“begin”,”if”,”then”,”while”,”do”,”end”};27(2)程序需要用到的主要变量为syn,token和sum。2.扫描子程序的算法思想首先

7、设置3个变量:(1)token用来存放构成单词符号的字符串;(2)sum用来存放整型单词(3)syn用来存放单词符号的种别码。(六)源代码#include#include#include#defineMAX150//词法分析表的最大容量#defineMAXBUF255//缓冲区的最大缓冲量charprog[MAXBUF],token[MAX];charch;intsyn,p,m,n,sum;char*rwtab[6]={"begin","if","the

8、n","while","do","end"};/////////////////////////////////////////////////词法分析程序///////////////////////////////////////////////voidscaner(){for(m=0;m=65&&ch<=122/*是字母字符*/){wh

9、ile(ch>=65&&ch<=122

10、

11、ch>=48&&ch<=57)/*为字母字符或数字字符*/{token[m++]=ch;ch=prog[p++];//读取下一个字符;}token[m++]='';p=p-1;27syn=10;for(n=0;n<6;n++)if(strcmp(token,rwtab[n])==0){syn=n+1;//给出sy

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

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

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