有许多不同的解决方案可供选择,包括你提供的文章链接,还有一些来自微软的其他示例...
FsLex/FsYacc - 这是 F# 中流行词法分析器和语法分析器 Lex 和 Yacc 的移植版。但不要立刻放弃,如果你以前没有使用过 F#,那么它有一个叫做 "pattern matching" 的功能,可以让你匹配非常复杂的结构(例如遍历树),而不需要大量的 if/else 或者 switch 语句。这非常适合编译语言 - 因为几乎所有 DSL 解决方案都通过将语言解析成 AST(抽象语法树)来工作。在这个 F# 解决方案中,你可以获得一个具有强类型的树形结构。你可以使用F# Parsed Language Started 来开始学习。(也有很多现成的 Lex/Yacc 语法规则可以帮助你)。
SQL Server Modeling Tools(以前叫 "Oslo") - 包含一种称为 M 的语言,以前被分成几个部分之一是 MGrammar。它是一个相当先进的语法分析器,可以节省你比其他语法规则更多的时间 - 代码模式(或通用语法规则)和优先级内置且易于使用。如果你刚开始学习解析,我会推荐这个,因为它带有一个可视化工具 - Intellipad,它具有 3 面板 DSL 模式,你可以在其中输入你的语言和一些示例代码 - 它会显示你输入时的输出 AST - 这是相当高效的。生成的 AST 是一个有效的 M 语言构造器(MGraph),可以与 SQL 和 XML 等服务一起使用。MGrammar 的缺点之一是从 C# 或其他地方遍历 AST 是一个繁琐的过程。没有任何强类型支持,你必须使用对象并通过字符串进行搜索 - 很麻烦并容易出错。MSDN 上有一些示例和 Channel9 上的一些视频,可以帮助你入门,例如这个详细概述
The Visualization and Modeling SDK - 这是一个完整的解决方案,集成在 VS 中,主要侧重于使用 Visual Studio 的设计工具而非代码进行编写。它带有一个最小的语言起始模板来帮助你入门。我没有使用过,无法推荐。
还有许多其他非微软的解决方案,比如你提到的 C# 目标 ANTLR 等。如果你正在重用现有的语法规则,这些解决方案特别有用 - 因为已经有数十种语法规则可供使用。