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 | | | | | |
请注意,大多数列都是空的。
我有一个语法,我被要求构建一个解析 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 | | | | | |
请注意,大多数列都是空的。