接下来开始研究语法分析的具体实现 ... 总来说有两种 : 自顶向下 和 自底向上 ... 先来看看自顶向下
那么具体到底是怎么实现的呢 :
那么你可以发现, 其实算法实现的过程就是以最左推导的方式在遍历所有可能的情况, 同时遍历所使用的栈, 利用栈做了一个显式的遍历代替了递归... 值得注意的是(决定是否是最左推倒的是最后一句 push(the next right hand side of T) 如果压如栈的顺序是N2先入栈的话, 才算是最左推倒, 而且你会发现由于它核对的顺序是从tokens数组左侧开始的, 所以必须使用最左推导才可以) ...
那么我们来分析一下这个算法本身 :