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