据说,语法不是LL(1)。但是我无法找到原因。我认为它是完美的LL(1),因为它没有左递归,并且没有共同的前缀问题。有人可以澄清吗?
答案 0 :(得分:4)
LL(1)表示可以使用单个标记前瞻构建解析器,而在stmt
中,assignment
和subr_call
都以ID
开头所以解析器只能通过查看第一个标记(ID
)来区分这两种情况。
答案 1 :(得分:0)
来自斯坦福笔记
非正式地,LL(1)没有 左递归制作,并留下了因素。请注意,这些是必要的 LL(1)的条件但不充分,即存在没有左递归的语法或 不是LL(1)的公共前缀。
所以这些是必要的而不是充分的条件。