LL(1) 解析 table 中的空列是否意味着它是错误的?

Does an empty column in an LL(1) parsing table mean that it is wrong?

我有一个语法,我被要求构建一个解析 table 并验证它是一个 LL(1) 语法。在构建解析 table 之后,我注意到一些列是空的并且其中没有生产规则。这是否意味着它是错误建造的?或者它不是 LL(1)?或者可能缺少什么?

谢谢。

这没什么好担心的。空列表示有一个永远不会开始生产的终端符号(除其他外)。例如,采用这个简单的 LL(1) 语法:

S → abcdefg

此处,S行中b、c、d、e、f、g列均为空,a列为规则S→abcdefg。更具体地说,增强语法如下所示:

S' → S

S → abcdefg

解析 table 如下所示:

   |    a    | b | c | d | e | f | g
---+---------+---+---+---+---+---+---
 S'|    S    |   |   |   |   |   |
 S | abcdefg |   |   |   |   |   |

请注意,大多数列都是空的。