[编译原理随记]预测分析法-左递归右递归

准备名词:

二义性:同一个记号串,能被多种分析树生成,这样的文法叫做二义性的文法。

超前扫描符号(lookahead):输入中当前被扫描的符号,就是输入串最左边第一个符号,当完成这个符号扫描之后,串的下一个称为lookahead。

非终结符:就是输入串可以继续拆分的符号。

终结符:输入串里面不能再拆分的符号。

预测分析法:是一种自顶向下的语法分析方法,使用超前扫描符号无二义地确定每个非终结符选择的过程,可以无二义处理非终结符。

ε产生式:是一个空串的产生式。

左递归-右递归:

如果有一个这样产生式:

expr \rightarrow expr + term | term

那么就会无限地左递归,预测分析法没办法确认超前扫描符号的位置,所以需要改成右递归才能确认超前扫描符号。

[编译原理随记]预测分析法-左递归右递归_第1张图片 左递归-看不到头部在哪 [编译原理随记]预测分析法-左递归右递归_第2张图片 右递归-看得到头部就是β

 

如果要消除左递归,把左递归变成右递归。设A = expr ,α = + term, β = term得

A \rightarrow \ss R

R \rightarrow \alpha R | \varepsilon

也可以认为这样:

T  →  β T';
T'  →  α T' | ε;

当改成这样子之后,就是消除左递归,可以生成预测分析表。

下级文章:

简单的加减算术翻译器:https://blog.csdn.net/qq_28033719/article/details/106782135

你可能感兴趣的:(编译原理)