当前位置:网站首页>ZUCC_编译语言原理与编译_实验06 07 语法分析 LL 分析
ZUCC_编译语言原理与编译_实验06 07 语法分析 LL 分析
2022-06-24 07:01:00 【星星不想卷】
编译语言原理与编译实验报告
| 课程名称 | 编程语言原理与编译 |
|---|---|
| 实验项目 | 语法分析 LL 分析 |
实验内容
一 . 阅读ppt 相关内容 ,阅读教材第3章
1、理解Nullable集、First集、 Follow集 概念
- Nullable集:可以推导出空串的非终结符的集合(属于NULLABLE集合意味着不用接受任何输入即可跳过该非终结符)
- 注:只有当产生式右侧的式子都是非终结符并且都可以推导出 ε,才能把产生式左侧的符号加入到NULLABLE集合中。
- FIRST集:FIRST(α)被定义为从 α 推导得到的句子的首符号的集合,α 是任意的文法符号串。
- 可以理解为:FIRST集合是看箭头后面的第一个字符,如果这个字符是非终结符(大写字母),就继续找这个大写字母能推导出的东西,再看后面是不是非终结符,如果还是,继续找,如果是终结符(小写字母)或空串,则把终结符或空串放到相应的FIRST集合中。
- Follow集:对于非终结符A,FOLLOW(A)被定义为可能在某些句型中紧跟在A右边的终结符号的集合。
- 可以理解为:
- 对于开始符号,直接把 # 加进开始符号的FOLLOW集合
- 要求哪个符号的FOLLOW集合,就把所有包含这个符号的式子找出来,但只有这个符号在箭头右边的才有用
- 如果这个符号在最后一个,就把这个符号所在的那个式子的箭头左边的符号的FOLLOW集合加进去
- 如果要求的符号的后面还有非终结符,就把这个非终结符的FIRST集合减去空串加进去,此外,如果要求的这个符号的后面的非终结符和箭头左侧的符号相同,则把箭头左侧的FOLLOW集合加入到要求的符号的FOLLOW集合中
- 如果要求的符号的后面是终结符,就把这个终结符加到FOLLOW集合中
- 在第一个产生式箭头后面的非终结符,都要把开始符号的FOLLOW集合加到相应的FOLLOW集合中
- 可以理解为:
- 阅读
NullableFirstFollow.pdf - 理解 各个集合的构造方法
- https://blog.csdn.net/YyjYsj/article/details/106379238
2、理解 自顶向下分析,自底向上分析的区别
- 自顶向下分析:
- 从根到叶子节点的顺序构建分析树
- 寻找从开始符号到最终句子的最左推导序列
- 分析器输入Token序列
- 自底向上分析:
- 分析树是从叶子节点到根节点的顺序构建的
- 寻找从句子到开始符号的最左归约序列
3、理解确定性自顶向下分析方法,LL(1)分析
LL(1) 分析法又称预测分析法 ,是 一种不带回溯的非递归自上而下分析法。
第一个L 第二个L,数字1 各是什么含义
LL(1)预测分析表构造,中 与First集Follow集的关系,阅读
NullableFirstFollow.pdf理解分析表的构造
4、理解 通过关系图计算First集 Follow集的方法
- 关系图计算First集
- 关系图计算 Follow集
5、理解 递归下降分析程序与文法的对应关系
https://blog.csdn.net/qq_45180475/article/details/107845953
6、通过学习可视化工具,理解LL(1)分析算法
二 . 设有文法
S -> a | ^ |( T )
T -> T , S | S
请消除文法的左递归。

三 . 设有文法
E -> T | T ^ E
T -> int * T | ( E ) | ( S )
S -> int T
请提取文法的左公因子。

四 . 设有如下文法
S -> A
A -> B | A i B
B -> C | B + C
C -> ) A * | (
判断能否将文法改为 LL(1)文法
求每个非终结符的
First集 与Follow集构造 LL(1)预测分析表,给出结论
- 修改如下:
- 修改如下:
五 . 给定以下文法
S -> + S S
S -> * S S
S -> a
给出该文法的预测分析表
提取左公因式:
S -> S' S | a
S' -> + | *

利用预测分析器算法分析+*aaa,判断该句子是否属于上面文法的语言。

边栏推荐
- Which is the first poem of Tang Dynasty?
- SQL intra statement operation
- Robot acceleration level task priority inverse kinematics
- A preliminary study of IO model
- The reason why the qtimer timer does not work
- Catégorie de prêt 5
- Live broadcast review | detailed explanation of koordinator architecture of cloud native hybrid system (complete ppt attached)
- 2021-03-09 COMP9021第七节课笔记
- IIS build wordpress5.7 manually
- (pkcs1) RSA public private key PEM file parsing
猜你喜欢
随机推荐
QPS, TPS, concurrent users, throughput relationship
13 -- remove invalid parentheses
2021-03-16 comp9021 class 9 notes
How to replace the web player easyplayerproactivex Key in OCX?
Blue Bridge Cup_ Queen n problem
2022 mobile crane driver special operation certificate examination question bank and online simulation examination
487. number of maximum consecutive 1 II ●●
一文带你了解Windows操作系统安全,保护自己的电脑不受侵害
dhcp、tftp基础
ZUCC_编译语言原理与编译_实验05 正则表达式、有限自动机、词法分析
11-- longest substring without repeated characters
Qt导出PDF文件的两种方法
Which is the first poem of Tang Dynasty?
[untitled]
Cloudbase database migration scheme
问题3 — messageBox弹框,修改默认背景色
MAYA重新拓布
Markdown 实现文内链接跳转
复习SGI STL二级空间配置器(内存池) | 笔记自用
WPS的JS宏实现图片正文在同一段落的分离方法


















