6

我希望将 FParsec 用于类似 python 的基于缩进的语言。

我知道这必须在词法分析阶段完成,但 FParsec 没有词法分析阶段。是否可以使用 FParsec,或者,如何在词法分析后提供它?

PD:我是 F# 新手,但在其他语言方面经验丰富

4

1 回答 1

9

是的,这是可能的。

这是 FParsec 作者的相关文章。如果您想更深入地了解该主题,这篇论文可能值得一读。该论文指出,有多个基于 Parsec 的缩进感知解析包,Parsec 是启发 FParsec 的解析器组合器。

FParsec 没有单独的词法分析阶段,而是将词法分析和解析融合到一个阶段。与解析器生成器 (fslex/fsyacc) 相比,使用解析器组合器 (FParsec) 更好地完成 IMO 缩进感知解析。原因是您需要手动跟踪当前缩进并根据上下文报告好的错误消息。

于 2014-11-27T08:33:37.003 回答