编译原理实验报告——实验三 语法分析分析器.pdf
文本预览下载声明
编译原理实验报告
实验名称: 编写语法分析分析器
实验类型: 验证型实验
指导教师: 庄 燕 滨
专业班级: 10 软件卓越
姓 名: 黄 子 轩
学 号:
电子邮件: 139.com
实验地点: 秋白楼B705
实验成绩:
日期:2013 年 6 月 5 日
1
一、实验目的
通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词
序列进行语法检查和结构分析,进一步掌握常用的语法分析方法。
1、选择最有代表性的语法分析方法,如 LL(1) 语法分析程序、算符优先分析程序和
LR 分析分析程序,并至少完成两个题目。
2 、选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对
象,并且与所选语法分析方法要比较贴切。
二、实验过程
题目一、编写LL(1)语法分析分析器。 要求:
(a ) 根据LL (1)分析法总控制流程图,编写一个分析对象的语法分析程序。可根据自
己的能力选择以下三项(由易到难)之一作为分析算法中的输入:
Ⅰ:直接输入根据已知文法人工构造的分析表M 。
Ⅱ:输入已知文法的集合FIRST (x )和FOLLOW (U ),由程序自动生成该文法的分析表M 。
Ⅲ:输入已知文法,由程序自动生成该文法分析表M 。
(b )程序具有通用性,即所编制的LL (1)语法分析程序能够适用于不同文法以及各种 输
入单词串,并能判断该文法是否为算符文法和算符优先文法。
(c )有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地
判断,此单词串是否为该文法的句子,并要求输出分析过程。
题目二、编写算符优先分析器。 要求:
(a)根据算符优先分析算法,编写一个分析对象的语法分析程序。读者可根据自己的能力
选择以下三项(由易到难)之一作为分析算法中的输入:
Ⅰ:通过构造算符优先关系表,设计编制并调试一个算法优先分析程序
Ⅱ:输入FIRSTVT,LASTVT 集合,由程序自动生成该文法的算符优先关系矩阵。
Ⅲ:输入已知文法,由程序自动生成该文法的算符优先关系矩阵。
(b)程序具有通用性,即所编制的语法分析程序能够使用于不同文法以及各种输入单词串,
并能判断该文法是否为算符文法和算符优先文法。
(c)有运行实例。对于输入的一个文法和一个单词串,所编制的语法分析程序应能正确地
判断,此单词串是否为该文法的句子,并要求输出分析过程。
三、实验结果
(一)LL(1) :
实验结果:
2
(二)算符优先分析:
测试数据:E-E+T|T
T-T*F|F
F-(E)|i
实验结果:(输入串为i+i*i+i)
3
四、讨论与分析
4
确定的自上而下语法分析方法-预测分析法(LL(1)方法):
LL (1)文法的判定: 对于文法G 的每一个非终结符U 的产生式:U→α1|α2 |…|αn 。
如果文法G 是一个LL(1)文法,则有SELECT(U→αi) ∩SELECT(U→αj )=Ф (i≠j ,i,j=1 ,2,…,
显示全部