原文链接请访问https://code-child.cn
自顶向下的分析
最左推导
lm表示的是最左
最右推导
自顶向下的语法分析采用最左推导方式
例子
自顶向下语法分析的通用形式
预测分析
文法转换
两个问题
消除直接左递归
消除直接左递归的一般形式
消除间接左递归
提取左公因子
LL(1)文法
S_文法
例子
非终结符的后继符号集follow
产生式的可选集select
串首终结符集first
比如求x的first集合,那么就是求的x—>字符串,所有字符串首字母构成的集合
LL(1)文法定义
first集和follow集的计算
计算文法符号x的first(x)
计算串X1X2……Xn的first集合
计算非终结符A的follow(A)
计算需要反复
算法
例:表达式文法各产生式的select集
预测分析表
递归的预测分析法
非递归的预测分析法
例
两种方法进行对比
预测分析法实现步骤
预测分析中的错误处理
预测分析中的错误检测
预测分析中的错误恢复
例子:
M表示预测分析表,A表示栈顶的非终结符,a表示当前输入符号。
自底向上的语法分析(考试不考)
例
移入-归约分析的工作过程
移入-归约分析器可采取的4种动作
移入-归约分析中的关键问题
分析完了之后,栈中没有推出起始符S
LR分析法
LR分析法的基本原理
LR分析表的结构
例子:
LR分析器的工作过程
LR分析算法
LR(0)项目
增广文法
文法中的项目
S已经归约出来了,就是
(1)
就是接收项目——看例子记住就行
例子:LR(0)自动机
LR(0)分析表构造算法——看不懂,不要看
CLOSURE()函数
goto函数
构造LR(0)自动机的状态集
LR(0)分析过程中的冲突
SLR分析
SLR分析法的基本思想
例子:
SLR分析表构造算法
SLR分析中的冲突
LR(1)分析法
LR(1)分析法的提出
规范LR(1)项目
等价LR(1)项目
例子:LR(1)自动机
赋值语句文法的LR(1)分析表
例:LR(1)自动机
LALR分析法
LALR分析的基本思想
例:合并同心项集
合并同心项集时产生归约-归约冲突的例子
文章来源:https://www.toymoban.com/news/detail-455516.html
合并同心集后,虽然不产生冲动,但是可能会推迟错误的发现
文章来源地址https://www.toymoban.com/news/detail-455516.html
LR分析中的错误处理
到了这里,关于编译原理——语法分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!