【发布时间】:2012-02-18 12:49:10
【问题描述】:
在网络上,有很多示例展示了如何从 LL(1) 解析器的第一/后集构建上下文无关文法的解析表。
但我没有发现任何与 k>1 案例相关的有用信息。甚至维基百科也没有提供这方面的信息。
我希望它必须在某些方面相似,但指向该领域现有研究的指针会非常有帮助。
【问题讨论】:
-
我有一本关于解析的好书,不幸的是,它跳过了这个话题。我和你一样好奇。不过,据我了解,k > 1 的算法在实践中涉及更多且完全不可行。我想我们会发现的!
-
我不认为这是不可行的。至少 ANTLR 声称可以解析 LL(K)(使用任何 K)语法。
-
使用递归下降解析器很容易,您只需维护一个前瞻列表。然后有很多优化可以改进这一点,例如记忆和回溯。虽然不确定它如何用于表驱动的解析器!你想清楚了吗?
-
不是真的 - 但使用一个肮脏的解决方法:词法分析器部分将一些多符号“包装”为一个,然后我使用 LL(1)。然而,这个解决方案有局限性。我正在使用表驱动解析器,因为它似乎具有最佳性能。
-
从数学的角度来看,first 和 follow 集中的字符串长度为 k 个字符,而不仅仅是单个字符。从实现的角度来看,你如何实际匹配这些取决于你如何表示你的令牌。
标签: parsing context-free-grammar compiler-theory ll