语法不是LL(1),即使它没有左递归或公共前缀

时间:2015-01-21 12:38:38

标签: compiler-construction grammar

据说,语法不是LL(1)。但是我无法找到原因。我认为它是完美的LL(1),因为它没有左递归,并且没有共同的前缀问题。有人可以澄清吗?

http://awesomescreenshot.com/0ae48mn37b

2 个答案:

答案 0 :(得分:4)

LL(1)表示可以使用单个标记前瞻构建解析器,而在stmt中,assignmentsubr_call都以ID开头所以解析器只能通过查看第一个标记(ID)来区分这两种情况。

答案 1 :(得分:0)

来自斯坦福笔记

  

非正式地,LL(1)没有   左递归制作,并留下了因素。请注意,这些是必要的   LL(1)的条件但不充分,即存在没有左递归的语法或   不是LL(1)的公共前缀。

所以这些是必要的而不是充分的条件。