- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北邮编译原理词法分析文档和程序
实验报告班级:2011211314姓名:oneseven学号:一.题目:词法分析程序设计与实现二.实验内容:设计并实现 C 语言的词法分析程序,要求如下。(1) 可以识别出用C语言编写的源程序中的每个单词符号,并以记号的形式输出每个单词符号。(2) 可以识别并读取源程序中的注释。(3) 可以统计源程序中的语句行数、单词个数和字符个数,其中标点和空格不计算为单词,并输出统计结果。(4) 检查源程序中存在的非法字符错误,并可以报告错误所在的行列位置。三.实现要求:采用C/C++作为实现语言,手工编写词法分析程序。四.实现功能:基本完成了实验内容中要求的所有功能。(1)识别出源程序中的每个单词符号,并以记号的形式输出每个单词符号(2)识别并读取源程序中的注释(3)统计源程序中的语句行数、单词个数和字符个数(4)检查源程序中存在的非法字符错误,并可以报告错误所在的行列位置。注:本程序未把注释中的单词符号,“”中的单词符号统计在单词个数中。单词个数只包括了标示符,关键字,无符号数。五.实验原理:1.词法分析程序的功能:?输入源程序,输出单词符号的记号形式,如图所示: 源程序词法分析器 单词符号的记号形式2.处理过程:每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。?六.代码#includeiostream #includefstream#includestring#include iomanipusing namespace std;string keyword[32]={auto,break,case,char,const, //关键字 continue,default,do,double,else,extern, enum,float,for,goto,if,int,long,return, register,static,short,signed,unsigned, struct,switch,sizeof,typedef,union, volatile,void,while};int column=0,row=1,character=0,word=0; ifstreaminf(test.txt,ios::in);char c;intfind_key(string word) //匹配关键字{for(inti=0;i32;i++)if(keyword[i].compare(word)==0)return 1;return 0; }void choice(){ while(c==\n||c== ||c==\t) //不计空白符 {if (c==\n) {row++; column=0; //row清零,重新计数另一行 } c=inf.get();column++; }return; }void get() //读取字符{character++; c=inf.get();column++;return; }int process(){stringstr=;if(inf.fail())cout请创建test.txt并输入程序endl;else {ofstreamoutf(out.txt);outfsetw(10)正规表达式setw(30)记号setw(30)属性endl; c=inf.get();column++;while(c!=EOF) { switch(c){ //匹配字符对应记号case a...z:case A...Z:case _:word++;while(isalpha(c)||isdigit(c)||c==_) {str+=c; get(); }if(c==@||c==?||c==$||c==#) {int tag=column;while(isalpha(c)||isdigit(c)||c==_||c==@||c==?||c==$||c==#)
您可能关注的文档
- 北师大版高中英语单词表模块1模块8.doc
- 北师大版高中英语必修1必修4课文要点短语总结.doc
- 北师大版高二数学选修23质量检测试题.doc
- 北师大语文五年级下册劳动的开端》导学案.doc
- 北戴河信息研发中心深基坑施工方案.doc
- 北斗星花园小区园林景观设计合同(规范版本).doc
- 北斗车载导航终端市场分析报告.docx
- 北方人工湿地污水处理技术应用研究与示范工程.doc
- 北方喀斯特自然遗产价值及可持续发展研究.doc
- 北方地区学案.doc
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
文档评论(0)