我希望将 FParsec 用于类似 python 的基于缩进的语言。
我知道这必须在词法分析阶段完成,但 FParsec 没有词法分析阶段。可以使用 FParsec,或者,词法分析后如何提供它?
P.D:我是 F# 新手,但在其他语言方面有经验
是的,这是可能的。
这里是 FParsec 作者的相关文章。如果您想更深入地了解该主题,本文可能值得一读。论文指出,有多个基于 Parsec 的缩进感知解析包,Parsec 是激发 FParsec 灵感的解析器组合器。
FParsec 没有单独的词法分析阶段,而是将词法分析和解析融合到一个阶段。 IMO 缩进感知解析最好使用解析器组合器 (FParsec) 完成,而不是解析器生成器 (fslex/fsyacc)。原因是您需要手动跟踪当前缩进并根据上下文报告正确的错误消息。