Parsing 为什么向前看最多1个输入令牌?

Parsing 为什么向前看最多1个输入令牌?,parsing,lookahead,ll,Parsing,Lookahead,Ll,我目前正在尝试实现LL解析器,但我有一个问题。 我需要提前查看最多1个输入令牌,以验证用户的输入是否正确 语法正确还是因为其他原因?有许多不同类型的解析算法。您正在描述的一个被称为LL(1),根据定义,它只使用一个lookahead标记。然而,还有其他解析算法使用了更多的前瞻性。例如,LL(2)解析器使用两个先行标记,而LL(*)解析器具有无限的先行标记。有些语法的一个先行标记是不够的(也就是说,语法是LL(2),但不是LL(1))。下面是一个例子: → n | n+S 试着找出为什么一个前瞻标

我目前正在尝试实现LL解析器,但我有一个问题。 我需要提前查看最多1个输入令牌,以验证用户的输入是否正确
语法正确还是因为其他原因?

有许多不同类型的解析算法。您正在描述的一个被称为LL(1),根据定义,它只使用一个lookahead标记。然而,还有其他解析算法使用了更多的前瞻性。例如,LL(2)解析器使用两个先行标记,而LL(*)解析器具有无限的先行标记。有些语法的一个先行标记是不够的(也就是说,语法是LL(2),但不是LL(1))。下面是一个例子:

→ n | n+S

试着找出为什么一个前瞻标记不够,但两个标记就足够了


解析算法试图将前瞻令牌的数量保持在较低水平的原因是为了简单和高效。随着前瞻令牌数量的增加,驱动解析器所需的解析表的大小也会增加,构建这些表的复杂性也会增加。

@S7\u 0我不确定是否有一种方法可以在不经过反复试验的情况下确定这一点。很抱歉