丢掉语法文件:用纯 TypeScript 写你的 DSL 解析器
对于大多数 bounded-context 的 DSL 来说,解析器生成器是大材小用。解析器组合子让你可以用与应用相同的语言构建可用的解析器,无需生成代码,也无需构建步骤。
如果你曾经打开过 Yacc 的语法文件,并疑惑为什么构建一门语言需要学习第二门语言,那么你并不孤单。解析器生成器很强大,但对于在 bounded context 中自然涌现的小型 DSL 来说,它们几乎总是大材小用。 你可以用与应用其余部分相同的语言来编写解析器。没有构建步骤,没有语法文件,没有你无法调试的生成代码。…