当前位置:文档之家› 编译原理实验报告参考模板

编译原理实验报告参考模板

编译原理实验报告参考模板
编译原理实验报告参考模板

编译原理实验报告实验一编写词法分析程序

编译原理实验报告实验名称:实验一编写词法分析程序 实验类型:验证型实验 指导教师:何中胜 专业班级:13软件四 姓名:丁越 学号: 电子邮箱: 实验地点:秋白楼B720 实验成绩: 日期:2016年3 月18 日

一、实验目的 通过设计、调试词法分析程序,实现从源程序中分出各种单词的方法;熟悉词法分析 程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动机的技术及有穷自动机实现的方法。确定词法分析器的输出形式及标识符与关键字的区分方法。加深对课堂教学的理解;提高词法分析方法的实践能力。通过本实验,应达到以下目标: 1、掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的方法。 2、掌握词法分析的实现方法。 3、上机调试编出的词法分析程序。 二、实验过程 以编写PASCAL子集的词法分析程序为例 1.理论部分 (1)主程序设计考虑 主程序的说明部分为各种表格和变量安排空间。 数组 k为关键字表,每个数组元素存放一个关键字。采用定长的方式,较短的关键字 后面补空格。 P数组存放分界符。为了简单起见,分界符、算术运算符和关系运算符都放在 p表中 (编程时,还应建立算术运算符表和关系运算符表,并且各有类号),合并成一类。 id和ci数组分别存放标识符和常数。 instring数组为输入源程序的单词缓存。 outtoken记录为输出内部表示缓存。 还有一些为造表填表设置的变量。 主程序开始后,先以人工方式输入关键字,造 k表;再输入分界符等造p表。 主程序的工作部分设计成便于调试的循环结构。每个循环处理一个单词;接收键盘上 送来的一个单词;调用词法分析过程;输出每个单词的内部码。 ⑵词法分析过程考虑 将词法分析程序设计成独立一遍扫描源程序的结构。其流程图见图1-1。 图1-1 该过程取名为 lexical,它根据输入单词的第一个字符(有时还需读第二个字符),判断单词类,产生类号:以字符 k表示关键字;i表示标识符;c表示常数;p表示分界符;s表示运算符(编程时类号分别为 1,2,3,4,5)。 对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有 该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组id中,将常数 变为二进制形式存入数组中 ci中,并记录其在表中的位置。 lexical过程中嵌有两个小过程:一个名为getchar,其功能为从instring中按顺序取出一个字符,并将其指针pint加1;另一个名为error,当出现错误时,调用这个过程, 输出错误编号。 2.实践部分

关于计算机实验报告的参考范文

关于计算机实验报告的参考范文 篇一 一、实验题目 文件和文件夹的管理 二、实验目的 1.熟悉Windows XP的文件系统。 2.掌握资源管理器的使用方法。 3.熟练掌握在Windows XP资源管理器下,对文件(夹)的选择、新建、移动、复制、删除、重命名的操作方法。 三、实验内容 1.启动资源管理器并利用资源管理器浏览文件。 2.在D盘创建文件夹 3.在所创建文件夹中创建Word文件。 4.对所创建文件或文件夹执行复制、移动、重命名、删除、恢复、创建快捷方式及设置共享等操作。 四、实验步骤 (一)文件与文件夹管理 1.展开与折叠文件夹。右击开始,打开资源管理器,在左窗格中点击“+”展开,点击“—”折叠 2.改变文件显示方式。打开资源管理器/查看,选择缩略、列表,排列图标等

3.建立树状目录。在D盘空白处右击,选择新建/文件夹,输入经济贸易学院,依次在新建文件夹中建立经济类1103 4..创建Word并保存。打开开始/程序/word,输入内容。选择文件/另存为,查找D盘/经济贸易学院/1103班/王帅,单击保存 5.复制、移动文件夹 6.重命名、删除、恢复。右击文件夹,选择重命名,输入新名字;选择删除,删除文件 7.创建文件的快捷方式。右击王帅文件夹,选择发送到/桌面快捷方式 8.设置共享文件。右击王帅,选择属性/共享/在网络上共享这个文件/确定 9.显示扩展名。打开资源管理器/工具/文件夹选项/查看/高级设置,撤销隐藏已知文件的扩展名 (二)控制面板的设置。 1.设置显示属性。右击打开显示属性/桌面、屏幕保护程序 2.设置鼠标。打开控制面板/鼠标/按钮(调整滑块,感受速度)、指针 3.设置键盘。打开控制面板/键盘/速度(调整滑块,感受速度)、硬件 4.设置日期和时间打开控制面板/日期和时间

编译原理实验报告

编译原理实验报告 姓名: 学号: 班级: 学院: 南昌大学信息工程学院计算机系 2014年6月

目录 实验一 (3) 实验二 (8) 实验三 (15)

实验1 词法分析程序的设计 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 一、实验目的 掌握计算机语言的词法分析程序的开发方法。 二、实验内容 编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。 三、实验要求 1、根据以下的正规式,编制正规文法,画出状态图; 标识符<字母>(<字母>|<数字字符>)* 十进制整数0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 如有余力,则进一步分析八进制和十六进制整数,其正规式如下: 八进制整数0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六进制整数0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和界符+ - * / > < =<= >=( ) ;{ } 关键字main if then else while do int (可根据需要添加) 2、根据状态图,设计词法分析函数int scan( ),完成以下功能: 1)从文本文件中读入测试源代码,根据状态转换图,分析出一个单词, 2)以二元式形式输出单词<单词种类,单词属性> 其中单词种类用整数表示: 0:标识符 1:十进制整数 2:八进制整数 3:十六进制整数 运算符和界符,关键字采用一字一符,不编码 其中单词属性表示如下: 标识符,整数由于采用一类一符,属性用单词表示 运算符和界符,关键字采用一字一符,属性为空 3、编写测试程序,反复调用函数scan( ),输出单词种别和属性。 四、实验环境 PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境或Visual C++ 程序集成环境

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

实验报告格式模板-供参考

实验名称:粉体真密度的测定 粉体真密度是粉体质量与其真体积之比值,其真体积不包括存在于粉体颗粒内部的封闭空洞。所以,测定粉体的真密度必须采用无孔材料。根据测定介质的不同,粉体真密度的主要测定方法可分为气体容积法和浸液法。 气体容积法是以气体取代液体测定试样所排出的体积。此法排除了浸液法对试样溶解的可能性,具有不损坏试样的优点。但测定时易受温度的影响,还需注意漏气问题。气体容积法又分为定容积法与不定容积法。 浸液法是将粉末浸入在易润湿颗粒表面的浸液中,测定其所排除液体的体积。此法必须真空脱气以完全排除气泡。真空脱气操作可采用加热(煮沸)法和减压法,或两法同时并用。浸液法主要有比重瓶法和悬吊法。其中,比重瓶法具有仪器简单、操作方便、结果可靠等优点,已成为目前应用较多的测定真密度的方法之一。因此,本实验采用比重瓶法。 一.实验目的 1. 了解粉体真密度的概念及其在科研与生产中的作用; 2. 掌握浸液法—比重瓶法测定粉末真密度的原理及方法; 3.通过实验方案设计,提高分析问题和解决问题的能力。 二.实验原理 比重瓶法测定粉体真密度基于“阿基米德原理”。将待测粉末浸入对其润湿而不溶解的浸液中,抽真空除气泡,求出粉末试样从已知容量的容器中排出已知密度的液体,就可计算所测粉末的真密度。真密度ρ计算式为: 式中:m 0—— 比重瓶的质重,g ; m s —— (比重瓶+粉体)的质重,g ; m sl —— (比重瓶+液体)的质重,g ; ρl —— 测定温度下浸液密度;g/cm 3; ρ—— 粉体的真密度,g/cm 3; 三.实验器材: l s sl l s m m m m m m ρρ) ()(00----=

编译原理实验报告一 简单样本语言的词法分析器

理工大学信息工程与自动化学院学生实验报告 (2012 —2013学年第一学期) 一、实验目的及容 编译技术是理论与实践并重的课程,而其实验课要综合运用所学的多门课程的容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。 调试并完成一个词法分析程序,加深对词法分析原理的理解。 二、实验原理及基本技术路线图(框原理图或程序流程图) 1、待分析的简单语言的词法 (1)关键字: begin if then while do end 所有关键字都是小写。 (2)运算符和界符: := + –* / < <= <> > >= = ; ( ) #

(3)其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义:ID=letter(letter| digit)* NUM=digit digit * (4)空格由空白、制表符和换行符组成。空格一般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码 3、词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 二、所用仪器、材料(设备名称、型号、规格等或使用软件)

1台PC以及VISUAL C++6.0软件。 三、实验法、步骤(或:程序代码或操作过程) (1)程序代码: #include #include #include char prog[80],token[8]; char ch; int syn,p,m=0,n,row,sum=0; char *rwtab[6]={"begin","if","then","while","do","end"}; void scaner() { for(n=0;n<8;n++) token[n]=NULL; ch=prog[p++]; while(ch==' ') { ch=prog[p]; p++; } if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { m=0; while((ch>='0'&&ch<='9')||(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { token[m++]=ch; ch=prog[p++]; } token[m++]='\0'; p--; syn=10; for(n=0;n<6;n++)

化学实验报告格式模板.doc

化学实验报告格式模板 (以草酸中h2c2o4含量的测定为例) 实验题目:草酸中h2c2o4含量的测定 实验目的: 学习naoh标准溶液的配制、标定及有关仪器的使用; 学习碱式滴定管的使用,练习滴定操作。 实验原理: h2c2o4为有机弱酸,其ka1=5.9×10-2,ka2=6.4×10-5。常量组分分析时cka1>10-8,cka2>10-8,ka1/ka2<105,可在水溶液中一次性滴定其两步离解的h+: h2c2o4+2naoh===na2c2o4+2h2o 计量点ph值8.4左右,可用酚酞为指示剂。 naoh标准溶液采用间接配制法获得,以邻苯二甲酸氢钾标定: -cook -cooh +naoh=== -cook

-coona +h2o 此反应计量点ph值9.1左右,同样可用酚酞为指示剂。 实验方法: 一、naoh标准溶液的配制与标定 用台式天平称取naoh1g于100ml烧杯中,加50ml蒸馏水,搅拌使其溶解。移入500ml试剂瓶中,再加200ml蒸馏水,摇匀。 准确称取0.4~0.5g邻苯二甲酸氢钾三份,分别置于250ml 锥形瓶中,加20~30ml蒸馏水溶解,再加1~2滴0.2%酚酞指示剂,用naoh标准溶液滴定至溶液呈微红色,半分钟不褪色即为终点。 二、h2c2o4含量测定 准确称取0.5g左右草酸试样,置于小烧杯中,加20ml蒸馏水溶解,然后定量地转入100ml容量瓶中,用蒸馏水稀释至刻度,摇匀。 用20ml移液管移取试样溶液于锥形瓶中,加酚酞指示剂1~2滴,用naoh标准溶液滴定至溶液呈微红色,半分钟不褪色即为终点。平行做三次。 实验数据记录与处理: 一、naoh标准溶液的标定

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

编译原理实验报告5

编译原理实验报告五年月日 姓名学号姓名学号 系年级 2012级专业计算机科目编译原理 题目验证Yacc的使用 实验目的 熟悉语法分析器生成工具Yacc的使用,并学会在cygwin下使用bison工具编译Yacc文法说明文件。学习如何使用lex和yacc合作进行语法分析。 实验内容 根据给出的calculator例子 (calculator0,calculator1,calculator2,calculator3)完成下面题目:用lex 和yacc写一个计算布尔表达式真值的计算器。 实验要求 输入为一个布尔表达式,以换行结束。输出为这个布尔表达式的真值(true 或false)。尝试二义文法和非二义文法两种不同的实现方式。布尔表达式二义文法为:S –> S or S | S and S | not S | (S) | true | false,其中优先级or < and < not,or 和 and 左结合,not 右结合。非二义文法请参照表达式非二义文法自己写出来。 cygwin下用flex,bison和gcc工具将实验调试通过,并写出测试例测试正确性。 实验参考: calculator0-3这四个例子。请认真阅读例子,发现错误及时提出。 代码编写或修改 实验结果

非二义: 二义(版本1,未去掉对于运算结合性的定义):

以上的内容按照我们的计算顺序都是对的,一开始无法相通为什么二义与非二义的结果相同,后来明白了,于是有了下面的一个版本的结果。 二义(版本2,去掉了运算结合性的定义) 这两项本来应该的结果与其相反,说明了二义文法如果不进行运算符优先性、结合性的定义,则会造成预料不到的结果。 实验心得 1.要深刻理解二义与非二义文法的内涵与区别,才能更好地完成这个实验;

编 译 原 理 实 验 报 告

编译原理实验报告 课程:编译原理 系别:计算机系 班级:11网络 姓名:王佳明 学号:110912049 教师:刘老师 实验小组:第二组 1

实验一熟悉C程序开发环境、进行简单程序的调试 实验目的: 1、初步了解vc++6.0环境; 2、熟悉掌握调试c程序的步骤: 实验内容: 1、输入下列程序,练习Turbo C 程序的编辑、编译、运行。 #include main() { printf(“Programming is fun.\n”); } 2、分析程序,预测其运行结果,并上机检测你的预测。 #include main() { printf(“*\n”); printf(“* * *\n”); printf(“* * * * *\n”); printf(“* * * * * * *\n”); } 3、下面是一个加法程序,程序运行时等待用户从键盘输入两个整数,然后求出它们的和并输出。观察运行结果(程序输出),上机验证该程序。 #include main() { int a,b,c; printf(“Please input a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; printf(“%d+%d=%d\n”,a,b,c); } 2

实验二词法分析器 一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat" (2)运算符:"+","-","*","/","=" (3)界符:"{","}","[","]",";",",",".","(",")",":" (4)其他标记如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 在屏幕上显示如下: ( 1 , 无符号整数) ( begin , 关键字) ( if , 关键字) ( +, 运算符) ( ;, 界符) ( a , 普通标识符) 三、使用环境: Windows下的visual c++6.0; 四、调试程序: 1.举例说明文件位置:f:、、11.txt目标程序如下: begin x:=9 if x>0 then x:=x+1; while a:=0 do 3

实验报告格式模板

实验报告格式模板 实验报告的书写是一项重要的基本技能训练。它不仅是对每次实验的总结,更重要的是它可以初步地培养和训练学生的逻辑归纳能力、综合分析能力和文字 表达能力,是科学论文写作的基础。因此,参加实验的每位学生,均应及时认真地书写实验报告。要求内容实事求是,分析全面具体,文字简练通顺,誊写清楚整洁。 实验报告内容与格式 (一)实验名称 要用最简练的语言反映实验的内容。如验证某程序、定律、算法,可写成“验证XXX” ;分析XXX。 (二)所属课程名称 (三)学生姓名、学号、及合作者 (四)实验日期和地点(年、月、日) (五)实验目的 目的要明确,在理论上验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。 (六)实验内容 这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据何种原理、定律算法、或操作方法进行实验。详细理论计算过程? (七)实验环境 实验用的软硬件环境(配置)。 (八)实验步骤 只写主要操作步骤,不要照抄实习指导,要简明扼要。还应该画出实验流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。

(九)实验结果 实验现象的描述,实验数据的处理等。原始资料应附在本次实验主要操作者的实验报告上,同组的合作者要复制原始资料。 对于实验结果的表述,一般有三种方法: 1.文字叙述:根据实验目的将原始资料系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系。 2.图表:用表格或坐标图的方式使实验结果突出、清晰,便于相互比较, 尤其适合于分组较多,且各组观察指标一致的实验,使组间异同一目了然。每一图表应有表目和计量单位,应说明一定的中心问题。 3.曲线图应用记录仪器描记出的曲线图,这些指标的变化趋势形象生动、直观明了。 在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。 (十)讨论 根据相关的理论知识对所得到的实验结果进行解释和分析。如果所得到的实验结果和预期的结果一致,那么它可以验证什么理论?实验结果有什么意义?说明了什么问题?这些是实验报告应该讨论的。但是,不能用已知的理论或生活经验硬套在实验结果上;更不能由于所得到的实验结果与预期的结果或理论不符而随意取舍甚至修改实验结果,这时应该分析其异常的可能原因。如果本次实验失败了,应找出失败的原因及以后实验应注意的事项。不要简单地复述课本上的 理论而缺乏自己主动思考的内容。 另外,也可以写一些本次实验的心得以及提出一些问题或建议等。 (十-)结论 结论不是具体实验结果的再次罗列,也不是对今后研究的展望,而是针对这一实验所能验证的概念、原则或理论的简明总结,是从实验结果中归纳出的一般性、概括性的判断,要简练、准确、严谨、客观。 (十二)鸣谢(可略) 在实验中受到他人的帮助,在报告中以简单语言感谢. (十三)参考资料 详细列举在实验中所用到的参考资料. 格式: 作者年代书名及页数出版社

编译原理实验报告一

实验一词法分析程序实现 一、实验目得与要求 通过编写与调试一个词法分析程序,掌握在对程序设计语言得源程序进行扫描得过程中,将字符流形式得源程序转化为一个由各类单词符号组成得流得词法分析方法 二、实验内容 基本实验题目:若某一程序设计语言中得单词包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符与四个算术运算符,试构造能识别这些单词得词法分析程序(各类单词得分类码参见表I)。 表I语言中得各类单词符号及其分类码表 输入:由符合与不符合所规定得单词类别结构得各类单词组成得源程序文件。 输出:把所识别出得每一单词均按形如(CLASS,VALUE)得二元式形式输出,并将结果放到某个文件中。对于标识符与无符号常数,CLASS字段为相应得类别码得助记符;V AL UE字段则就是该标识符、常数得具体值;对于关键字与运算符,采用一词一类得编码形式,仅需在二元式得CLASS字段上放置相应单词得类别码得助记符,V ALUE字段则为“空". 三、实现方法与环境 词法分析就是编译程序得第一个处理阶段,可以通过两种途径来构造词法分析程序.其一就是根据对语言中各类单词得某种描述或定义(如BNF),用手工得方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应得状态矩阵,该状态矩阵连同控制程序一起便组成了编译器得词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序得另外一种途径就是所谓得词法分析程序得自动生成,即首先用正规式对语言中得各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程

实验报告格式参考模板

实验报告格式参考模板 实验名称:粉体真密度的测定 粉体真密度是粉体质量与其真体积之比值,其真体积不包括存在于粉体颗粒内部的封闭空洞。所以,测定粉体的真密度必须采用无孔材料。根据测定介质的不同,粉体真密度的主要测定方法可分为气体容积法和浸液法。 气体容积法是以气体取代液体测定试样所排出的体积。此法排除了浸液法对试样溶解的可能性,具有不损坏试样的优点。但测定时易受温度的影响,还需注意漏气问题。气体容积法又分为定容积法与不定容积法。 浸液法是将粉末浸入在易润湿颗粒表面的浸液中,测定其所排除液体的体积。此法必须真空脱气以完全排除气泡。真空脱气操作可采用加热(煮沸)法和减压法,或两法同时并用。浸液法主要有比重瓶法和悬吊法。其中,比重瓶法具有仪器简单、操作方便、结果可靠等优点,已成为目前应用较多的测定真密度的方法之一。因此,本实验采用比重瓶法。 一.实验目的 1. 了解粉体真密度的概念及其在科研与生产中的作用; 2. 掌握浸液法—比重瓶法测定粉末真密度的原理及方法; 3.通过实验方案设计,提高分析问题和解决问题的能力。 二.实验原理

比重瓶法测定粉体真密度基于“阿基米德原理”。将待测粉末浸入对其润湿而不溶解的浸液中,抽真空除气泡,求出粉末试样从已知容量的容器中排出已知密度的液体,就可计算所测粉末的真密度。真密度ρ计算式为: 式中:m0——比重瓶的质重,g; ms—— (比重瓶+粉体)的质重,g; msl—— (比重瓶+液体)的质重,g;ρl——测定温度下浸液密度;g/cm3;ρ——粉体的真密度,g/cm3; 三.实验器材: 实验仪器:真空干燥器,比重瓶;分析天平;烧杯。实验原料:金刚砂。 四.实验过程 1. 将比重瓶洗净编号,放入烘箱中于110℃下烘干冷却备用。 2. 用电子天平称量每个比重瓶的质量m0。 3. 每次测定所需试样的题记约占比重瓶容量的1/3,所以应预先用四分法缩分待测试样。 4. 取300ml的浸液倒入烧杯中,再将烧杯放进真空干燥器内预先脱气。浸液的密度可以查表得知。 5. 在已干燥的比重瓶里的物体受到向上的浮力作用,浮力的大小等于被该物体排开的液体的重力。 七.实验心得 以往的实验都是比着实验书本操作,而本次实验实验方案则是自己自主完成的,毫无经 12(4

编译原理标准实验报告

电子科技大学 实验报告 学生姓名:学号:指导教师: 实验地点:实验时间: 一、实验室名称:计算机学院软件工程实验室 二、实验项目名称:词法分析器的设计与实现 三、实验学时:4学时 四、实验原理 1.编译程序要求对高级语言编写的源程序进行分析和合成,生成目标程序。词法分析是对源程序进行的首次分析,实现词法分析的程序为词法分析程序。 2.词法分析的功能是从左到右逐个地扫描源程序字符串,按照词法规则识别出单词符号作为输出,对识别过程中发现的词法错误,输出相关信息。 3.状态转换图是有限有向图,是设计词法分析器的有效工具。 五、实验目的 通过设计词法分析器的实验,使同学们了解和掌握词法分析程序设计的原理及相应的程序设计方法,同时提高编程能力。 六、实验内容 实现求n!的极小语言的词法分析程序,返回二元式作为输出。 七、实验器材(设备、元器件) 1.操作系统:Windows XP

2.开发工具:VC6.0 3.普通PC即可 八、实验步骤 (1)启动VC6.0,创建空白工程项目。选择菜单中的“文件”->“新建”->“项目”,在弹出的对话框中,左边的“项目类型”框中,选择“Visual C++ 项目”,在右边框中,选择“空项目(.Net)”,在对话框下边,选择工程文件存放目录及输入名称,如Example1,单击“确定”。 (2)建立相应的单词符号与种别对照表; (3)根据状态转换图编写相应的处理函数; (4)完成词法分析器; (5)编译与调试以上程序; (6)生成相应的*.dyd文件,作为后面语法分析的输入文件。 九、实验数据及结果分析

可以对源程序进行词法分析,如果有错给出出错信息和所在行数,如果无错则生成二元式文件。 十、实验结论 本实验程序较好地完成了词法分析程序的设计与实现,能够对所给文法的程序进行词法分析,在没有词法错误的时候生成相应的二元式文件。该实验程序可一次性给出源程序中的词法错误。 十一、总结及心得体会 通过该实验,对词法分析程序的设计,以及运用C语言进行编程有了更深刻的理解,同时加深了自己对词法分析程序的原理的理解与掌握,提高了自己的动手能力。 十二、对本实验过程及方法、手段的改进建议 程序设计合理,代码可进一步优化。 报告评分: 指导教师签字:

编译原理实验报告

《编译原理》实验报告软件131 陈万全132852

一、需求分析 通过对一个常用高级程序设计语言的简单语言子集编译系统中词法分析、语法分析、语义处理模块的设计、开发,掌握实际编译系统的核心结构、工作流程及其实现技术,获得分析、设计、实现编译程序等方面的实际操作能力,增强设计、编写和调试程序的能力。 通过开源编译器分析、编译过程可视化等扩展实验,促进学生增强复杂系统分析、设计和实现能力,鼓励学生创新意识和能力。 1、词法分析程序设计与实现 假定一种高级程序设计语言中的单词主要包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符和四个算术运算符,试构造能识别这些单词的词法分析程序。 输入:由符合和不符合所规定的单词类别结构的各类单词组成的源程序文件。 输出:把所识别出的每一单词均按形如(CLASS,VALUE)的二元式形式输出,并将结果放到某个文件中。对于标识符和无符号常数,CLASS字段为相应的类别码的助记符;VALUE字段则是该标识符、常数的具体值;对于关键字和运算符,采用一词一类的编码形式,仅需在二元式的CLASS字段上放置相应单词的类别码的助记符,VALUE字段则为“空”。 2、语法分析程序设计与实现 选择对各种常见高级程序设计语言都较为通用的语法结构——算术表达式的

一个简化子集——作为分析对象,根据如下描述其语法结构的BNF定义G2[<算术表达式>],任选一种学过的语法分析方法,针对运算对象为无符号常数和变量的四则运算,设计并实现一个语法分析程序。 G2[<算术表达式>]: <算术表达式>→<项> | <算术表达式>+<项> | <算术表达式>-<项> <项>→<因式>|<项>*<因式>|<项>/<因式> <因式>→<运算对象> | (<算术表达式>) 若将语法范畴<算术表达式>、<项>、<因式>和<运算对象>分别用E、T、F和i 代表,则G2可写成: G2[E]:E → T | E+T | E-T T → F | T*F | T/F F → i | (E) 输入:由实验一输出的单词串,例如:UCON,PL,UCON,MU,ID······输出:若输入源程序中的符号串是给定文法的句子,则输出“RIGHT”,并且给出每一步分析过程;若不是句子,即输入串有错误,则输出“ERROR”,并且显示分析至此所得的中间结果,如分析栈、符号栈中的信息等,以及必要的出错说明信息。 3、语义分析程序设计与实现 对文法G2[<算术表达式>]中的产生式添加语义处理子程序,完成运算对象是简单变量(标识符)和无符号数的四则运算的计值处理,将输入的四则运算转换为四元式形式的中间代码。 输入:包含测试用例(由标识符、无符号数和+、?、*、/、(、)构成的算术表达式)的源程序文件。 输出:将源程序转换为中间代码形式表示,并将中间代码序列输出到文件中。 若源程序中有错误,应指出错误信息 二、设计思路 1、词法分析程序设计与实现 1)单词分类 为了编程的实现。我们假定要编译的语言中,全部关键字都是保留字,程序员不得将它们作为源程序中的标识符;作了这些限制以后,就可以把关键字和标识符的识别统一进行处理。即每当开始识别一个单词时,若扫视到的第一个字符为字母,则把后续输入的字母或数字字符依次进行拼接,直至扫视到非字母、数字字符为止,以期获得一个尽可能长的字母数字字符串,然后以此字符串查所谓保留字表(此保留字表要事先造好),若查到此字符串,则取出相应的类别码;反之,则表明该字符串应为一标识符。

编译原理实验报告(手打)

《编译原理》实验报告 班级:计C104 姓名:李云霄 学号:108490

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 选取无符号数的算术四则运算中的各类单词为识别对象,要求将其中的各个单词识别出来。 输入:由无符号数和+,-,*,/, ( , ) 构成的算术表达式,如1.5E+2-100。 输出:对识别出的每一单词均单行输出其类别码(无符号数的值暂不要求计算)。 三、实现方法与环境 1、首先设计识别各类单词的状态转换图。 描述无符号常数的确定、最小化状态转换图如图1所示。其中编号0,1,2,…,6代表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>, 1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 图1 文法G[<无符号数>]的状态转换图 其中编号0,1,2,…,6代表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>, 1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 在一个程序设计语言中,一般都含有若干类单词符号,为此可首先为每类单词建立一张状态转换图,然后将这些状态转换图合并成一张统一的状态图,即得到了一个有限自动机,再进行必要的确定化和状态数最小化处理,最后据此构造词法分析程序。 四则运算算术符号的识别很简单,直接在状态图的0状态分别引出相应标记的矢

编译原理实验报告

学生学号实验课成绩 武汉理工大学 学生实验报告书 实验课程名称编译原理 开课学院计算机科学与技术学院 指导老师姓名饶文碧 学生姓名 学生专业班级 —学年第学期

实验课程名称:编译原理 实验项目名称单词的词法分析实验成绩 实验者专业班级组别 同组者实验日期 第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 完成对某一种常用高级语言(如Pascal、C语言、PL/0语言)的各类单词进行词法分析,即对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其转换成属性字输出。 实验要求: (1)选择常用高级程序设计语言(如 Pascal、C语言、PL/0语言)的源程序作为词法分析对象。 (2)根据教学要求和学生具体情况,从上列语言之一中选取它的一个适当大小的子集,可以选取一类典型单词,也可以尽可能使各种类型的单词都能兼顾到。其基本要求是:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词,并把其转换成属性字输出。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) #include #include #include #include char *table[7]={" ","main","int","if","then","else","return"},TOKEN[20],ch; //定义关键字 int lookup(char *TOKEN){ //关键字匹配函数 int m,i; for(i=1;i<6;i++){ if((m=strcmp(TOKEN,table[i]))==0) return(i); } return(0); } void out(int c,char *TOKEN){ //输出函数 printf("(%d,%s)\n",c,TOKEN); } void scanner(FILE *fp){ //扫描函数 char TOKEN[20]={'\0'}; char ch; int i,c; ch=fgetc(fp); //获取字符 指针fp并自动指向下一个字符 if(isalpha(ch)){ //判断该字符是否是字母

编译原理实验报告

实验一词法分析器的设计与实现 (1) 1)实验目的 (1) 2)实验内容 (1) 3)实验要求 (1) 4)实验原理 (1) 5)实验步骤 (1) 6)状态转化图及词法分析程序 (2) 7)测试 (7) 实验二语法分析器的设计与实现 (9) 1)实验目的 (9) 2)实验内容 (9) 3)实验要求 (9) 4)实验原理 (9) 5)实验步骤 (9) 6)语法分析程序 (10) 7)测试 (16)

编译原理实验报告 专业:计算机科学与技术 学生姓名: 学号: 48 完成时间:2020年11月25日

实验一词法分析器的设计与实现 1)实验目的 ①掌握正规式、状态转换图、C语言单词符号的划分及词法分析器的实现 ②掌握词法分析程序的作用和接口。 2)实验内容 设计及实现C语言程序的词法分析器。 3)实验要求 ①对任给的一个C语言源程序,能够虑掉空格、回车换行符、tab键及注释。 ②识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式 输出。并构造符号表。 ③输出有词法错误的单词及所在行号。 4)实验原理 根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。

5)实验步骤 ①根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。 ②根据状态转换图,构造识别各类单词的词法分析器。 6)状态转化图及词法分析程序

#include "" #include "" #include "" FILE *fp; int id; void main() { char cbuffer; char alphaprocess(char buffer); char digitprocess(char buffer); char otherprocess(char buffer); if ((fp=fopen("","r"))==NULL) /*以只读方式打开文件"",NULL在文件中已被定义为0*/ printf("error"); else { cbuffer=fgetc(fp); /*文件不为空则从文件中取字符*/ while (cbuffer!=EOF) /*EOF文件结束标志*/ { if(cbuffer==' '||cbuffer=='\n') /*掠过空格和回车符*/ { cbuffer=fgetc(fp); id=4; }

编译原理实验报告

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 选取无符号数的算术四则运算中的各类单词为识别对象,要求将其中的各个单词识别出来。 输入:由无符号数和+,-,*,/, ( , ) 构成的算术表达式,如1.5E+2-100。 输出:对识别出的每一单词均单行输出其类别码(无符号数的值暂不要求计算)。 三、实现方法与环境 1、首先设计识别各类单词的状态转换图。 描述无符号常数的确定、最小化状态转换图如图1所示。其中编号0,1,2, (6) 表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>,1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 图1 文法G[<无符号数>]的状态转换图 其中编号0,1,2,…,6代表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>,1,2和6为终态,分别代表整数、小数和科学计数的识别结束状态。 在一个程序设计语言中,一般都含有若干类单词符号,为此可首先为每类单词建立一张状态转换图,然后将这些状态转换图合并成一张统一的状态图,即得到了一个有限自动机,再进行必要的确定化和状态数最小化处理,最后据此构造词法分析程序。 四则运算算术符号的识别很简单,直接在状态图的0状态分别引出相应标记的矢线至一个新的终态即可。根据自己的习惯,也可以将其转换为状态矩阵形式。 2、词法分析程序编写 根据描述语言中各类单词的文法状态转换图或状态矩阵,利用某种语言(C语言或JA V A 语言)直接编写词法分析程序。 3、词法分析程序测试 用于测试扫描器的实例源文件中应有词法正确的,也应有错误的字符串,对于输入的测试用例的源程序文件,以对照的形式将扫描器的分析结果信息在输出文件中表示出来。四、参考资料 实现无符号数识别的参考方法:将设计的状态转换图直接转化为一张程序流程图,并在外层再增加一个以EOF为循环终止条件的while循环,即形成能连续识别各类单词的词法分析程序。 各类单词的编码建议如表1。 表1 单词的内部编码

相关主题
文本预览
相关文档 最新文档