ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:134.63KB ,
资源ID:11404431      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11404431.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《编译原理》实验指导书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《编译原理》实验指导书.docx

1、编译原理实验指导书编译原理实验指导书课程编码:141402 课程类别:学科专业课适用专业:计算机科学与技术专业 主要教学内容:词法分析与语法分析课程总学时:64 实验学时:8 【实验目标要求】编译原理课程是计算机专业的核心课程,是培养计算机技术高级人才的必修课程。该课程通过程序设计语言和语言处理软件的理论与技术的教学,培养学生利用计算机语言处理技术进行系统分析和软件设计的能力。是理论与实践并重的课程,这门实验课要综合运用一、二、三年级所学的多门课程的内容。实验目标与要求;1 学会用高级程序设计语言设计词法分析器。2 学会用高级程序设计语言设计语法分析器。【实验学习要求】认真阅读编译原理教材中的

2、与实验相关的章节内容,做到在每个实验前明确实验目的、掌握实验的内容,提前完成数据结构定义和算法设计;在实验中正确使用实验设备,认真设计与调试程序并分析实验结果;实验后要根据要求做好总结,上交实验报告。【实验环境】Windows操作系统,编程语言是C、C+集成调试环境采用TC或Microsoft Visual Studio 6。【实验计划】序号实验项目名称实 验 内 容学时要求性质类别所用主要仪器及台套数所在实验室1用C或者 C+ 语言设计一个词法分析器1.确定编译中使用的表格、词法分析器的输出形式、标识符与关键字的区分方法。2.把词法分析器设计成一个独立的过程。4必做设计综合型微机,每人一台。

3、计算机学院实验中心2用C或者 C+语言设计一个语法分析器。1.词法分析和语法分析在一起实现。2. 把语法分析器设计成一个独的过程。4必做设计综合型微机,每人一台。计算机学院实验中心【考核办法】在机器上交作业,由实习教师给出优、良、中、及格、不及格。【实验教材及主要参考资料】教材: 编译原理,蒋立源等编著,西北工业大学出版社。参考资料: 编译原理实验由清华大学编写。实验一、词法分析器的设计1实验目的:1. 掌握词法分析的原理;2. 熟悉符号表的建立与单词的分类方法;3. 掌握词法分析器的设计与调试;2实验内容:1. 分析如表1所定义的PASCAL语言子集的语法,找出所有单词的组成及类别;2. 完

4、成单词的分类及其编码;3. 完成保留字表、变量名表和常数表的结构设计;4. 建立识别单词符号集合的DFA;5. 由DFA设计词法分析程序;6. 调试并运行词法分析程序;表1.PASCAL语言子集的语法定义程序变量说明BEGIN语句表END.变量说明VAR变量表:类型;|空变量表变量表,变量|变量类型INTEGER语句表语句表;语句|语句语句赋值语句|条件语句|WHILE语句|复合语句|过程定义赋值语句变量=算术表达式条件语句IF关系表达式THEN语句ELSE语句WHILE语句WHILE关系表达式DO语句复合语句BEGIN语句表END过程定义PROCEDURE标识符参数表;BEGIN语句表END

5、参数表(标识符表)|空标识符表标识符表,标识符|标识符算术表达式算术表达式+项|项项项*初等量|初等量初等量(算术表达式)|变量|无符号数关系表达式算术表达式关系符算术表达式变量标识符标识符标识符字母|标识符数学|字母无符号数无符号数数字|数字关系符=|=|=|字母A|B|C|X|Y|Z数字0|1|2|8|9空提示: (1) 单词的分类。 可将所有标识符归为一类;将常数归为另一类;保留字和分隔符则可采取一词一类。 (2) 符号表的建立。 可事先建立一保留字表,以备在识别保留字时进行查询。变量名表及常数表则在词法分析过程中建立。 (3) 单词串的输出形式。 所输出的每一单词,均按形如 (CLAS

6、S,VALUE)的二元式编码。对于变量标识符和常数,CLASS字段为相应的类别码,VALUE字段则是该标识符、常数在其符号表中登记项的序号 (要求在变量名表登记项中存放该标识符的字符串,其最大长度为四个字符;常数表登记项中则存放该整数的二进制形式)。对于保留字和分隔号,由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。不过,为便于查看由词法分析程序所输出的单词串,也可以在CLASS字段上直接放置单词符号串本身。 3测试用输入测试用输入程序为。 Procedure program1(a, b);BeginVar xyz=50;Whil

7、e ab do beginIf xyz=0 then xyz=50; xyz:=xyz-a; a:=a-1; endEnd4实验扩充:构造语言的词法分析程序,要求识别出变量类型并记录相关信息。5实验说明:实验环境:WINDOWS下,工具为Turbo C2.0或Visual C 6.0。6实验考核方式:1提交实验报告2演示程序和答辩(抽查)7实验辅导(1)词法分析程序的功能词法分析程序又称为扫描器,其功能在于依次扫视字符串形式源程序中的各个字符,逐个识别出其中的单词,并将其转换为内部编码形式的单词符号串作确为输出。通常,可采用二元式(class,value)来表示一个单词符号的内部编码,其中:c

8、lass为一整数码,用于表示该单词的类别;value则是该单词之值(如变量名在符号表中序号,常数的二进制表示,以及运算符和分隔符的编码等等)。概括地说,扫描器在其工作过程中,一般应完成下列的任务:(1)识别出源程序中的各个单词符号,并将其转换为内部编码形式;(2)删除无用的空白字符、回车字符以及其它非实质性字符;(3)删除注释;(4)进行词法检查,报告所发现的错误。此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标识符登录到符号表的工作。 (2)实例分析对于表2所列的各类单词符号,词法分析程序可按图1所示的状态转换图来构造。表2 一个语言的单词符号及分类码表图1识

9、别表2所列语言单词的DFA及相关的语义过程相关变量和子程序说明如下: 函数GETCHAR每调用一次,就把扫描指示器当前所指示的源程序字符送入字符变量ch,然后把扫描指示器前推一个字符位置。 字符数组TOKEN用来依次存放一个单词词文中的各个字符。 函数CAT每调用一次,就把当前ch中的字符拼接于TOKEN中所存字符串的右边。 函数LOOKUP每调用一次,就以TOKEN中的字符串查保留字表,若查到,就将相应关键字的类别码赋给整型变量c;否则将c置为零。 函数RETRACT每调用一次,就把扫描指示器回退一个字符位置 (即退回多读的那个字符)。 函数OUT一般仅在进入终态时调用此函数,调用的形式为O

10、UT (c,VAL)。其中,实参c为相应单词的类别码或其助记符;当所识别的单词为标识符和整数时,实参VAL为TOKEN (即词文分别为字母数字串和数字串),对于其余种类的单词,VAL均为空串。函数OUT的功能是,在送出一个单词的内部表示之后,返回到调用该词法分析程序的那个程序。实验二、语法分析器的设计1实验目的:1. 掌握利用预测分析法进行语法分析的原理;2. 熟悉文法的机内表示;3. 掌握语法分析器的设计与调试;2实验内容:1. 分析如下表3所定义PASCAL语言子集的语法,改写文法使其成为LL(1)文法;2. 构造文法的预测分析表;3. 设计堆栈和预测分析表的机内表示;4. 设计并书写语法

11、分析程序;5. 调试并运行语法分析程序;表3.PASCAL语言子集的语法定义程序PROGRAM标识符;分程序分程序变量说明BEGIN语句表END 变量说明VAR变量说明表;变量说明表变量表:类型|变量表:类型;变量说明表类型INTEGER|REAL变量表变量|变量,变量表语句表语句|语句;语句表语句赋值语句|条件语句|WHILE语句|复合语句赋值语句变量=算术表达式条件语句IF关系表达式THEN语句ELSE语句WHILE语句WHILE关系表达式DO语句复合语句BEGIN语句表END算术表达式项|算术表达式+项|算术表达式-项项因式|项*因式|项/因式因式变量|常数|(算术表达式)关系表达式算术

12、表达式关系符算术表达式变量标识符标识符标识符字母|标识符数字|字母常数整数|浮点数整数数字|数字整数浮点数整数|整数整数关系符|=|=|=|字母A|B|C|X|Y|Z数字0|1|2|9提示: 对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。 3实验说明:实验环境:WINDOWS下,工具为Turbo C2.0或Visual C 6.0。4实验考核方式:(1)提交实验报告(2)演示程序和答辩(抽查)5实验辅导(1)文法的机内表示形式 举例说明文法的的机内表示。对于如下文法,其计算机内部的表示可采用如图2所示的数据结构。椭圆表示指针变量,矩形表示结构体类型变量。E

13、-EAT|TT-TMF|FF-(E)|IA-+|-M-*|/图2. 文法的机内表示形式(2)预测分析器的工作流程分析器对每个输入串的分析在控制程序的控制下进行,其大致步骤如下:第一步初始化。分析开始时,首先将栈底符号#及文法的开始符号S推入分析栈,并对各指示器置初值。然后反复执行第二步所列的操作。 第二步设在分析的某一时刻,可视分析栈顶的文法符号Xm的不同情况,分别作如下的处理: 若XmVT#,且Xm=ai,则表明栈顶符号已与当前正扫视的输入符号 (请注意,包括句尾标志符号#在内)相匹配,此时应将Xm从栈中退出,并将输入串指示器向前推进一个位置,否则 (即Xmai)进行语法错误处理; 若XmVN,则以符号对(Xm,ai)查分析表,设表元素AXm,ai为产生式XmY1 Y2 Yk,则将Xm从栈中退出,并将Y1 Y2 Yk按反序推入栈中 (即用该产生式推导一步)。但若AXm,ai为“出错”,则进行语法错误处理; 若Xm=ai=# (即分析栈将被拆空),则表明输入串已完全得到匹配,此时可宣告分析成功而结束工作。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1