西南交大编译原理课程设计(词法分析器和语法分析器).docx
《西南交大编译原理课程设计(词法分析器和语法分析器).docx》由会员分享,可在线阅读,更多相关《西南交大编译原理课程设计(词法分析器和语法分析器).docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除编译原理课程设计报告院 系 专 业 年 级 学 号 姓 名 西南交通大学信息科学与技术学院2013年 12月 8日课程设计一:手工设计C语言的词法分析器一、设计内容手工设计c语言的词法分析器,结合状态转换图的原理完成对c语言源程序的基本单词的分析及提取,并设计相应的数据结构保存提取出来的单词。以及对c语言中的保留字的处理策略,实现一个完整的C语言的词法分析器的编写。二、设计目的通过本实验的设计更具体的理解词法分析器的工作机制。同时更理解C语言的结构体系。从而更深刻的透析编译原理过程。三、设计平台1、硬件环境 (1)Intel(R) Core(TM
2、) i3-2310M CPU 2.10GHz 2.10GHz (2)内存4G2、软件环境 (1)Window8 Professor (2)Visual C+6.0开发软件3、开发语言:C语言。四、需求分析:词法分析程序又称词法分析器或词法扫描器。可以单独为一个程序;也可以作为整个编译程序的一个子程序,当需要一个单词时,就调用此法分析子程序返回一个单词,这里,作为子程序词法分析器的结构:源程序输入缓冲区预处理子程序扫描缓冲区1扫描缓冲区2词法分析子程序返回一个单词调用数据状态转换图的程序实现 为便于程序实现,假设每个单词间都有界符或运算符或空格隔开,并引入下面的全局变量及子程序:1) ch 存放
3、最新读进的源程序字符2) strToken 存放构成单词符号的字符串3) Buffer字符缓冲区4)struct keyType 存放保留字的符号和种别五、概要设计保留字表的设计结构:基本功能状态转换:六、详细设计1. GETCHAR 读一个字符到 ch 中2. GETBC 读一个非空白字符到ch 中3. CONCAT 把CHAR 中字符连接到strToken 之后4. LETTER 判断CHAR 中字符是否为字母5. DIGIT 判断ch 中字符是否为数字6. RESERVE 用strToken中的字符串查找保留字表,并返回保留字种别码,若返 回零,则非保留字7. RETRACT 把CHAR
4、 中字符回送到缓冲区源程序:#include stdio.h#include stdlib.h#include conio.h#include string.h#define N 47/保留字个数char ch=0;/存放最新读进的源程序字符char strToken20=0;/存放构成单词符号的字符串char buffer257=0;/字符缓冲区/*-保留字结构-*/struct keyTypechar keyname256;int value;KeyN=$ID,0,$INT,1,auto,2,break,3,case,4,char,5,const,6,continue,7,default,
5、8,do,9,double,10,else,11,enum,12,extern,13,float,14,for,15,goto,16,if,17,int,18,long,19,register,20,return,21,short,22,signed,23,sizeof,24,static,25,struct,26,switch,27,typedef,28,union,29,unsigned,30,void,31,volatile,32,while,33,=,34,+,35,-,36,*,37,/,38,%,39,40,;,41,(,42,),43,?,44,clear,45,#,46;/*-
6、子过程-*/void GetChar()/读一个字符到ch中int i;if(strlen(buffer)0)ch=buffer0;for(i=0;i256;i+)bufferi=bufferi+1;elsech=0;void GetBC()/读一个非空白字符到ch中int i;while(strlen(buffer)i=0;ch=bufferi;for(;i=A&ch=a&ch=0&ch=9)return true;elsereturn false;int Reserve()/用strToken中的字符查找保留字表,并返回保留字种别码,若返回0,则非保留字int i;for(i=0;i0;i
7、-)bufferi=bufferi-1;buffer0=ch;ch=0;/*-词法分析器-*/keyType ReturnWord()strcpy(strToken,0);int c;keyType tempkey;GetBC();if(ch=A&ch=a&ch=0&ch0) a=b+c;);printf(buffer:n%sntt 单词t种别号n,buffer);while(strlen(buffer)printf(按任意键提出一个词:);getch();temp=ReturnWord();printf(%st %dnn,temp.keyname,temp.value);printf(the
8、 end!n);return 0;七、测试当输入字符“if(i0) a=b+c”,当缓冲区接受这串字符后,通过调用词法分析子程序,可有如下的显示结果:八、结束语通过对C语言词法分析器的设计和编写,更加了解了编译程序在编译过程中的效用。同时,也更加了解了C语言的结构。对于词法分析器这一章的理论知识也有了较深入的理解。课程设计二:手工设计简单的语法分析器一、设计内容用算符优先分析方法设计一个分析解释程序,对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中;若存在错误,提示错误相关信息。二、设计目的了解掌握算符优先分析的基本方法、内容; 学会科学思考并解决问题,
9、提高程序设计能力。三、设计平台1、硬件环境 (1)Intel(R) Core(TM) i3-2310M CPU 2.10GHz 2.10GHz (2)内存4G2、软件环境 (1)Window8 Professor (2)Visual C+6.0开发软件3、开发语言:C语言。四、需求分析:语法分析的任务: 把单词符号作为基本单位,分析程序是否为合法的程序.算符优先分析法是自下而上的语法分析方法,即根据文法,对输入字串进行归约,若能正确地归约为文法的初始符号,则表示输入字串是合法的.该试验主要研究对输入的赋值语句、输出语句、清除语句进行词法分析、语法分析、表达式求值并存储于指定变量中;若存在错误,
10、提示错误相关信息。文法表示: Sv=E|E?|clear EE+T|E-T|T TT*F|T/F|F F (E)|v|c 五、概要设计单词种别码设计:符号种别码=1?2+3-4*5/6(7)8v9c10clear11#12N13六、详细设计1. 优先关系矩阵:int priorityNUMNUM2. 单词种别码结构:struct WordType3. 变量表中的元素结构:struct VarWord4. 变量表结构:struct VarTable5. 归约栈:mainStack6. 单词串:wordStack7. 输入串转化成单词串:GetwordStack()8. 从单词串中取单词:GetW
11、ord()9. 清空单词串和归约栈:ClearwordStack()、ClearmainStack()10. 查看变量在变量表中的位置:CheckvarTable(char a)11. 变量表添加变量:AddvarTable(VarWord a)12. 初始化归约栈:InitmainStack()13. 归约栈添加:AddmainStack(WordType a)14. 归约处理程序:Handle()15. 归约子程序:MainHandle()源程序:#include stdio.h#include stdlib.h#include conio.h#include string.h#defin
12、e NUM 14#define M 256/优先关系矩阵int priorityNUMNUM=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,-1,-1,-1,1,-1,0,0,1,0,0,0,0,1,1,-1,-1,-1,1,-1,0,0,1,0,0,0,0,1,1,1,1,-1,1,-1,0,0,1,0,0,0,0,1,1,1,1,-1,1,-1,0,0,1,0,0,0,0,-1,-1,-1,-1,-1,2,-1,0,0,0,0,0,0,0,1,1,1
13、,1,0,1,0,0,0,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0;/*-单词,种别码-*/struct WordTypechar wordM;int value;wordTypeNUM=error,0,=,1,?,2,+,3,-,4,*,5,/,6,(,7,),8,$i,9,$c,10,clear,11,#,12,$N,13;/*-变量表-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南 交大 编译 原理 课程设计 词法 分析器 语法
限制150内