词法分析实验报告

词法分析实验报告

ID:22696300

大小:544.21 KB

页数:27页

时间:2018-10-31

词法分析实验报告_第1页
词法分析实验报告_第2页
词法分析实验报告_第3页
词法分析实验报告_第4页
词法分析实验报告_第5页
资源描述:

《词法分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理实验一姓名:朱彦荣学号:20132184专业:软件工程2实验题目:词法分析完成语言:C/C++上级系统:VC++6.0日期:2015/11/7词法分析设计题目:手工设计C语言的词法分析器(可以是C语言的子集)设计内容:处理C语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。设计目的:了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。结果要求:课程设计报告。完成日期:第十五周提交报告分析要想手工设计词法分析器,实现C语言子集的识别,就要明白什么是词法分析器,它的功能是什么

2、。词法分析是编译程序进行编译时第一个要进行的任务,主要是对源程序进行编译预处理(去除注释、无用的回车换行找到包含的文件等)之后,对整个源程序进行分解,分解成一个个单词,这些单词有且只有五类,分别是标识符、保留字、常数、运算符、界符。以便为下面的语法分析和语义分析做准备。可以说词法分析面向的对象是单个的字符,目的是把它们组成有效的单词(字符串);而语法的分析则是利用词法分析的结果作为输入来分析是否符合语法规则并且进行语法制导下的语义分析,最后产生四元组(中间代码),进行优化(可有可无)之后最终生成目标代码。可见词法分析是所有后续工作的基础,如果这一步出错,比如明明是‘

3、<=’却被拆分成‘<’和‘=’就会对下文造成不可挽回的影响。因此,在进行词法分析的时候一定要定义好这五种符号的集合。下面是我构造的一个C语言子集第一类:标识符letter(letter

4、digit)*无穷集第二类:常数(digit)+无穷集第三类:保留字(32)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvo

5、latilewhile第四类:界符‘/*(){}[]””,等第五类:运算符<、>=、=、+、■、*、八A、等对所有可数符号进行编码:<$,0>•••<+,33><-,34><*,35>«,37>«=,38><>,39><>=,40><=,41><==,42><;,44><(,45><),46><八,47><,,48><’,50><#,51><&,52><&&,53><%,56>〈〜,57>«<,58>左移<»,59>右移<[,60><],61><{,62><},63>

6、<,64><”65><:,67><常数99,数值><标识符100,标识符指针>上述二元组中左边是单词的符号,右边为其种别码,其中常数和标识符有点特别,因为是无穷集合,因此常数用自身来表示,种别码为99,标识符用标识符符号表的指针表示(当然也可用自身显示,比较容易观察),种别码100。根据上述约定,一旦见到了种别码Syn=63,就唯一确定了‘}’这个单词。下面是一些变量的约定://全局变量,保留字表staticcharreserveWord[32Jl20J={”auto’’,’'break'’,’’case’’,"char",’’const’

7、’,’•continue’’,"default",”do",’’double",’’else",”enum”,"extern**,”float",nfor","goto",Hif"int","long”,"register”,"return","short","signed",”sizeof","static","struct”,"switch”,"typedef”,"union”,"unsigned'"void","volatile","while.’};//界符运算符表,根据需要可以自行增加staticcharIDentifierTbll1000J[50J={

8、•’”};//标识符表charresourceProject[10000];/瑜入的源程序存放处,最大可以存放10000个字符。chartoken[20]={0};//每次扫描的时候存储已经扫描的结果。intsyn=-i;//syn即为种别码,约定‘$’的种别码为0,为整个源程序的结束符号一旦扫描到这个字符代表扫描结束intpProject=0;//源程序指针,始终指向当前源程序待扫描位置。几个重要函数//査找保留字,若成功査找,则返回种别码//否则返回-1,代表查找不成功,即为标识符intsearchReserve(charreserveWord[][20],

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

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

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