- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验一词法分析
《编译原理》(2014-2015学年第1学期)实验报告学号:2012329620058姓名:胡冰倩班级:12计科3班实验一:词法分析程序一、实验目的1、构造一个《科学计算器》的词法分析程序,程序要求能对输入的字符串流进行词法分析。2、在实验的过程中,学会应用词法分析的方法——构造NFA和DFA。二、实验内容和要求1、科学计算器的功能作为一个科学计算器,最重要的自然是能够计算,以下是罗列的一些可以实现的功能:1)基本四则运算2)三角函数计算3)指幂运算4)表达式求值5) log运算6)提供一些基本常数,如PI、e等7)进制转换8)变量存储2、要实现该科学计算器,本次实验首先需要完成词法分析,下面列举4个输入的表达式,:1.0+2*3= 1.0+(2*3+cos3)/3.6-6= tg(1.0+(sin2*3+cos3)/3.6-6)= 4.0log(1.0+(sin2*3+cos3)/3.6-6)=期望程序能根据实现的DFA对任给的一个输入串进行词法分析,程序的输出为单词的token序列$(CLASS, VALUE) 。CLASS中存放类别,VALUE中存放token的值,如第一个算式,其输出为:$(CLASS, VALUE)$( number, 1.0)$( plus, + )$(number, 2)$(mul, * )$(number, 3)关于TOKEN的分类(CLASS),可将所有标识符归为一类;将常数归为另一类;保留字和分隔符则可采取一词一类。对于变量标识符和常数,CLASS字段为相应的类别码,VALUE字段则是该标识符、常数在其符号表中登记项的序号。3、程序应通过DFA来完成词法分析。可参考的DFA如下图:图中每一个箭头表明一个字符的输入,由于这个输入,自动机从一个状态变为另一个状态。同学们可以根据自己的理解自行设计DFA。该DFA需能够识别本实验中要实现的科学计算器的所有TOKEN。采用有限自动机(DFA)进行分析,对于特定符号如+、-、*、/、%、(、)、!、^、=,为每一个符号提供一个状态、而其他的一些由字母组成的符号,如ans、pi、sto、clr等,则作为是一个词,之后再对词进行分类处理。(提示:可以参考教材中lex部分的章节,DFA的实现同学们可以使用lex实现(自行搜索下载),也可以自已编码实现。)三、分析过程及源代码1.token的分类将一些由字母组成的函数及常数,如:PI、e、sin、cos、tan、log等归为一类,+、-、*、/、%、(、)、=、^等采用一次一类、把数字归为一类。类别CLASStokenwordPI、e、sin、cos、tg、lognumner0及所有正数plus+minus-mul*div/mod%pow^equ=2.有限状态机状态图3.词法分析器的数据结构与算法123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#includecstdio#includestring#includeiostreamusingnamespace std;char prog[80],token[8];char ch;string CLASS;int p,m=0,n;char*word[6]={PI,e,log,sin,cos,tg};void scaner(){for(n=0;n8;n++) token[n]=NULL;//把token数组初始化 ch=prog[p++];while(ch== ){ ch=prog[p]; p++;}if((ch=ach=z)||(ch=Ach=Z))//如果是字母,则这个token是词{ m=0;while((ch=ach=z)||(ch=Ach=Z)){ token[m++]=ch; ch=prog[p++];} p--; CLASS=word;}elseif((ch=0ch=9))//数字{{ m=0;while((ch=0ch=9)||(ch==.)){ token[m++]=ch; ch=prog[p++];}}//把数字由字符类型转化为整数类型 CLASS=number; p--;}elseswitch(ch)//其他字符{case*:CLASS=mul;token[0]=
您可能关注的文档
- 贝叶斯信用评估模型.docx
- 贝叶斯网络参数的在线学习算法及应用.doc
- 背包问题九讲和源程序(答案).doc
- 被历史谈忘的民族英雄胡宗宪.doc
- 贲门失驰缓症诊治新进展.docx
- 苯溴马隆的药物经济学评价-.doc
- 鼻腔恶性黑色素瘤-a.doc
- 鼻饲病人的饮食护理.doc
- 鼻咽癌护理查房.doc
- 闭合电路欧姆定律6.doc
- 中国国家标准 GB/T 12357.1-2024通信用多模光纤 第1部分:A1类多模光纤特性.pdf
- 中国国家标准 GB/T 18851.2-2024无损检测 渗透检测 第2部分:渗透材料的检验.pdf
- 《GB/T 18851.2-2024无损检测 渗透检测 第2部分:渗透材料的检验》.pdf
- GB/T 18851.2-2024无损检测 渗透检测 第2部分:渗透材料的检验.pdf
- GB/T 44927-2024知识管理体系 要求.pdf
- 中国国家标准 GB/T 44927-2024知识管理体系 要求.pdf
- 《GB/T 44927-2024知识管理体系 要求》.pdf
- GB/T 44937.4-2024集成电路 电磁发射测量 第4部分:传导发射测量1 Ω/150 Ω直接耦合法.pdf
- 《GB/T 44937.4-2024集成电路 电磁发射测量 第4部分:传导发射测量1 Ω/150 Ω直接耦合法》.pdf
- 中国国家标准 GB/T 44937.4-2024集成电路 电磁发射测量 第4部分:传导发射测量1 Ω/150 Ω直接耦合法.pdf
最近下载
- 2023年项目融资经理年终总结及年后展望.pptx VIP
- (完整word版)环评报告表资料清单--一般项目.doc
- 保安服务售后服务委托协议2024年.docx VIP
- 2023年投融资业务经理年终总结及下一年计划.pptx VIP
- 企业支付委托书.docx VIP
- 耀华XK3190-DS10技术说明书(1.00版).pdf
- 四方伟业数据治理软件V3.0.5操作手册.pdf
- T GDEIIA 56—2024 垂直起降低空航空器起降场基础设施配置技术要求.pdf VIP
- 老师教学课件-第二组 理念论、实在论与教育.pptx
- 2025湖北随州市公安局招聘警务辅助人员48名笔试模拟试题及答案解析.docx VIP
文档评论(0)