我有一个非常简单的 DSL,需要在 .Net 平台上解析。我对解析器不是很有经验,我一直在查看使用 F#(fsLex、fsYacc、FParsec)的示例。我对 F# 不是很熟悉,但对 Workflow 和 LINQ 有一些经验。
鉴于 DSL 的简单性,我可以使用 LINQ 来实现词法分析器。工作流(我将使用 V4)对实现语法很有吸引力,因为我更熟悉它,鉴于它的图形性质,它更容易向其他人解释,并且它受到 Microsoft 的支持,并且可能会继续发展。
但是,如果我的 DSL 变得更加复杂,我可以将 WF 实现想象成一个嵌套的活动地狱,并且一个基于 LINQ 的词法分析器也会以同样的方式进行。那时学习 F# 并使用其中一种 F# 工具会更有意义。
我想知道其他人是否比较了 WF 和 F# 解析工具来实现一个简单的 DSL 解释器以及可能的结论。