城市学院编译原理试验参考指导书.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文档。上传文档
查看更多

《编译原理》试验指导书

适用试验课时:30

适用对象:计算机科学和技术专业

网络工程专业

软件工程专业

试验目标和内容

编译原理试验目标是使学生将编译理论利用到实际当中,实现一个简单语言集词法分析程序、语法分析程序和简单语义处理程序,验证实际编译系统实现方法,并加深对编译理论认识。

基础试验分为两个部分,试验一识别无符号数词法分析器设计实现、试验二无符号数算术四则运算LR语法分析器设计实现,总试验课时为30课时。本试验还包含扩展试验,供编程能力较强学生自愿进行。

要求每个学生独立完成三个基础试验设计和编程实现,并形成完整试验汇报。提议使用VC++编程工具。

试验一算术四则运算词法分析程序实现

一、试验目标和要求

经过编写和调试一个词法分析程序,掌握在对程序设计语言源程序进行扫描过程中,将字符形式源程序流转化为一个由各类单词符号组成流词法分析方法。

二、试验内容

选择无符号数算术四则运算中各类单词为识别对象,要求将其中各个单词识别出来。

输入:由无符号数和+,-,*,/,(,)组成算术表示式,如1.5E+2-100。

输出:对识别出每一单词均单行输出其(类别码,值)。

三、实现方法

1、设计识别各类单词状态转换图

描述无符号常数确实定、最小化状态转换图图1所表示。其中编号0,1,2,…,6代表非终止符号无符号数、余留无符号数、十进小数、小数部分、指数部分、整指数及余留整指数,1,2和6为终态,分别代表整数、小数和科学计数识别结束状态。

图1文法G[无符号数]状态转换图

其中编号0,1,2,…,6代表非终止符号无符号数、余留无符号数、十进小数、小数部分、指数部分、整指数及余留整指数,1,2和6为终态,分别代表整数、小数和科学计数识别结束状态。

在一个程序设计语言中,通常全部含有若干类单词符号,为此可首先为每类单词建立一张状态转换图,然后将这些状态转换图合并成一张统一状态图,即得到了一个有限自动机,再进行必需确实定化和状态数最小化处理,最终据此结构词法分析程序。

四则运算算术符号识别很简单,直接在状态图0状态分别引出对应标识矢线至一个新终态即可。依据自己习惯,也能够将其转换为状态矩阵形式。

2、词法分析程序编写

(1)结构单词二元式列表类,实现单词二元式(class,value)按序存取。

(2)结构词法分析器类,实现整数、小数、科学计数法数字加减乘除括号组成算数表示式输入串识别生成二元式序列。

3、词法分析程序测试

用于测试扫描器实例源文件中应有词法正确,也应有错误字符串,对于输入测试用例源程序文件,以对照形式将扫描器分析结果信息在输出文件中表示出来。

4、带有语义处理词法分析程序编写

参考以下表2和程序,对词法分析程序进行扩展,对识别无符号数进行计值,并将输出形式改为(类别码,值)二元式形式。

四、参考资料

实现无符号数识别参考方法:将设计状态转换图直接转化为一张程序步骤图,并在外层再增加一个以EOF为循环终止条件while循环,即形成能连续识别各类单词词法分析程序。

各类单词编码提议如表1。

表1单词内部编码

单词符号

类别码(CLASS)

单词值(VALUE)

无符号数

1

数字值

+

2

无值

3

无值

*

4

无值

/

5

无值

(

6

无值

)

7

无值

和无符号数状态转换图对应包含语义处理过程(据此可计算求得无符号数数字值)状态矩阵和参考程序以下所表示。

表2包含语义处理过程识别无符号数状态矩阵

依据加入语义过程说明状态转换图直接编写词法分析程序,部分实现代码以下:

1#includestdio.h

2#includectype.h

3#includemath.h

4#defineLETTER0

5#defineDIGIT1

6#definePOINT2

7#defineOTHER3

8#definePOWER4

9#definePLUS5

10#defineMINUS6

11#defineUCON7//Supposetheclassnumberofunsignedconstantis7

12#defineClassOther200

13#defineEndState-1

14intw,n,p,e,d;

15intClass;//Usedtoindicateclassoftheword

16intICON;

17floatFCON;

18staticintCurrentState;//Usedtopresentcurrentstate,theinitialvalue:0

19

2

文档评论(0)

知识改变命运 + 关注
实名认证
文档贡献者

爱好打球

1亿VIP精品文档

相关文档