- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验报告(词法分析部分)姓名:王豪学号业:软件工程班级:软件1班实验题目:《手工设计c语言的词法分析器(可以是c语言的子集)》实验内容:处理c语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。实验目的:了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。实验环境:系统:Win10编译工具:VS2010语言:C++需求分析:要求手工设计c语言的词法分析器(可以是c语言的子集)。词法分析器需要先处理c语言源程序,过滤掉无用符号。词法分析器的主要功能是判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。概要设计:可以将词法分析程序分为字符文件缓冲区、词法分析、结果输出三部分。基本流程:使用的数据结构://词法分析器返回类型结构体struct WORD_TYPE{int ID;char value[MAX_TOKEN_SIZE];};//WORD_TYPE的缺省空值WORD_TYPE NULL_WT={0,0};//WORD_TYPE的错误值WORD_TYPE ERR_WT={-1,-1};详细设计:IsLetter函数判断是否为字母、IsKey函数判断是否为关键字、IsDigit判断是否为数字,通过analyse()函数进行分析,analyse()为主要的函数体,主要通过case语句和if—else语句实现各种各种运算符的判别过程,最后main()函数调用并且输出结果。结果测试测试程序代码:#include stdafx.h#includeGetWord.hint _tmain(int argc, _TCHAR* argv[]){fstream file(H:\\test2.txt, ios_base::trunc|ios::out );WORD_TYPE wt;InitBuffer(H:\\test.txt);wt=GetWord();fileID:wt.IDValue:wt.valueendl;while(wt.ID!=0){wt=GetWord();if(wt.ID!=0)fileID:wt.IDValue:wt.valueendl;if(wt.ID==-1){break;}}file.close();return 0;}输入的原始数据:测试结果:截图1 截图2九、小结通过编写这次的课程设计,学会了用C++语言编写词法分析器,掌握了词法分析器的原理以及功能且加深对编译原理和应用程序的理解。通过设计调试词法分析程序,实现了从程序中分出各种单词的方法,从而加深了对该知识的理解,提高了词法分析的实践能力。总之,通过本次实验,提高了自己的能力,使我受益匪浅。附代码://=======================//定义的宏//=======================#define MAX_BUFFER_SIZE 256#define MAX_TOKEN_SIZE 128#define SIGN_SIZE 12#define OTHER_SYMBOL_SIZE 2#define REVERSE_SIZE 1#define SIGN_START_ID 1#define REVERSE_START_ID 11//=======================//词法分析全局变量的定义//=======================WORD_TYPE NULL_WT={0,0};WORD_TYPE ERR_WT={-1,-1};fstream source_File;char Buffer[MAX_BUFFER_SIZE];int buffer_Index;int buffer_Size;char CHAR;char TOKEN[MAX_TOKEN_SIZE];int token_Index;char ReserveTable[REVERSE_SIZE][30]={clear};char SignTable[SIGN_SIZE]={=,?,+,-,*,/,(,),X,X,X,;};//================================//词法分析的函数声明//================================//**初始化文件缓冲区函数**//参数:char addr[]:要读取的文件的地址//返回:地址合法初始化成功返回true,地址非法初始化失败返回falseextern bool InitBuffer(char addr[]);//**关闭文件缓冲区函数**//注:编译结束后调用该函数关闭读取的文件extern void
您可能关注的文档
- 保持艺术创造性的29个方法讲稿.docx
- 02网络与数据通信基础解题.ppt
- 堡垒机阿里云安装包安装讲稿.docx
- 爆破考试专业科目讲稿.docx
- 北斗卫星导航定位行业研究讲稿.docx
- 北斗卫星导航系统_维基百科讲稿.docx
- 北斗卫星导航系统讲稿.docx
- 北斗卫星导航系统位置讲稿.docx
- 北京大风车章丘市妇女儿童活动中心幼儿园社会实践讲稿.docx
- 北京大学学术规范测试讲稿.docx
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 云南西部沿边高校边境缅甸语人才培养的校政企合作模式探索.docx VIP
- 《固定式钢梯及平台安全要求 第2部分:钢斜梯》GB 4053.2-2009.docx VIP
- 幼小科学衔接视角下家校社协同共育现状及对策研究.pdf VIP
- 2025中国中信金融资产管理股份有限公司甘肃分公司招聘笔试备考题库及答案解析.docx VIP
- 旅游警务服务规范.pdf
- 2025凉山州继续教育公需科目满分答案-深入学xi关于发展新生产力的重要论述.docx VIP
- 第三章 教育目的.ppt VIP
- 乳腺癌脑转移瘤护理查房.pptx VIP
- 眼科专科护理操作风险防范.pptx VIP
- 真菌镜检报告.pptx VIP
文档评论(0)