语法分析器作业

语法分析器作业

ID:44667942

大小:406.11 KB

页数:30页

时间:2019-10-24

语法分析器作业_第1页
语法分析器作业_第2页
语法分析器作业_第3页
语法分析器作业_第4页
语法分析器作业_第5页
资源描述:

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

1、编译原理实验报告实验三语法分析器1.实验目的熟悉并掌握语法分析器的工作原理和一般设计方法。通过本实验,进一步捉高实际问题分析与解决的能力,以及程序设计能力。2・实验要求:(1)简单语言的语法规则如2①②③④⑤S-i:二E;SifCthenSS-*•whileCdoSC-E>ECE<=E以C语言系统为工具,用递归子程序法设计并实现上述简单语言的语法分析器,实现以下功能:对于给定的简单语言的“句子”,经语法分析,能输出分析过程产生的“产生式”序列(或“语法树”)。能调用“词法分析器”识别出简单语言源程序中的一个个单词符号。(2)对如上简单语言

2、设计测试用例,使用“简单语言语法分析器”,对该测试用例进行语法分析,给出测试用例的语法分析结果。3・实验模块(1)词法分析,识别单词符号单词符号的转换图(2)语法分析器能识别由加+减・乘*除/乘方八括号()操作数所组成的算术表达式,其文法如下:①Sfi:二E;②SifCthenS③S—whileCdoS④C-E>E⑤C-E<二E使用的算法可以是:预测分析法;递归下降分析法;算符优先分析法;LR分析法等。(3)屮间代码生成器产生上述算术表达式的中间代码(四元式序列)4.实现过程说明语法分析器主程序图5•实验结果截屏测试用例为while(a+

3、15)>0doifx2=7theni=z;->INT10->E1>E2->IDN->INT10->E1=E2->IDN->ID:=E->IFCTHENSi->WHILECDOSIIICode:ot:02051>2X+LLot:fo03•19-=31LL2Xo1:=zoto:LIx:6・实验总结通过这次实验,我对词法分析器有了进一步的了解,把理论知识应用于实验屮。也让我重新熟悉了C和C++语言的相关内容,加深了对C、C++语言知识的深化和用途的理解。通过这次语义分析的实验,我对高级语言的学习有了更深的认识,了解得史透彻。我了解了高级语言转化

4、为目标代码或汇编指令的过程,。对今后的学习将起很大的作用,对以后的编程冇很大的帮助.并月•通过此次实验,我了解了LR语法分析的实质和过程。实验虽然只是完成了一个简单的程序,并且程序的主要框架课本上冇给出,但在组织程序结构和深入了确上学到了很多,加深对编译原理的理解,掌握编译程序的实现方法和技术。巩固了前面所学的知识。7•程序源代码词法分析器#include"stdafx.h"#include"Word,h"//构造函数,对数据成员初始化,并将关键字以及运算符读入Word::Word(){//打开关键字文件fstreamkeywordfil

5、eCkeyword・txt,z);if(Ikeywordfile)cout〈〈"error!can'topenkeywordfiIe!z,«endI;system(,zpause,z);}〃设置临时变量将关键字、符号文件中的内容存储stringtempword;inttempencode;stringtempre;inttempvaIue:〃开始读关键字文件while(!(keywordfiIe.eof())){keywordfiIe»tempword»tempencode»tempre»tempvaIue;keywordIist.pus

6、h_back(tempword);keywordencode.push_back(tempencode);keywordre・push_back(tempre);keywordcodevaIue.push_back(tempvaIue);}〃关闭关键字文件keywordfile.close();for(inti二0;i

7、eywordcodevaIue[i]«endI;}fstreamsignwordfiIe("signword・txt");if(Isignwordfile){cout〈〈"error!can"topensignwordfiIe!,z«endI;system("pause");exit(1);}〃开始读符号文件while(!(signwordfile.eof())){signwordfiIe»tempword»tempencode»tempre»tempvaIue;signIist・push_back(tempword);signencod

8、e.push_back(tempencode);signre・push_back(tempre);signcodevaIue.push_back(tempvaIue);}//关闭符号文件sig

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

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

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