PL0编译程序实例资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PL/0 语言的EBNF表示
例:PL/0 语言的EBNF表示片断
<程序> ::= <分程序>. <分程序> ::= [<常量说明部分>] [<变量说明部分>] [<过程说明部分>] <语句>
《编译原理》
<常量说明部分> ::= CONST <常量定义> { ,<常量定义> } ;
<常量定义> ::= <标识符> = <无符号整数>
实验报告形式
?级-?班-?组-?题.rar: 成员(学号-姓名): 一、题目 二、分析与设计 三、测试设计 四、问题解答 五、各自的贡献 六、心得 ……
《编译原理》
第二章
PL/0 编译程序
《编译原理》
PL/0编译程序
PL/0 编译程序总体结构
PL/0 语言简介
《编译原理》
<无符号整数> ::= <数字> {<数字>} <变量说明部分> ::= VAR <标识符 > { , <标识符 > } ;
<标识符> ::= <字母> {<字母>|<数字>}
<过程说明部分> ::= <过程首部><分程序>{; <过程说明部分> }; <过程首部> ::= PROCEDURE <标识符> ; ……
PL/0 语言的语义规则
类型、上下文约束与作用域规则
PL/0 语言的EBNF表示
PL/0 语言的语义规则
PL/0 程序示例
《编译原理》
CONST A=10; /*主程序常量说明部分*/ VAR B,C; /*主程序变量说明部分*/ PROCEDURE P; /*主程序过程说明部分*/ VAR D; /*过程P的局部变量说明部分*/ PROCEDURE Q; /*过程P的局部过程说明部分*/ VAR X; /*过程Q的局部变量说明部分*/ BEGIN READ(X); D:=X; Q 的过程体 WHILE X#0 DO CALL P; END; BEGIN WRITE(D); P 的过程体 CALL Q; END BEGIN 主程序的过程体 CALL P; END.
考察规范
《编译原理》
实验共两个题目,占本课程总成绩的15%,其中第一个占8%,第二个 占7%。 各题给分标准: (1)有完善的设计和实现文档,程序可读性好,在要求时间内完成 并提交实验报告,满分; (2)实现正确,程序可读性好,在要求时间内完成,但设计文档和 实验报告存在明显不足,按2/3左右计分; (3)实现正确,程序可读性差,在要求时间内完成,但设计文档和 实验报告存在严重不足,按1/3左右计分; (4)不能完成(包括未接受作业检查的、有抄袭行为的、不能提供 源程序的、无实验报告的),计0分。
实验题目
题目二:预测分析法的实现(3周+1周)
《编译原理》
按预测分析法(即LL(1)分析法)构造语法分析器,并对输入串进行 预测分析
要求及步骤 (1)输入任一给定文法; (2)消除左公共因子和左递归; (3)构造该文法非终结符的FIRST集和FOLLOW集; (4)判断该文法是否为LL(1)文法; (5)若是LL(1)文法,构造该文法的预测分析表; (6)按预测分析法,构造该文法的语法分析器; (7)若是LL(1)文法,输入任一符号串,给出输入串的分析过程和结 果。
造 成分,或称语法单位,为非终结符。 ‘::=’ 该符号的左部由右部定义,可读作‘定义为’ ‘|’ 表示‘或’,即左部可由多个右部定义
‘{ }’ 表示花括号内的语法成分可以重复;在不加上 下界时可重复0到任意次数,有上下界时为可重复次 数的限制
‘[ ]’ 表示方括号内的成分为任选项 ‘( )’ 表示圆括号内的成分优先
类 P-code 虚拟机 PL/0 编译程序的词法分析
PL/0 编译程序的语法分析 PL/0 编译程序的语义分析
PL/0 编译程序的错误处理
PL/0 编译程序的目标代码生成
PL/0编译程序总体结构
T-型图
《编译原理》
PL/0
类P-code
C/Pascal
PL/0编译程序总体结构
实验题目
题目一:多行表达式的计算(4Fra Baidu bibliotek+1周)
有表示多行表达式的<表达式序列>文法如下:
《编译原理》
<表达式序列>-> <表达式> ↙<表达式序列> |<表达式>↙↙ <表达式> -> [<变量>=] [+|-]<项>{(+|-)<项>} <项> -> <因子>{(* | /)<因子>} <因子> -> <无符号数>|<变量>|‘(’ <表达式>‘)’ <无符号数> -> <无符号整数> | <无符号实数> |<变量> <变量> -> <整型变量> | <实型变量> <整型变量> -> i <字母数字串> <实型变量> -> f <字母数字串> 其中的变量无需定义且其作用域为第一次赋值处至最后,整型量占2 个字节,浮点型量占4个字节。假设数据类型转换规则与C语言相一致。 按递归下降分析法设计并实现该文法定义的语言的编译程序。
《编译原理》
PL/0编译程序的组织:一个以语法、语义 分析程序为中心的单遍编译程序
语法、语义 分析程序 类P-code 程序
PL/0 程序
词法分 析程序
代码生 成程序
PL/0 语言简介
《编译原理》
PL/0 语言为一种简化的类Pascal 语言
PL/0 程序示例
PL/0 语言的语法描述图
PL/0 语言的语法描述图
每个语法单位对应一个语法描述图
《编译原理》
一个入口和一个出口的有向图
从入口可到达任何节点 每个节点都可以到达出口 从入口到出口的路径表示该语法单位的 一种合法中间形式(短语)
有两种类型的节点
内的文字表示所用到的其他语法单位 或 内的文字表示单词符号
PL/0 语言的语法描述图
程序 分程序
const , ; var , ; ; procedure ident ; ident
《编译原理》
例:程序和分程序语法单位的语法描述图
分程序
ident
=
.
number
分程序
语句
PL/0 语言的EBNF表示
EBNF 的元符号
《编译原理》
‘< >’ 是用左右尖括号括起来的中文字表示语法构