词法分析器实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析器实验

《编译原理》课程实验报告 课程实验题目: 词法分析器实验 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: 作 者 学 号: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 一、实验目的 了解词法分析程序的两种设计方法:1.根据状态转换图直接编程的方式;2.利用DFA编写通用的词法分析程序。 二、实验内容及要求 1.根据保留字和特殊符号表能区分出源文件中的保留字、普通标识符和特殊符号,并能进行简单的错误处理。 2.设计词法分析器模块调用结构图和各模块流程图。 3.程序源代码。 4.程序的执行结果:输入文件,输出结果文件及屏幕信息。 三、实验程序设计说明 1.实验方案设计 词法分析器的结构图如下: 图1 程序结构图 1. GetText函数:提取文本文件中的信息 2. GetWord函数:获得一个单词符号,从位置i开始查找。 3. DeleteNull函数:除去字符串中连续的空格和换行 4. IsBoundary函数:识别当前所指的字符是否为一个分界符 5. IsOperation函数:识别当前所指的字符是否为一个运算符 6. OutFile函数:将一个pair数组输出到一个文件中 7. IsKey 函数:此函数判断传递的参数是否为关键字。 2.程序源代码 #include iostream #include vector #include string #include fstream using namespace std; string file_name; string GetText(); string GetWord(string str,int i,int j); int DeleteNull(string str,int i); bool IsBoundary(string str,int i); bool IsOperation(string str,int i); void OutFile(vectorpairint,string v); vectorpairint,string analyst(vectorstring vec); bool IsKey(string str); int main() { string com1= ; string com2=\n; string fileline=GetText(); int begin=0,end=0; vectorstring array; do { begin=DeleteNull(fileline,begin); string nowString; nowString=GetWord(fileline,begin,end); if(end==-1) break; if(nowSpare(com1)nowSpare(com2)) array.push_back(nowString); begin=end+1; }while(true); vectorpairint,string mid_result; mid_result=analyst(array); OutFile(mid_result); cout*********************************************************************\n; cout***程序已完成词法分析,分析结果已经存储在文件file_name中!!!***\n; cout*********************************************************************\n; system(pause); return 0; } /*提取文本文件中的信息*/ string GetText() { string file_name1; cout请输入源文件名(包括路径和后缀名):; cinfile_name1; ifstream infile(file_name1.c_str(),ios::in); if (!infile) { cerr无法打开文件! file_name1

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档