我的一位老师说,Java不能被解析。我不明白这一点,不知道这是不是真的。
我搜索了Java 8的语法,发现了以下内容:https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4
但是,即使我试图分析语法,我也不明白LL语法分析的问题。有没有人知道这是真的,是否知道一个科学的证据,或只是可以向我解释,为什么不可能找到一个语法构造的Java,可以被解析?
非常感谢大家和女孩们。
发布于 2014-09-17 09:26:50
Java 7的Java语言规范说它不是LL(1)
本章提出的语法是参考实现的基础。请注意,它不是LL(1)语法,尽管在许多情况下它将必要的展望降到最低。
如果你发现:
(A|B),两个或多个备选方案的交集共享同一个FIRST集;FIRST(A)在FIRST(B)中也有一个或多个符号你的语法不会是LL(1)。
发布于 2014-09-17 09:00:25
我想是因为左边的递归。LL解析器无法处理左递归,并且在某些情况下指定了当前的Java语法,至少使用Java 7。
当然,众所周知,我们可以构造类似的语法来消除左递归,但是在其当前的规范中,Java语言无法被解析。
https://stackoverflow.com/questions/25885513
复制相似问题