一.语法分析的目的
通过前面的词法分析把源代码拆分成一个一个的token,然后通过上下文无关文法生成语法树。
二.生成语法树有两种方法:自顶向下和自底向上
三.克服自顶向下的左递归问题:
1.通过下面的公式解决各种A-》Aa|b之类的文法
2.左递归有两种:直接左递归和间接左递归
2.1直接左递归(也就是通过上面1的通过公式直接解决)
例题:
2.2间接左递归
1.如何消除:通过代入法,然后再使用上面的一般公式
上面的例题二:通过把A带入B中解决
四.解决回溯问题:
1.为什么会产生回溯:
因为一个分法可能有多个结果,一般结果不是我们需要的,就需要回溯到另一条方向去。
2.消除回溯:
通过分配法把共同的部分提出来,不同的部分用一个非终结符表示。3.例题: