编译语法分析

ads

自顶向下的分析

image.png

最左推导

lm表示的是最左

最右推导

image.png

自顶向下的语法分析采用最左推导方式

image.png

例子

image.png

自顶向下语法分析的通用形式

image.png

预测分析

image.png

文法转换

两个问题

消除直接左递归

image.png

消除直接左递归的一般形式

image.png

消除间接左递归

image.png

提取左公因子

image.png

LL(1)文法

S_文法

image.png

例子

image.png

非终结符的后继符号集follow

image.png

产生式的可选集select

image.png

串首终结符集first

image.png

比如求x的first集合,那么就是求的x—>字符串,所有字符串首字母构成的集合

LL(1)文法定义

image.png

first集和follow集的计算

计算文法符号x的first(x)

计算串X1X2……Xn的first集合

image.png

计算非终结符A的follow(A)

image.png

first集合不能有终结符$,可以有空串εfollow集合可以有终结符$,不可以有空串ε计算需要反复

「算法」

例:表达式文法各产生式的select集

image.png

select的计算:

  1. select(A->空)它的结果是Afollow集合
  2. select(A->B)它的结果是Afirst集合
  3. select(A->a)它的结果就是a

预测分析表

image.png
image.png

递归的预测分析法

image.png

非递归的预测分析法

image.png

image.png
image.png

两种方法进行对比

image.png

预测分析法实现步骤

image.png

预测分析中的错误处理

预测分析中的错误检测

image.png

预测分析中的错误恢复

例子:M表示预测分析表,A表示栈顶的非终结符,a表示当前输入符号。

自底向上的语法分析(考试不考)

image.png

移入-归约分析的工作过程

image.png

移入-归约分析器可采取的4种动作

image.png

移入-归约分析中的关键问题

image.png

分析完了之后,栈中没有推出起始符S

image.png

LR分析法

image.png

LR分析法的基本原理

LR分析表的结构

例子:

LR分析器的工作过程

LR分析算法

image.png

LR(0)项目

image.png

增广文法

image.png

文法中的项目

S已经归约出来了,就是(1)就是接收项目——看例子记住就行

image.png

例子:LR(0)自动机

image.png

LR(0)分析表构造算法——看不懂,不要看

CLOSURE()函数

goto函数

构造LR(0)自动机的状态集

image.png
image.png
image.png

LR(0)分析过程中的冲突

SLR分析

SLR分析法的基本思想

image.png

例子:

image.png

SLR分析表构造算法

image.png

SLR分析中的冲突

image.png

LR(1)分析法

LR(1)分析法的提出

规范LR(1)项目

image.png

等价LR(1)项目

image.png

例子:LR(1)自动机

image.png

赋值语句文法的LR(1)分析表

image.png

例:LR(1)自动机

LALR分析法

LALR分析的基本思想

image.png

例:合并同心项集

合并同心项集时产生归约-归约冲突的例子

image.png

这里合并状态6和状态9,因为它们的左部都是相同的 合并之后:就会发现有归约-归约冲突

合并同心集后,虽然不产生冲动,但是可能会推迟错误的发现

image.png

LR分析中的错误处理

语法制导翻译

什么是语法制导翻译

image.png
image.png


最后编辑于:2024/1/22 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com