LL解析器如何评估此表达式?

时间:2010-09-26 18:23:26

标签: parsing ll

考虑这个表达式:

3 + 2 + 2 * 2 =?

它会是14吗?

1 个答案:

答案 0 :(得分:2)

没有。这就是你从左到右的评价中得到的结果。 LL解析器将构建与LR解析器相同的解析树,

  +
 / \
3   +
   / \
  2   *
     / \
    2   2

并将其评估为

(+ 3 (+ 2 (* 2 2))

这是9,正如您所期望的那样。

LL解析器的特殊之处在于,对于受限制的语法,它们总是能够以有限的前瞻从左到右进行。这使它们易于描述和易于解析;一些Pascal是最常见的LL语言之一。

您可以查看leftmost derivation上的Wiki文章。