自顶向下语法分析器与自下到顶

首先定义一个语法

          自顶向下:

                       消除直接左递归:将A-A+b/b可以转换为A-bA'   A'-+bA’/空

                       消除间接左递归:为非终结符规定一个任意的顺序。用循环实现只能从小的到大的推导,就转换为直接左递归了。    防止无限的推导

                        无回溯的实现:构造First Fllow和First+。    实现神喻

                        提取左公因子,防止First+的矛盾的出现无法神喻

                    编码的实现:1:递归下降,利用逻辑上的连续,对神喻的实现直接编码,在选择的内部进行匹配,即在代码内即实现通过First+的选择,逻辑连贯。类似于

NT NT T..... ,NT等就像一个函数,在其内部识别输入,对First+的选择在函数内通过if来实现。

                                     2.表构造法:用栈来实现最左(右)推导,制作一个通过First+选择规则的表,每次推导时通过这个表来选择,进行输入的匹配,匹配成功再通过pop栈来实现下一个的推导,可以减少代码,用栈来实现一步一步的推导。

 

posted @ 2016-05-16 18:37  xhyxhy  阅读(322)  评论(0编辑  收藏  举报