0

我需要手动编写解析器。不能在 LL(*) 和 LR 之间进行选择(也许试试 Earley?)。我应该使用自下而上的解析,因为 LL 的语法会相当困难吗?

4

4 回答 4

2

我会使用递归下降解析器或尾递归下降解析器(即 LL)或自上而下的运算符优先级解析器。

LR 系列解析器,无论是 LR、LALR(k)、LALR(1)、GLR 还是任何太“奇怪”的东西,都无法记住。如果您尝试编写其中之一,您通常最终还是会实现解析器生成器只是为了保持理智。

于 2010-11-23T21:49:20.033 回答
0

试试XText。这是给你的。快速轻松地创建您的语言、解析器和编辑器

于 2010-11-23T21:39:33.823 回答
0

最简单的手工编写的解析器类型是递归下降解析器,它属于 LL 解析器家族。大多数其他类型的解析器要么难以手工编写(LALR 解析器,它使用大型状态转换表),要么用于解析复杂语言(例如用于解析自然语言的 Earley 解析器)。

维基百科有一些关于递归下降解析的好信息。

于 2010-11-23T21:42:26.897 回答
0

这取决于您尝试使用的语法。LL 在语法不确定性方面存在一些问题(您必须使所有内容都没有左递归)。

如果您无法决定,请使用 LR(1) 或 LALR。甚至可能是 GLR。

于 2010-11-23T21:03:39.847 回答