编译原理报告(二)_第1页
编译原理报告(二)_第2页
编译原理报告(二)_第3页
编译原理报告(二)_第4页
编译原理报告(二)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、课程实验概述 1实验一 词法分析器程序的实现 21.1 问题描述 21.1.1 实验内容 21.1.2 实验原理 21.2 程序设计 31.2.1 实验要求 31.2.2 实验流程图 51.3 实验结果 6实验二语法分析程序实现 72.1 实验目的与要求 72.2 实验内容 72.3 实验要求 72.4 程序设计 82.4.1 算法任务 82.4.2 全局变量的设置 82.4.3 主程序 main 算法流程图 82.4.4 扫描子程序scanner()的算法流程图 92.4.5 rparser ()的算法流程图 102.4.6 语句串分析程序yucu ()的算法流程图 102.4.7 stat

2、ement语句分析算法流程图 112.5 实验结果 12实验总结 14弹中科技大掌课程实验报告课程名称:编译原理计算机科学与技术学院课程实验概述词法分析是编译的第一阶段。词法分析器的主要任务是读入源程序的输入字 符、将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词 素。这个词法单元序列被输出到语法分析器进行语法分析。词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词 是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量 等(1)关键字是由程序语言定义的具有固定意义的标识符。例如,Pascal中 的begin , end, if , while

3、都是保留字。这些字通常不用作一般标识符。(2)标识符 用来表示各种名字,如变量名,数组名,过程名等等。(3)常数 常数的类型一般有整型、实型、布尔型、文字型等。(4)运算符如+、-、*、/等等。(5)界符 如逗号、分号、括号、等等。词法分析器所输出单词符号常常表示成如下的二元式:(单词种别,单词符号的属性值)单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、 实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。 界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还 应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。11.

4、2程序设计实验一 词法分析器程序的实现1.1 问题描述1.1.1 实验内容1.完成词法分析器实现的功能如下:(1)组织源程序的输入(2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件(3)删除注释、空格和无用符号(4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误 信息输出到屏幕上。(5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储) 当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否 则返回0并且填写符号表或常量表。标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址 注:词法分析阶段只填写变量名,其它部分在语法

5、分析、语义分析、代码生成等 阶段逐步填入。常量表结构:常量名,常量值2.能对任何S语言源程序进行分析在运行词法分析程序时,应该用问答形式输入要被分析的S源语言程序的文件名,然后对该程序完成词法分析任务。1.1.2实验原理词法分析程序的算法思想:算法的基本任务是从字符串表示的源程序中识别 出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的 种类,拼出相应的单词符号。31.2.1实验要求(1)单词的分类:构造上述语言中的各类单词符号及其分类码表。表I语言中的各类单词符号及其分类码表单词符号类别编码类别码的助记符单词值begin1BEGINend2ENDif3IFthen4THE

6、Nelse5ELSE标识符6ID字母打头的字母数字串整常数7INT数字串<8LT二9LE=10EQ<>11NE>12GT>=13GE:=14IS+15PL-16MI*17MU/18DI(2)实验的状态转换图如图2-1 :图2-1 :实验状态转换图1.2.2实验流程图(3)系统流程图如下图2-3所示:开始输入需要扫 描的文件名输入存放 结果文件I返回,退出文件是 否为空跳转扫描 其他符号预读一位ch行数加1 1 Ych是否为空格L *跳转扫 描引号是否跳转扫 描注释ch是否为'/' Vch是否为字Y母或下划线N、跳转扫是否为YN跳转扫面文 件单词及保

7、 留字5图2-2:系统流程图1.3实验结果#测试结果如图2-3所示图2-3实验结果与书中的单词表一致,结果正确。实验二语法分析程序实现2.1 实验目的与要求通过设计、编制、调试一个典型的语法分析程序(任选有代表性的语法分析 方法,如算符优先法、递归下降法、LL(1)、SLR(1)、LR等,作为编制语法分 析程序的依据),对扫描器所提供的单词序列进行语法检查和结构分析,实现并进一步掌握常用的语法分析方法。2.2 实验内容选择对各种常见高级程序设计语言都较为通用的语法结构作为分析对象, 给 出其文法描述(注意应与所采用的语法分析方法比较贴近),设计并实现一个完 整的语法分析程序。输入:源程序以文件

8、的形式输入。输出:对于所输入的源程序,如果输入符号用是给定文法定义的合法句子, 则输出“RIGHT ,并且给出每一步归约的过程;如果不是句子,即输入用有错 误,则输出“ ERROR,并且显示已经归约出的各个文法符号。2.3 实验要求以如下文法G1所定义的算术表达式的赋值语句作为分析对象,编写并调试 一个语法分析程序。G1赋值语句:赋值语句 f 变量:= 算术表达式算术表达式 f 项 | 算术表达式+领 | 算术表达式 -项项 因式| 项*因式 | 项/因式因式 f 变量 | 常数 | (算术表达式)变量 - 标识符标识符 f 标识符 字母 | 标识符 数字 | 字母常数 - 整数 | 浮点数整

9、数 f 数字 | 数字 整数浮点数 f? 整数 | 整数 ? 整数字母 A|B|C| |X|Y|Z|a|b|c|x|y|z数字 -0|1|2| g92.4.1 算法任务算法的基本任务是从字符串中表示的源程序中识别出具有独立意义的单词符 号,并通过其基本文法,正确规约到开始符号。2.4.2 全局变量的设置在此程序中,需要设置两个个全局变量:关键字表retab6、当前识别的 种别号syn其中retab中元素为 begin” if" then” While” do" end”,在程序会扫描 出标识符时,首先查关键字表。如果能找到匹配的单词,则该单词为关键字,否 则为一般标识符。s

10、yn用于每一步扫描中scanner的返回值。在整个语法分析程序中均需要 使用该全局变量。2.4.3 主程序main算法流程图Y2.4.4 扫描子程序scanner ()的算法流程图ch =当前第一个字符2.4.5parser ()的算法流程图112.4.6语句串分析程序yucu ()的算法流程图调用2.4.7 statement语句分析算法流程图scanner。expression。出错处理2.5实验结果输入正确,得到图:p lease in pul: a st;rlnsr end wltli '#' besrin =9s x = =2*3 ; b: =a+x «nd # sucGesst输入错误,得到图:pLea.se input a sti'ing end vitJi 耗=5*11* end #error实验结果正确。#13实验总结通过编译原理的两次上机实验,我收获颇多。上机实验前为了更好地完成实验,我复习了下词法语法这部分的知识。这加深了我对词法语法这部分的理解。这两

温馨提示

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

评论

0/150

提交评论