编译实验指导书(2013)

合集下载

C++实验指导书2013

C++实验指导书2013

《面向对象程序设计》实验指导书《面向对象程序设计实验》课程组二0一三年三月目录实验预备实验环境和工具使用,多文件应用程序的开发过程 3实验一类与对象 7实验二运算符重载 9 实验三继承与多态性 12实验四模板 20实验五综合应用程序一(选做一个) 23实验六使用MFC进行可视化编程 25实验七综合应用程序二(选做一个) 41实验预备实验环境和工具使用多文件应用程序的开发过程一、实验目的与要求Visual C++提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率,本实验通过学习Visual C++ 6.0界面的常用组成情况,并学习各种常用的窗口、菜单、按钮的意义和功能,并通过一些简单的程序设计,目的是使学生对用户界面、菜单和工具栏有一个全面的了解并掌握主要菜单命令。

●了解Visual C++集成开发环境的界面组成;●理解菜单命令的含义●掌握“New:”菜单命令、“Breakpoints”菜单命令、“Build”菜单命令、“Source Brower”菜单命令、工具栏的定制和修改、联机帮助。

●简单的程序设计二、实验设备与平台实验设备要求每个学生一台电脑,其中运行环境为VC++ 6.0系统。

三、实验内容及步骤1. 上机实验内容●Visual C++集成开发环境的用户界面识别;●新文件、新工程项目、工作区的创建;●设置、查看和删除断点;●编译和运行程序;●浏览资源信息;●工具栏的定制和修改;●联机帮助的使用;●熟悉Visual C++编写控制台模式程序的方法;上机输入例题,调试并运行,并观察结果;●上机编写一个程序实验1调试并编译程序。

在Visual C++下,编写控制台模式的程序和在DOS下编写程序相似,具有简单方便的特点,一般用于后台程序的编写。

控制台模式下程序的编写有两种方法,一是创建一个C++源程序文件,二是创建一个控制台模式的工程。

Visual Basic 实验指导书2013

Visual Basic 实验指导书2013
34.7
38.7
43.2
48.2
53.2,54
59.2,60
66.2,67
0,75
0,79,80.5
83.2,84,85.5
0,0,90.5
93.2,94,95.5
0,0,100.5
103.2,104,105.5
0,0,111.5
115.2,116,117.5
0,0,123.5
128.2,129,130.5,132
图像自动缩放适应控件大小
6
命令按钮(CommandButton)
名称
cbLoad
Caption
读取文件
7
命令按钮(CommandButton)
名称
cbCancel
Caption
取消
5.编写读取文件对话框的事件处理代码
八、思考
1.为什么显示读取文件对话框要用vbModal(模式对话框)?如何在主窗体中获取另一个对话框中控件的内容?如何知道调用读取文件对话框时用户是选择“读取”而不是“取消”?
能够对文件输入/输出 (I/O)。
语法
pathnameFormode[Accessaccess] [lock]As[#]filenumber[Len=reclength]
语句的语法具有以下几个部分:
部分
描述
pathname
必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。
mode
序号
窗口/控件类型
属性名
属性值
说明
1
窗体(Form)
名称
Form1
caption
实验1:运动的时间
窗体的标题
2

编译程序实验指导书讲解教学提纲

编译程序实验指导书讲解教学提纲

编译程序实验指导书解讲.编译程序实验指导书实验目的:用C语言对一个C语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。

1.词法分析1.1 实验目的设计、编制并测试一个词法分析程序,加深对词法分析原理的理解。

1.2 实验要求1.2.1 待分析的C语言子集的词法1. 关键字main if else int char for while所有的关键字都是小写。

2.专用符号= + - * / < <= > >= == != ; : , { } [ ] ( )3.其他标记ID和NUM通过以下正规式定义其他标记:→letter(letter|digit)*ID→digit digit*NUMletter→a|…|z|A|…|Zdigit→0|…|9…4.空格由空白、制表符和换行符组成空格一般用来分隔ID、NUM、专用符号和关键字,词法分析阶段通常被忽略。

1.2.2 各种单词符号对应的种别码表1 各种单词符号的种别码单词符号种别码单词符号种别码单词符号种别码main 1 = 21 , 32int 2 + 22 : 33char 3 - 23 ; 34if 4 * 24 > 35else 5 / 25 < 36for 6 ( 26 >= 37while 7 ) 27 <= 38ID 10 [ 28 == 39MUN 20 ] 29 != 40{ 30 ‘\0' 1000} 31 ERROR -11.2.3 词法分析程序的功能输入:所给文法的源程序字符串。

输出:二元组(syn,token或sum)构成的序列。

其中,. syn为单词种别码。

. Token为存放的单词自身字符串。

. Sum为整型常量。

具体实现时,可以将单词的二元组用结构进行处理。

例如,对源程序main(){int i=10;while(i) i=i-1;}的源文件,经词法分析后输出如下序列:(1,main) (26,() (27,)) (30,{} (2,int) (10,i) (21,=) (20,10) (34,;) (7,while) (26,() (10,i) (27,)) (10,i) (21,=) (10,i) (23,-) (20,1) (34,;) (31,))1.3 词法分析程序的主要算法思想算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到的单词符号的第一个字符的种类,拼出相应的单词符号。

《编译技术》课程实验指导书

《编译技术》课程实验指导书

《编译技术》课程实验指导书实验一词法分析一.实验目的1、学会针对DFA转换图实现相应的高级语言源程序。

2、深刻领会状态转换图的含义,逐步理解有限自动机。

3、掌握手工生成词法分析器的方法,了解词法分析器的内部工作原理。

二.实验内容TINY计算机语言的编译程序的词法分析部分实现。

从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token)送给语法分析程序。

为了简化程序的编写,有具体的要求如下:(1)数仅仅是整数。

(2)空白符仅仅是空格、回车符、制表符。

(3)代码是自由格式。

(4)注释应放在花括号之内,并且不允许嵌套TINY语言的单词三.实验要求要求实现编译器的以下功能:(1)按规则拼单词,并转换成二元式形式(2)删除注释行(3)删除空白符 (空格、回车符、制表符)(4)显示源程序,在每行的前面加上行号,并且打印出每行包含的记号的二元形式(5)发现并定位错误。

词法分析进行具体的要求:(1)记号的二元式形式中种类采用枚举方法定义;其中保留字和特殊字符是每个都一个种类,标示符自己是一类,数字是一类;单词的属性就是表示的字符串值。

(2)词法分析的具体功能实现是一个函数GetToken(),每次调用都对剩余的字符串分析得到一个单词或记号识别其种类,收集该记号的符号串属性,当识别一个单词完毕,采用返回值的形式返回符号的种类,同时采用程序变量的形式提供当前识别出记号的属性值。

(3)标识符和保留字的词法构成相同,为了更好的实现,把语言的保留字建立一个表格存储,这样可以把保留字的识别放在标示符之后,用识别出的标示符对比该表格,如果存在该表格中则是保留字,否则是一般标识符。

实验二递归下降语法分析器设计一、实验目的(1)加深对递归下降分析法一种自顶向下的语法分析方法的理解。

(2)根据文法的产生式规则消除左递归,提取公共左因子构造出相应的递归下降分析器。

二、实验内容根据课堂讲授的形式化算法,编制程序实现递归下降分析器,能对常见的语句进行分析。

编译实验指导

编译实验指导

编译原理课程设计目录1.1课程设计的基本要求和方法______________________ 2一、目的 ________________________________________________________ 2二、课程设计步骤 ________________________________________________ 2三、考核评估 ____________________________________________________ 31.2编译原理设计题目——中间代码生成器和自动生成器 3一、中间代码生成器 ___________________________________________ 3二、自动生成工具FLEX 和Y ACC _______________________________ 41.3编译原理课程设计题目—面向对象的编译器设计____ 5三、面向对象的词法编译器设计 _________________________________ 5四、面向对象的中间代码编译器设计 _____________________________ 6五、面向对象的目标代码编译器设计 _____________________________ 71.4 编译原理设计题目—算法过程模拟_______________ 9六、限自动机的生成及化简过程模拟 _____________________________ 9七、First集和Follow集生成算法模拟 ____________________________ 9八、LL(1)分析过程模拟_______________________________________ 10九、FirstVT集和LastVT集生成算法模拟 ________________________ 11十、算符优先分析表生成模拟 __________________________________ 12十一、算符优先分析过程模拟 ____________________________________ 12 十二、LR分析过程模拟 _________________________________________ 131.1课程设计的基本要求和方法一、目的进一步培养学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

编译原理实验指导书-语法分析 (1)

编译原理实验指导书-语法分析 (1)

编译原理实验指导书实验2 语法分析实验目的1.巩固对语法分析的基本功能和原理的认识。

2.通过对语法分析表的自动生成加深语法分析表的认识。

3.理解并处理语法分析中的异常和错误。

实验要求一、对学生要求:1.掌握语法分析程序的总体框架,并将其实现。

2.掌握语法分析表的构造方法3.掌握语法分析的异常和错误处理。

二、对实验指导教师要求:1.明确语法分析的基本功能和原理。

2.语法分析程序的总体结构及其关键之处。

3.语法分析表的生成程序。

4.语法分析的异常和错误处理。

5.编写并运行该题目程序代码,具有该题目的参考答案。

6.深刻理解题目内涵,能够清晰描述问题,掌握该题目涉及的知识点,指导学生实验时需要注意的问题。

实验内容采用至少一种语法分析技术(LL(1)、SLR(1)、LR(1)或LALR(1))分析类高级语言中的基本语句(至少包括函数定义、变量说明、赋值、循环、分支等语句)。

对如下工作进行展开描述(1)给出如下语言成分的文法描述•函数定义(或过程定义)•变量说明•赋值•表达式•循环•分支(2) 语法分析程序的总体结构及物理实现(程序框图)(3) 核心数据结构和功能函数的设计(4) 错误处理错误的位置及类型等实验评分标准一、课堂表现(10分)1.出勤情况(按时,迟到,早退,缺席)2.是否遵守课堂纪律二、实验结果(50分)1.当堂按时完成(10分)2.独立完成(10分),(和同学协商完成,在老师帮助下完成)3.结果正确无误(15分)其中分析表的输出占5分4.功能齐全,界面美观,具有较好演示效果(10分)5.在源程序中有必要的注释和说明,程序文档齐全(5分)三、实验报告(40分)1.语言的文法描述(10分)2.语法分析程序的模块结构图(10分)3.核心数据结构的设计(10分)4.错误处理(5分)5.实验过程中遇到的问题的总结及实验的体会(5分)。

编译原理compiler-实验-指导书

编译原理compiler-实验-指导书

编译原理compiler-实验-指导书编译原理实验指导书课程名称 : 编译原理英文名称 : Compiler Principle 课程性质 : 必修编写人: 编译原理课程组2013年9月1日计算机学院1. 阅读说明基础实验?、选做实验?、实验中的附加内容★未加标注的实验为参考实验2. 实验要求从以下方案中选一方案A (成绩上限:120%)-完成1个基础实验?: 90%-完成选做实验?或实验中的附加内容★: 30%方案B (成绩上限:150%)-完成综合实验3.1: 150%3. 成绩评定成绩评定依据原创性、工作量(自己编写的代码部分才能得分,参考的部分不得分)代码质量、丰富的测试用例、功能和实现上的独立思考与创新实验验收顺序、主动性评分标准源码、验收、答辩(90%)实验报告、作品及文档提交(10%)4. 验收流程必须携带打印版实验报告进行验收,验收顺序依据实验报告提交的顺序验收分―申优验收‖和―抽查‖两种形式,参加―申优验收‖才能获得B(百分制85%)以上的成绩。

必须当面验收的实验 - 选做内容、选做实验、综合实验5. 设计文档要求设计文档参照模板书写。

所有实验必须提交设计文档的打印版本(A4)6. 作品提交要求参加―申优验收‖的同学需提交作品的电子文档及源码,否则,只需提交打印版实验报告。

将作品打包成 .rar文件发送至指定电子邮箱邮箱地址: ytuCompiler@/doc/d506f661102de2bd960588 c4.html请大家参考以下目录命名与结构提交实验所有文档及源码COMPILER_班级_学号_姓名_本次实验名称(根目录)├ bin 存放可执行程序├ config 存放各种配置文件├ lib 存放类库文件├ doc 存放设计文档及readme.txt├ src 存放源程序及项目工程文件├ test 存放测试程序├ references存放参考文档、代码、其他资源根目录命名举例:COMPILER_0813_200825501101_张三_实验1.1若发现程序或文档雷同,按作弊处理完全雷同,取消参加期末考试资格,本学期理课程总评成绩为0分。

编译原理实验指导书

编译原理实验指导书

《编译原理》实验指导书别小川于枫编写适用专业:计算机科学与应用江苏科技大学电子信息学院2005年2月前言《编译原理》是计算机专业的一门核心课程,在计算机本科教学中占有十分重要的地位。

由于《编译原理》课程兼有很强的理论性和实践性,并且编译程序构造的算法比较复杂,因而让学生在学习时普遍感到内容抽象、不易理解,难易掌握。

但是掌握编译原理的基本理论和设计思想是非常重要的,尤其是将本课程的理论知识与计算机应用中的许多领域紧密联系与广泛应用结合。

将有利于学生提高专业素质和适应社会多方面需要的能力。

因此,通过理论授课和上机实践,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地加以运用。

通过实验逐步提高学生的编程能力和调试程序的能力以及解决实际问题的能力。

使学生培养出扎实的软件开发基本技能,并养成良好的编程风格,为进一步学习后续课程和将来从事应用软件开发奠定良好的基础。

实验课时具体内容安排如下:一、实验课的性质和目的(1)深刻理解程序语言编译系统的结构及各部分的功能。

(2)熟练掌握设计和构造程序语言编译系统的基本原理和技术。

(3)能独立编写清晰、工整、结论正确的编译原理的源程序。

(4)能学会上机进行正确调试,并进行程序修改。

即培养发现程序错误,排除错误的能力和经验。

二、实验课的基本要求:(1)掌握编译程序的功能和结构。

(2)掌握词法分析器的设计方法与实现步骤加深对讲授内容的理解,尤其是一些语法给定,通过上机实验帮助掌握。

(3)掌握语法分析器的设计方法与实现步骤。

(4)掌握符号表和存储空间的组织。

(5)掌握代码优化的作用与实现方法(6)掌握错误的诊断和校正方法。

三、主要实验教学方法实验前,由任课教师落实实验任务,每个学生必须事先独立完成好程序的设计的源程序编写工作。

实验课上对疑难点作集中辅导。

实验过程中随时针对不同的情况作个别启发式辅导。

实验后,学生撰写并提交实验报告。

最后,由实验教师根据每个学生的编程、上机调试能力、编程能力和实验结果及实验报告综合评定学生的实验成绩。

西南大学编译原理实验指导书

西南大学编译原理实验指导书

西南大学编译原理实验指导书
实验目的和内容
编译原理实验的目的是使学生将编译理论运用到实际当中,实现一个简单语言集的词法、语法和语义分析程序,验证实际编译系统的实现方法,并加深对编译技术的认识。

实验内容共需实现编译器的词法、语法和语义分析程序三个组成部分。

要求学生必须完成每个实验的基本要求,并可尝试实验的扩展要求部分。

实验报告
要求每人针对每个实验上交一份实验报告,其中主要包括三方面内容:
1、实验设计:实验采用的实现方法,如描述语言的文法,单词分类码表,状态转换图或状态矩阵等。

具体的设计结果,应包括程序结构的描述,各部分主要功能的说明,以及所用数据结构的介绍等。

2、程序代码:实验实现的源程序,要求符合一般的程序书写风格,并包括必要的注释。

3、实验结果分析:程序的输入及输出,运行结果分析(至少包括一个正确和一个错误单词或语句的分析结果),改进设想等。

编译技术实验指导书

编译技术实验指导书

编译技术实验指导书计算机科学与工程学院前言《编译技术》是计算机科学与技术、软件工程等专业的一门理论性较强的专业课,旨在培养大学生的计算机专业素质和基本编译程序设计的能力。

通过实验教学,使学生加深对所学知识的理解,掌握编译程序构造原理和实现技术。

它的目的和任务是:让学生掌握编译程序的基本原理和实现技术,提高学生对程序设计语言的理解,让学生了解将高级程序设计语言源程序翻译成计算机能处理的目标代码语言的整个过程,培养学生的编译程序设计的能力。

编译程序的设计包括词法分析程序的设计、语法分析程序的设计、语义分析程序的设计和中间代码生成程序的设计等。

本实验指导书是金成植编著的《编译程序构造原理和实现技术》的配套教材。

编者根据计算机课程实践性强等特点,编写了本实验教程,帮助学生有计划地系统地上机实践。

根据教学内容和教学目标,实验指导书设计了八次实验,实验学时16学时,每个实验2学时。

学生应按照实验指导书的要求,完成指定的实验任务,并及时提交实验报告。

要求学生在每次实验之前做好预习,实验后按要求写出实验报告。

在每次实验过程中教师要考核学生每次实验的完成情况。

一、为保证实验效果学生应做到:1、遵守实验室的规章制度,爱护教学设备。

2、学生必须按时上机下机。

3、禁止做与实验无关的内容,禁止利用实验学时玩计算机游戏;4、每次实验前学生应做好预习,实验后按时提交实验报告。

二、实验报告的要求:1、明确实验的目的及要求;2、记录下相应编译阶段的程序设计的思想、程序代码及运行的结果;3、说明实验中出现的问题和解决过程;4、写出实验的体会和实验过程中没解决的问题。

由于编者水平有限,书中难免有错,敬请大家批评指正。

辽宁科技大学计算机学院科学系2009年2月目录实验一词法分析器的手工构造...................................................... . (3)实验二词法分析器的自动生成........................................... . (10)实验三递归下降语法分析程序设计 (18)实验四LL(1)语法分析程序设计..................................... ....... . (22)实验五LR语法分析器程序设计....................................... .. (27)实验六说明语句的语法制导翻译........................................... ...... .. (32)实验七中间代码生成程序设计............................................. (35)实验八微小编译器的设计............................................ (37)实验一词法分析器的手工构造实验类型:验证性实验要求:必修一、实验目的:通过本次实验,使学生掌握词法分析的构造原理及实现技术,会编写简单程序设计语言的词法分析器。

实验指导书编译原理

实验指导书编译原理

编译原理实验教学指导书计算机科学与工程学院华南理工大学目录1 实验简介 (3)2 TINY+语言介绍 (4)2.1 TINY+语言的词法定义 (4)2.2 TINY+的语法定义 (5)2.3 TINY+的语义定义 (7)2.4 用TINY+语言编写的示例程序 (7)3 实验1:实现TINY+语言的词法分析器 (9)3.1 实验目的 (9)3.2 实验要求 (10)3.3 TINY+的测试程序及词法分析器的输出 (10)4 实验2:实现TINY+的语法分析器、语义分析器以及中间代码生成器 (13)4.1 实验目的 (13)4.2 实验要求 (14)4.3 TINY+示例程序及其输出 (14)附录:和TINY+文法规则对应的生成三地址中间代码的属性文法 (16)1 实验简介学生在实验中,构造一个将TINY+高级程序设计语言转换为TINY+虚拟机上的中间代码的编译器。

整个实验包括两个部分:实验一完成TINY+编译器的词法分析器部分;实验二完成TINY+编译器的语法分析器部分、语义分析器部分及中间代码生成器部分。

每个同学必须独立完成自己的实验,与其他同学的讨论或合作是允许的,但必须是有限度的,可以互相交流想法和方法,但不能抄袭。

学术不端将导致成绩为零。

TINY+的编译器必须用C语言或C++语言实现(推荐使用Microsoft Visual Studio)。

2 TINY+语言介绍实验定义了一种叫TINY+的高级程序设计语言,该语言是对TINY 语言的一个扩充,TINY+比TINY增加了程序的声明部分,while语句,字符串类型定义等等,在本节的描述中,用蓝色字体标识的是TINY语言原有的词法及语法规定,而用红色字体标识的是TINY+语言扩充的词法及语法规定。

本节主要是对TINY+语言的介绍,具体包括:1)TINY+语言的词法定义,包括对TINY+语言的单词(token)的描述;2)TINY+语言语法结构的EBNF描述;3)TINY+语言主要的语义描述;4)TINY+的实例程序2.1 TINY+语言的词法定义1.TINY+语言的关键字(keyword)包括:or and int bool char while doif then else end repeat until read write所有的关键字是程序设计语言保留使用的,并且用小写字母表示,用户自己定义的标识符不能和关键字重复。

《编译原理》科学实验指导说明书

《编译原理》科学实验指导说明书

《编译原理》实验指导书实验一词法分析器的设计一、实验目的和要求加深对状态转换图的实现及词法分析器的理解。

熟悉词法分析器的主要算法及实现过程。

要求学生掌握词法分析器的设计过程,并实现词法分析。

二、实验基本内容给出一个简单语言的词法规则,画出状态转换图,并依据状态转换图编制出词法分析程序,能从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。

并依次输出各个单Error”,然后跳过错误部分继续显示)词法规则如下:三、实验时间:上机三次。

第一次按照自己的思路设计一个程序。

第二、三次在理论课学习后修改程序,使得程序结构更加合理。

四、实验过程和指导:(一)准备:1.阅读课本有关章节(c/c++,数据结构),花一周时间明确语言的语法,写出基本算法以及采用的数据结构和要测试的程序例。

2.初步编制好程序。

3.准备好多组测试数据。

(二)上课上机:将源代码拷贝到机上调试,发现错误,再修改完善。

(三)程序要求:程序输入/输出示例:输入如下一段:main(){/*一个简单的c++程序*/int a,b; //定义变量a = 10;b = a + 20;}要求输出如右图。

要求:(1) 剔除注解符(2) 常数为无符号整数(可增加实型数,字符型数等)(四)练习该实验的目的和思路:程序开始变得复杂起来,可能是大家以前编过的程序中最复杂的,但相对于以后的程序来说还是简单的。

因此要认真把握这个过渡期的练习。

程序规模大概为200行及以上。

通过练习,掌握对字符进行灵活处理的方法。

(五)为了能设计好程序,注意以下事情:1.模块设计:将程序分成合理的多个模块(函数/类),每个模块(类)做具体的同一事情。

2.写出(画出)设计方案:模块关系简图、流程图、全局变量、函数接口等。

3.编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。

4.程序设计语言不限,建议使用面向对象技术及可视化编程语言,如C++,VC,JA V A,VJ++等。

《C语言程序设计实验》指导书(实验1~6)

《C语言程序设计实验》指导书(实验1~6)

《C语言程序设计实验》指导书(简明版)**大学软件学院**年**月实验一顺序结构程序设计(2学时)一、实验目的1、熟悉C编译环境、简单C程序结构及书写方式、以及C程序的编辑、编译、连接、运行、调试的步骤;2、掌握C语言的基本数据类型及其输入输出格式,以及输入输出函数的使用方法;3、掌握C语言的算术运算符(特别是自增、自减运算符)、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符的使用;4、掌握C语言顺序结构程序的执行流程、设计方法,能够根据实际问题灵活使用顺序结构,画出程序的算法流程图,设计出逻辑合理、思路清晰、结果正确的顺序结构程序。

二、实验内容及要求1、实验内容包括8道题目,分为基本内容和选做内容两部分。

要求:(1)基本内容中的实验题目是必须要完成的,选做内容中的实验题目可以根据自己的情况选做或全做(越多越好,适当加分);(2)在实验之前编写出基本内容、选做内容中的所有程序,实验前检查(视未完成情况适当扣分);(3)对于设计型题目,要求画出程序流程图(传统流程图和N-S图);(4)在上机实验过程中,注意总结和体会上机步骤(编辑、编译、连接、运行、调试、结果分析),注意培养观察、分析和排除编译错误、连接错误和程序逻辑错误的初步能力;(5)上机结束后,应按要求认真书写实验报告(格式见附件)。

2、基本内容(1)[验证型]编辑下列程序,然后进行编译、连接和运行,观察结果,并简要总结简单C程序的结构、书写格式以及上机过程;#include <stdio.h>int main( ){printf("Hello, world!\n");return 0;}(2)[验证型]通过运行下列程序,分析各种格式符的使用方法。

#include <stdio.h>int main( ){int a = 9, b = 2;float x = 32.8459, y = -792.451;char d = 'R';long n = 5461237;unsigned u = 65535;printf("%d,%d\n", a, b);printf("%3d,%3d\n", a, b);printf("%f,%f\n", x, y);printf("%-10f,%-10f\n", x, y);printf("%8.2f,%8.2\n", x, y);printf("%.4f,%.4f\n", x, y);printf("%3f,%3f\n", x, y);printf("%e,%10.2e\n", x, y);putchar(d);putchar('\n');printf("%c,%d,%o,%x\n", d, d, d, d);printf("%ld,%lo,%x\n", n, n, n);printf("%u,%o,%x,%d\n", u, u, u, u);return 0;}(3)[验证型]编辑下列程序,进行编译、连接和运行。

实验指导书

实验指导书


C语言标准`支持库
若编译链接没有错误,将生成 sinewave.out 文件,完成工 程项目的编译链接。*.out文件可以在工程文件夹中的 Debug中 找到。 若出现错误,可根据提供的错误信息,对源程序进行修改, 然后重新编译,直到编译成功,生成sinewave.out文件。
链接命令文件
C语言主程序
2013/10/29
实验指导
实验指导
导 书
退出
系统配置:
在安装CCS之后、运行CCS软件之前,首先需要运行CCS设 置程序,根据需要对CCS进行适当的配置,参见下页图。
(1)运行桌面快捷方式Setup CCSudio V3.3。 (2)在Available Factory Boards模块中,在Platform的下拉 菜单中选择simulator,在Family下拉菜单中选择C28xx。 (3)选择一块芯片,双击或者点击下方<<Add,将其添加到my system目录下。 (4)点击Save&Quit,完成配置,进入CCS。
导 书
退出
③链接数据文件
器的窗口,可以显示和控制从文件读取数据的进度。
退出
验 指实验指导来自导 书4、程序调试一个独立区域显示被观察变量的值。
实验指导
1) 将currentBuffer.output进行变量观察,右键
Add to Watch Window,在CCS 窗口的右下角会出现


退出
退出

实验指导

退出
退出

实验指导
3、设置断点

工程项目编译链接,生成sinewave.out文件后,可在源程序或反汇 编程序中设置断点。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》
实验指导书
太原理工大学计算机软件学院
《编译原理》实验
适用专业:计算机实验类别:专业实验
实验时数:8学时
一、实验课程的性质、目的和任务
1.培养学生初步掌握编译原理实验的技能。

2.验证所学理论、巩固所学知识并加深理解。

3.对学生进行实验研究的基本训练。

二、实验课程的内容、要求及学时分配
实验一、无符号数的词法分析程序(4学时)
内容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。

要求:从键盘上输入一串字符(包括字母、数字等),最后以“;”结束,编写程序识别出其中的无符号数。

无符号数文法规则可定义如下:
<无符号数>→<无符号实数>│<无符号整数>
<无符号实数>→<无符号整数>.<数字串>[E<比例因子>]│
<无符号整数>E<比例因子>
<比例因子>→<有符号整数>
<有符号整数>→[+│-]<无符号整数>
<无符号整数>→<数字串>
<数字串>→<数字>{<数字>}
<数字>→0 1 2 3 (9)
读无符号数的程序流程图见下图
实验二、逆波兰式生成程序(4学时)
内容:掌握语法分析的基本思想,并用高级语言编写逆波兰式生成程序;
要求:利用逆波兰式生成算法编写程序,将从键盘上输入的算术表达式(中缀表达式)转化成逆波兰式。

逆波兰表达式的生成过程涉及到运算符的优先级,下表中列出几个常用运算
符的优先关系。

常用运算符优先关系矩阵
如上表所示的优先关系矩阵表示了+,-,*,/,↑,(,)等七种运算符之间的相互优先关系。

“>、<、=”三种符号分别代表“大于”、“小于”、“相等”三种优先关系。

左边的“=”与右边的“(”之间没有优先关系存在,所以表中为空白。

逆波兰表达式生成算法的关键在于比较当前运算符与栈顶运算符的优先关系,若当前运算符的优先级高于栈顶运算符,则当前运算符入栈,若当前运算符的优先级低于栈顶运算符,则栈顶运算符退栈。

下面给出了逆波兰表达式生成算法的流程图。

(为了便于比较相邻运算符的优先级,需要设立一个工作栈,用来存放暂时不能处理的运算符,所以又称运算符栈)。

实验三、语法分析程序的设计(4学时)
语法分析阶段根据程序语言的语法规则,对词法分析产生的单词序列进行语法检查。

凡不合语法者,尽可能多和确切地指出错误(包括出错位置、原因和性质),否则,变换成各类语法范畴。

(1)内容:通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌
握常用的语法分析方法。

(4学时)
(2)要求:选择具有代表性的语法分析方法,如:LL(K)分析法、递归子程序法、运算符优先数法、LR(K)分析法等方法之一进行设计;选择对各种常见程序语言都通用的语法结构,如赋值语句(尤指表达式)作为分析对象,并与所选语法分析方法要比较贴切;先写出BNF定义,如:〈赋值语句〉::=〈变量〉=〈表达式〉
〈表达式〉::=〈项〉│〈表达式〉+〈项〉│〈表达式〉-〈项〉
〈项〉::=〈因子〉│〈项〉*〈因子〉│〈项〉/〈因子〉
〈因子〉::= 〈初等量〉│〈因子〉↑〈初等量〉
〈初等量〉::= (〈表达式〉)│i
然后编写语法分析程序;调试:调试例子应包括符合语法规则的算术表达式,以及分析程序能够判别的若干错例。

①LL(1)语法分析方法
LL(1)分析器的逻辑结构
输入串
分析栈
构造LL(1)分析表的算法如下:
1)对于A::=Dβ(D∈VN)且select(A::=Dβ)={b1,b2…bn}
则M[A,bi]=RE(Dβ)/R
表示:用Dβ的逆替换A,重读当前字符.
2)对于A::=aβ(a∈VT)
则M[A,a]= RE(β)/C
表示:用β的逆替换A,继续读入下一字符.
3)对于A::=ε且select(A::=ε)={b1,b2…bn}
则M[A,bi]=RE(ε)/R=ε/R
4)对所有没出现在规则右部的首部的终结符a,
令M[a,a]=RE(ε)/C=ε/C
5)对于#,令M[#,#]=succ,表示分析成功,结束.
6)其他情况属于出错,在分析表中用空白表示.
②递归下降语法分析法
是一种确定的自顶向下分析法。

又称递归子程序分析法。

思想:对文法中每个非终结符(代表语法成分)编写一个子程序(或递归过程),用来识别它所表示的语法范畴。

例:赋值语句S→V:=E
变量 V→i | i(E)
表达式 E→E+T | E-T | T
项 T→T*F | T/F | F
因子 F→F↑P | P
初等量 P→(E) | i
消除左递归:
S→V:=E
V→i | i (E)
E→T { ( + | - ) T }
T→F { ( * | / ) F }
F→P {↑P }
P→(E) | i
赋值语句处理流程图:
变量处理流程图
项处理流程图
初等量处理流程图:
③运算符优先数法
表达式文法G[E]的优先关系矩阵
④SLR(1)语法分析方法





图11 LR(K)分析器的逻辑结构
表达式文法的SLR(1)分析表
三、基本要求:
学生可以从以上三个实验中选做两个。

要求在实验课前仔细阅读实验相关内容,明确实验的目的和要求,然后了解词法分析和语法分析的基本方法,利用一种高级语言(如C语言、C++语言、PASCAL、JA V A语言等),编写无符号数的词法分析程序、逆波兰式生成程序、语法分析程序(选做一种语法分析方法)。

调试程序后,打印程序代码及实验结果,写出实验报告。

四、考核以学生的实验报告、实验内容、实验结果和实验态度为考核依据。

相关文档
最新文档