编译实验一 一、实验目的: 加深对词法分析器的工作过程的理解; 加强对词法分析方法的掌握。 二、实验内容 用C语言实现简单的词法分析程序: 能够使用自己编写的分析程序对简单的程序段进行词法分析。 三、实验要求: 输入源程序。 对源程序进行扫描与分解。 按照词法规则,正确识别源程序中的单词符号: 识别出的单词以的形式输出: 对于源程序中的词法错误,能够做出简单的错误处理,给出简单 的错误提示,保证顺利完成整个源程序的词法分析。 三、简单高级语言 为方便同学们完成编程任务,我们定义了一个简单版本的高级语言。 该语言包含的单词符号、对应的种别码如下表所示: 单词符号 种别码 单词符号 种别码 begin 1 17 2 = 18 then 3 20 while 4
编译实验一 一、实验目的: 加深对词法分析器的工作过程的理解; 加强对词法分析方法的掌握。 二、实验内容: 用 C 语言实现简单的词法分析程序; 能够使用自己编写的分析程序对简单的程序段进行词法分析。 三、实验要求: . 输入源程序。 . 对源程序进行扫描与分解。 . 按照词法规则,正确识别源程序中的单词符号; . 识别出的单词以的形式输出; . 对于源程序中的词法错误,能够做出简单的错误处理,给出简单 的错误提示,保证顺利完成整个源程序的词法分析。 三、简单高级语言 为方便同学们完成编程任务,我们定义了一个简单版本的高级语言。 该语言包含的单词符号、对应的种别码如下表所示: 单词符号 种别码 单词符号 种别码 begin 1 : 17 if 2 := 18 then 3 22
end 23 I(d) 10 > 24 dd* 7 25 + 13 ; 26 、 g ( 27 15 ) 16 0 http:wip.6to23.com/tenax/clib/clib.html/lc库函数查找地址 四、实验检查与报告 1.代码检查 检查办法:每组随机抽取一个同学,以讲解或补齐的方式考察对代码 的理解程度。 检查评分:被抽取的同学表现就是小组这次实验代码完成水平,所以 小组成员相互帮助务必让每个同学都能理解并完成词法分析程序的编 写。 2.实验总结 每个同学对这次词法分析程序编写的过程、遇到的困难、得到的收获 进行分析与总结,交一篇心得
end 6 > 23 l(l|d)* 10 >= 24 dd* 11 = 25 + 13 ; 26 - 14 ( 27 * 15 ) 28 / 16 # 0 http://vip.6to23.com/tenax/clib/clib.html //c 库函数查找地址 四、实验检查与报告 1.代码检查 检查办法:每组随机抽取一个同学,以讲解或补齐的方式考察对代码 的理解程度。 检查评分:被抽取的同学表现就是小组这次实验代码完成水平,所以 小组成员相互帮助务必让每个同学都能理解并完成词法分析程序的编 写。 2.实验总结 每个同学对这次词法分析程序编写的过程、遇到的困难、得到的收获 进行分析与总结,交一篇心得
编译实验二 任务 设计和实现一个扩充P1/0语言的编译系统: PL/0语言扩充要求: 1)数据类型:整型,实型,布尔型,字符型,字符串常量,数组型。 2)增加函数说明和函数调用。 3)过程和函数允许变量形参和值形参传送。 4) 增加For语句和If Then Else语句。 二、设计技术要求: 1)采用编译解释机执行方案,自行设计P代码指令系统。 2)用BNF和语法图表示扩充PL/0语言的文法。 3)用属性翻译文法表示语文动作。 4)有较完善的错误处理功能。 5)词法,语法分析都用手编译程序实现,语法分析程序用递归 子程序法,但表达式分析用算符优先分析法。 6)用c或c++语言实现。 7)对完成的编译系统要进行全面测试,并要有5个以上实例程 序(包括出错处理)的编译执行结果。 三、参考资料 教材第14、15两章及附录PL/0、PASCAL-S源程序。 四、作业要求: 1)任务概述 2)扩充PL/0语言的文法(BNE表示和语法图)。 3) 属性翻译文法(包括各动作符号及各种属性的说明)。 4) P代码指令说明。 5)错误信息表。 6) 系统的设计和实现(包括框图,各.h.c文件说明,所有函数 功能的说明,数据结构,各种表格说明以及函数调用关系图等) 7) 系统工作过程及运行说明(使用操作指南) 8)源程序清单(要求有详细注释)和实例程序运行结果。 9) 体会和讨论
编译实验二 一、 任务 设计和实现一个扩充 Pl/0 语言的编译系统: PL/0 语言扩充要求: 1) 数据类型:整型,实型,布尔型,字符型,字符串常量,数组型。 2) 增加函数说明和函数调用。 3) 过程和函数允许变量形参和值形参传送。 4) 增加 For 语句和 If_Then_Else 语句。 二、设计技术要求: 1) 采用编译_解释机执行方案,自行设计 P 代码指令系统。 2) 用 BNF 和语法图表示扩充 PL/0 语言的文法。 3) 用属性翻译文法表示语文动作。 4) 有较完善的错误处理功能。 5) 词法,语法分析都用手编译程序实现,语法分析程序用递归 子程序法,但表达式分析用算符优先分析法。 6) 用 c 或 c++ 语言实现。 7) 对完成的编译系统要进行全面测试,并要有 5 个以上实例程 序(包括出错处理)的编译执行结果。 三、 参考资料 教材第 14、15 两章及附录 PL/0、PASCAL-S 源程序。 四、作业要求: 1) 任务概述。 2) 扩充 PL/0 语言的文法(BNF 表示和语法图)。 3) 属性翻译文法(包括各动作符号及各种属性的说明)。 4) P 代码指令说明。 5) 错误信息表。 6) 系统的设计和实现(包括框图,各.h .c 文件说明,所有函数 功能的说明, 数据结构,各种表格说明以及函数调用关系图等) 7) 系统工作过程及运行说明(使用操作指南) 8) 源程序清单(要求有详细注释)和实例程序运行结果。 9) 体会和讨论
10)独立完成 五、考核方式 1)提交作业 2)演示和答辩(抽查)
10)独立完成 五、考核方式 1) 提交作业 2) 演示和答辩(抽查)