实验报告:PL0 语言编译器分析
学院: 学号: 姓名:
一、实验目的
通过阅读与解析一个实际编译器(PL/0 语言编译器)的源代码, 加深对编译阶段(包
括词法分析、语法分析、语义分析、中间代码生成等)和编译系统软件结构的理解,并达
到提高学习兴趣的目的。
二、实验要求
(1) 要求掌握基本的程序设计技巧(C 语言)和阅读较大规模程序源代码的能力;
(2) 理解并掌握编译过程的逻辑阶段及各逻辑阶段的功能;
(3) 要求能把握整个系统(PL/0 语言编译器)的体系结构,各功能模块的功能,各模
块之间的接口;
(4) 要求能总结出实现编译过程各逻辑阶段功能采用的具体算法与技术。
三、实验步骤
(1) 根据 PL/0 语言的语法图,理解 PL/0 语言各级语法单位的结构,掌握 PL/0 语言合
法程序的结构;
(2) 从总体上分析整个系统的体系结构、各功能模块的功能、各模块之间的调用关系、
各模块之间的接口;
(3) 详细分析各子程序和函数的代码结构、程序流程、采用的主要算法及实现的功能;
(4) 撰写分析报告,主要内容包括系统结构框图、模块接口、主要算法、各模块程序
流程图等。
四、实验分析
PL/0 语言的 EBNF 表示的理解:
1. 用左右尖括号括起来的中文字表示语法构造成分,或称语法单位,为非终结
符。 用<>表示。
2. 该符号的左部由右部定义,可读作“定义为,用:=表示。
3. 表示“或”,用|表示
4. 花括号表示其内的语法成分可以重复,不加上下界时可重复 0 到任意次数,
有上下界时为可重复次数的限制,用{}表示
PL/0 的解释执行结构: