编译原理实验指导书03版_第1页
编译原理实验指导书03版_第2页
编译原理实验指导书03版_第3页
编译原理实验指导书03版_第4页
编译原理实验指导书03版_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2页共7页《编译原理》实验指导书课程编号:24003416课程名称:编译原理/CompilerPrinciples实验总学时数:8适用专业:计算机科学与技术承担实验室:计算机系实验室一、实验教学的目的与要求上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实习题中的问题比平时的练习题要复杂,也更接近实际。编译原理这门课程安排的上机实验都属于一种设计类型的实验,每个实验的训练重点在于基本的编译技术和方法,而不强调面面俱到;实验的目的是旨在使学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容;培养学生编制算法的能力和编程解决实际问题的动手能力。要求学生在上机前应认真做好各种准备工作,熟悉机器的操作系统和语言的集成环境,独立完成算法编制和程序代码的编写;上机时应随带有关的编译原理教材或参考书;要学会程序调试与纠错。实验后要交实验报告,实验报告的内容应包括:实验题目、班级、学号、姓名、完成日期;简要的需求分析与概要设计;详细的算法描述;源程序清单;给出软件的测试方法和测试结果;实验的评价、收获与体会。开发工具:DOS环境下使用TurboC;Windows环境下使用VisualC++。

二、实验项目名称与学时分配序号实验项目名称学时数必/选开01词法分析器的设计8选开02语法分析器的设计8选开说明:以上两实验01、02中必须选一个。三、单项实验的内容和要求要求每个实验保证每个学生一台微机。词法分析器设计(一)目的与要求1.目的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。2.要求(1)选择常用高级程序设计语言(如Pascal、C语言、PL/0语言)的源程序作为词法分析对象。(2)根据教学要求和学生具体情况,从上列语言之一中选取它的一个适当大小的子集,可以选取一类典型单词,也可以尽可能使各种类型的单词都能兼顾到。其基本要求是:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其转换成属性字输出。(3)实习时间为8学时。(二)实验内容:完成对某一种常用高级语言(如Pascal、C语言、PL/0语言)的各类单词进行词法分析。PL/0语言文法的EBNF描述:〈程序〉∷=〈分程序〉。〈分程序〉∷=[〈常量说明部分〉][〈变量说明部分〉][〈过程说明部分〉]〈语句〉〈常量说明部分〉∷=CONST〈常量定义〉{。〈常量定义〉};〈常量定义〉∷=〈标志符〉=〈无符号整数〉〈无符号整数〉∷=〈数字〉{〈数字〉}〈变量说明部分〉∷=VAR〈标志符〉{,〈标志符〉};〈标志符〉∷=〈字母〉{〈字母〉|〈数字〉}〈过程说明部分〉∷=〈过程首部〉〈分程序〉{;〈过程说明部分〉};〈过程首部〉∷=PROCEDURE〈标志符〉;〈语句〉∷=〈赋值语句〉|〈条件语句〉|〈当型循环语句〉|〈过程调用语句〉|〈读语句〉|〈写语句〉|〈复合语句〉|〈空〉〈赋值语句〉∷=〈标志符〉:=〈表达式〉〈复合语句〉∷=BEGIN〈语句〉{;〈语句〉}END〈条件〉∷=〈表达式〉〈关系运算符〉〈表达式〉|ODD〈表达式〉〈表达式〉∷=[+|-]〈项〉{〈加法运算符〉〈项〉}〈项〉∷=〈因子〉{〈乘法运算符〉〈因子〉}〈因子〉∷=〈标志符〉|〈无符号整数〉|‘(’〈表达式〉‘)’〈加法运算符〉∷=+|-〈乘法运算符〉∷=*|/〈关系运算符〉∷==|#|<|>|<=|>=〈条件语句〉∷=IF〈条件〉THEN〈语句〉〈过程调用语句〉∷=CALL〈标志符〉〈当型循环语句〉∷=WHILE〈条件〉DO〈语句〉〈读语句〉∷=READ‘(’〈标志符〉{,〈标志符〉}‘)’〈写语句〉∷=WRITE‘(’〈表达式〉{,〈表达式〉}‘)’〈字母〉∷=a|b|…..|X|Y|Z〈数字〉∷=0|1|2|…..|8|9(三)提示把常用高级程序设计语言中的单词分为下几类:关键字、标识符、运算符、无符号数(常数)、界限符,其中关键字、运算符、界限符三类单词对于任何一种高级语言来说其数量和意义均是固定的,所以此三类单词可以事先构造好相应的表进行管理;而对于标识符、无符号数两类单词则需要边识别边建表填表。设计者要为给定语言的每类单词定义其单词属性字的结构。词法分析程序的输入为给定语言的任意用户源程序(在用ASCII码保存的文件中),输出为设计者定义的单词属性字序列(也是用ASCII码保存的文件)。

(四)示例 下面给出词法分析总控程序和无符号数词法分析子程序的流程图:结束符结束符“#”界限符开始到输入流中读下一字符CharChar是什么?初始化标识符和关键字词法分析子程序字母数字运算符无符号数词法分析子程序运算符词法分析子程序界限符词法分析子程序结束图1词法分析总控程序

开始开始0N,P,j;1e数字d;N*10+dN是数字?Y读字符charNYN整型量标记C1是’-’吗?读字符char是’e’吗?是’-’吗?-1e读字符charYNYN读字符char是数字?Y数字d;N*10+dN;j+1j是数字?Y读字符charERRORNN实型量标记C1是数字?Y数字d;P*10+dPY读字符charERRORNN实型量标记C1N*10e*P-jt结束YN整数部分小数部分是’.’吗?是数字?指数部分N图2无符号数词法分析流程图

语法分析器的设计(一)目的与要求1.目的通过设计、编制、调试一个典型的语法成分的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析工作,进一步掌握常用的语法分析方法。2.要求选择最有代表性的语法分析方法,如算符优先法(或简单优先法)、递归下降分析法、LL分析法和LR分析法之一进行语法分析。选择对各种常见程序语言都通用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。实习时间为8小时。(二)实验内容对于常用高级语言(如Pascal、C语言)的某些语法结构用所学过的语法分析方法分析其结构是否正确;或对于常用高级语言(如Pascal、C语言)的某些语法结构(如赋值语句)用所学过的语法分析方法和语义分析方法进行语法分析、语义分析,并把其翻译成为中间代码形式。(三)提示对词法分析程序所提供的单词序列程序从左到右进行扫描,把其中赋值语句用所学过的语法分析方法(递归下降分析法、算符优先分析法(或简单优先法)、LL分析法和LR分析法)进行语法分析,采用语法制导翻译方法将其转换为中间代码(逆波兰式、四元式)形式输出。

四、课程特色《编译原理》课程是理论性较强的课程。其特点是概念多、内容抽象。尤其是文法、形式语言及自动机的概念是计算机专业的理论学习和研究的基础。编译原理与方法对于深刻理解程序设计语言、深入了解程序在计算机中的运行机制、掌握程序设计语言的翻译方法起到不可替代的作用。同时《编译原理》课程也是实践性很强的课程,要求学生在基本掌握了编译理论和技术的基础上,综合应用先修课程及本课程的知识,完成课程的实验和课程设计。五、教材及参考书教材:《编译原理》主编:吕映芝、张素琴、蒋维杜出版社:清华大学出版社出版时间:1998年1月参考书:[1]何炎祥.编译原理.华中理工大学出版社,2000,10[2]陈火旺,刘春林,谭庆平,赵克佳,刘越.程序设计语言编译原理(第3版).国防工业出版社,2001,8[2]AlfredV.Aho,RaviSethi,JeffreyD.Ullman.编译原理技术与工具(英文版).人民邮电出版社,2002,2[4]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论