一.语法分析的目的

通过前面的词法分析把源代码拆分成一个一个的token,然后通过上下文无关文法生成语法树。
编译原理 chaptaer08语法分析

二.生成语法树有两种方法:自顶向下和自底向上

编译原理 chaptaer08语法分析

三.克服自顶向下的左递归问题:

1.通过下面的公式解决各种A-》Aa|b之类的文法
编译原理 chaptaer08语法分析
2.左递归有两种:直接左递归和间接左递归
 2.1直接左递归(也就是通过上面1的通过公式直接解决)
编译原理 chaptaer08语法分析
编译原理 chaptaer08语法分析
例题:
编译原理 chaptaer08语法分析
2.2间接左递归
编译原理 chaptaer08语法分析
1.如何消除:通过代入法,然后再使用上面的一般公式
上面的例题二:通过把A带入B中解决编译原理 chaptaer08语法分析

四.解决回溯问题:

1.为什么会产生回溯:
因为一个分法可能有多个结果,一般结果不是我们需要的,就需要回溯到另一条方向去。
编译原理 chaptaer08语法分析
2.消除回溯:
通过分配法把共同的部分提出来,不同的部分用一个非终结符表示。
编译原理 chaptaer08语法分析3.例题:
编译原理 chaptaer08语法分析

相关文章: