下载此文档

编译原理实验指导.doc


文档分类:高等教育 | 页数:约24页 举报非法文档有奖
1/24
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/24 下载此文档
文档列表 文档介绍
该【编译原理实验指导 】是由【小果冻】上传分享,文档一共【24】页,该文档可以免费在线阅读,需要了解更多关于【编译原理实验指导 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。编译原理实验指导书23编译原理实验指导书主编:徐静李娜信息与电气工程学院2024年3月编译原理实验指导书1概述一、本课程实验的目的和任务编译原理是一门实践性很强的课程,只有通过实践,才能真正掌握。实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化编译过程的方法,选择最关键的3个环节──词法分析、语法分析〔包括语义处理、产生无优化的目标指令〕、连接调试,进行编程和调试训练。每个环节作为一个实践课题。先分别编程调试,再连接在一起总调。二、实验方法任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。故本实验将定义一个简化的语言──C语言的一个子集作为源语言,设计调试出它的编译程序。前后贯穿这一条主线进行实践。每次都可利用课余时间编程,利用上机时间进行输入和调试。三、实验报告的标准和要求每个实验完成后写出实验报告。实验报告的内容包括如下内容:实验目的程序设计时采用的算法和方法输入的源程序词法分析程序清单和输出结果。心得体会编译原理实验指导书2实验一词法分析一、实验目的:〔1〕通过设计编制调试一个具体的词法分析程序,理解词法分析在编译程序中的作用。〔2〕加深对有穷自动机模型的理解。〔3〕掌握词法分析程序的实现方法和技术。〔4〕用C语言对一个简单语言的子集编制一个一遍扫描的程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即根本保存字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。〔遇到错误时可显示“Error〞,然后跳过错误局部继续显示〕。二、,输出单词符号。词法分析器的单词符号常常表示成以下的二元式〔单词种别码,单词符号的属性值〕。本实验中,采用的是一类符号一种别码的方式。<标识符>→<字母><字母数字串><字母数字串>→<字母><字母数字串>|<数字><字母数字串>|<下划线><字母数字串>|ε<无符号整数>→<数字><数字串><数字串>→<数字><数字串>|ε<加法运算符>→+<减法运算符>→-<大于关系运算符>→><大于等于关系运算符>→>=3.“超前搜索〞方法编译原理实验指导书3词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“a>+〞,当前字符为“>〞,此时,分析器到底是将其分析为大于关系运算符还是大于等于关系运算符呢?显然,只有知道下一个字符是什么才能下结论。于是分析器读入下一个字符“+〞,这时可知应将“>〞解释为大于运算符。但此时,超前读了一个字符“+〞,所以要回退一个字符,词法分析器才能正常运行。在分析标识符,无符号整数等时也有类似情况。〔〕输入文件名判断能否翻开文件缓冲区扫描一个字符三、实验过程和指导:〔一〕准备:,明确语言的语法,写出根本保存字、标识符、常数、运算符、分隔符和程序例。。。〔二〕上课上机:编译原理实验指导书4将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。〔三〕程序要求:程序输入/输出例如:如源程序为C语言。输入如下一段:main()????????????????????????????????????????????????????????????????????????{inta,b;a=10; b=a+20;}要求输出如以下列图。〔2,〞main〞〕〔5,〞〔“〕〔5,〞〕“〕〔5,〞{“〕〔1,〞int〞〕〔2,〞a〞〕〔5,〞,〞〕〔2,〞b〞〕〔5,〞;〞〕〔2,〞a〞〕〔4,〞=〞〕〔3,〞10”〕〔5,〞;〞〕〔2,〞b〞〕〔4,〞=〞〕〔2,〞a〞〕〔4,〞+〞〕〔3,〞20”〕〔5,〞;〞〕〔5,〞}“〕要求:识别保存字:if、int、for、while、do、return、break、continue;单词种别码为1。其他的都识别为标识符;单词种别码为2。常数为无符号整型数;单词种别码为3。运算符包括:+、-、*、/、=、、<、=、<=、!=;单词种别码为4。分隔符包括:,、;、{、}、(、);单词种别码为5。以上为参考,具体可自行增删。〔四〕程序思路〔仅供参考〕:编译原理实验指导书5这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词〞定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查填适当的信息表。经过词法分析后,源程序字符串〔源程序的外部表示〕被翻译成具有等长信息的单词串〔源程序的内部表示〕,并产生两个表格:常数表和标识符表,它们分别包含了源程序中的所有常数和所有标识符。:定义常量、变量、数据结构。:从文件将源程序全部输入到字符缓冲区中。:去掉多余空白。:去掉多余空白。:读出单词的每一个字符,组成单词,分析类型。〔关键是如何判断取单词结束?取到的单词是什么类型的单词?〕。〔五〕练****该实验的目的和思路:程序开始变得复杂起来,可能是大家目前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。因此要认真把握这个过渡期的练****本实验和以后的实验相关。通过练****掌握对字符进行灵巧处理的方法。〔六〕为了能设计好程序,注意以下事情::将程序分成合理的多个模块〔函数〕,每个模块做具体的同一事情。〔画出〕设计方案:模块关系简图、流程图、全局变量、函数接口等。:空行的使用、注释的使用、缩进的使用等。编译原理实验指导书6〔七〕程序框架:#include<>#include<>charprogram[80],token[8];/*数组program存放的为源程序所有字符,数组token为存放的单词自身字符串*/charch;intsyn,p,m,n,row;/*syn为单词种别码*/longintnum;/*sum为整型常数*/char*key[8]={"if","int","for","while","do","return","break","continue"};/*保存字*/voidmain(){?p=0;?row=1;?printf("\npleaseinputstring:\n");?do/*从文件将源程序全部输入到字符缓冲区中*/?{?ch=getchar();?program[p++]=ch;?}?while(ch!='#');?p=0;?do?{?scaner();?switch(syn)?{编译原理实验指导书7??case3:printf("\n(%d,%d)",syn,num);break;??case-1:printf("\nFOUNDERRORINROW%d",row);break;??case-2:row=row++;break;??default:printf("\n(%d,%s)",syn,token);break;?}?}?while(syn!=0);?getch();}?scaner(){?for(n=0;n<8;n++)token[n]=NULL;?m=0;?ch=program[p++];?while(ch=='')?{??ch=program[p++];?}/*〔包括保存字〕。建议:关键字作为特殊标识符处理,把它们预先安排在一张表格中〔保存字表〕,当扫描程序识别标识符时,查关键字,否那么为一般标识符。注意:识别保存字:if、int、for、while、do、return、break、continue;单词种别码为1。其他的都识别为标识符;单词种别码为2。。注意:常数的有效范围,如果产生溢出那么设置syn的值,与主函数的代码照应。case3:printf("\n(%d,%d)",syn,num);break;case-1:printf("\nFOUNDERRORINROW%d",row);break;常数为无符号整型数;单词种别码为3。。注意:区分两个运算符<和<=。〔switch语句〕运算符包括:+、-、*、/、=、、<、=、<=、!=单词种别码为4。。分隔符包括:,、;、{、}、(、)单词种别码为5。〔switch语句〕*/}编译原理实验指导书9实验二递归下降分析法一、实验目的:?根据某一文法编制调试递归下降分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对递归下降分析法的理解。二、。:消除二义性、消除左递归、提取左因子,判断是否为LL〔1〕文法。,不妨命名为U。U的产生式的右边指出这个过程的代码结构:(1)假设是终结符号,那么和向前看符号对照,假设匹配那么向前进一个符号;否那么出错。(2)假设是非终结符号,那么调用与此非终结符对应的过程。当A的右部有多个产生式时,可用选择结构实现。具体为:①对于每个非终结符号U→u1|u2|…|un处理的方法如下:U(){ch=当前符号;if(ch可能是u1字的开头)处理u1的程序局部;elseif(ch可能是u2字的开头)处理u2的程序局部;…elseerror();}②对于每个右部u→x1x2…xn的处理架构如下:处理x1的程序;处理x2的程序;

编译原理实验指导 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数24
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小果冻
  • 文件大小145 KB
  • 时间2024-04-22