是否可以使用 fparsec 解析“越位”(基于缩进)语言?

问题描述 投票:0回答:1

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

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

P.D:我是 F# 新手,但在其他语言方面有经验

parsing f# indentation fparsec
1个回答
10
投票

是的,这是可能的。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.