对令牌的语法限制展望未来

时间:2016-03-24 13:13:42

标签: java compiler-construction grammar left-recursion

我知道对于递归下降解析器使用的语法有两种类型的限制。

  1. 语法不能有任何左递归制作
  2. 语法不能超过令牌前瞻。
  3. 我理解第一个,但在第二个限制上有点迷失。为什么这种限制是必要的,没有它就可以生产?

1 个答案:

答案 0 :(得分:2)

通过要求解析器可以根据第一个android 令牌(而不是基于单个令牌)决定使用哪个生产,可以稍微放宽第二个限制。这允许为这类语法提供有效(即线性时间)的解析算法(参见Recursive descent parser)。

在实践中选择k的主要原因似乎是k=1语法的解析器更容易构造。显然,许多计算机语言都是由LL(1)语法生成的。请参阅LL parser

由作品LL(1)S -> A | BA -> a A b | eps组成的语法是非模糊非B -> a B b b | eps语法的示例,因为解析器无法决定哪个生成基于单个令牌使用。 (取自here。)