如何在其他程序代码中使用文本格式?

时间:2012-02-15 12:39:50

标签: c# text dsl declarative

这个问题听起来微不足道,但让我解释一下我的情景。

我正在使用面向对象编程语言(C#),大多数实际执行代码是 procedural ,即一系列语句,有时是分支和循环。相当标准。

现在我遇到了一个处理文本格式(PGN的任务,但它可能是VCard或其他一些自定义格式的其他任务。至少对我而言,使用它的“标准”方式是使用以下组合:

  • 正则表达式
  • if / switch statements
  • for循环
  • 将regexp匹配存储到某个自定义结构中和/或将其输出为某种结果格式

但是,我根本不喜欢这种程序方法 - 正则表达式容易出错,代码通常很难理解和调试,它通常具有相当高的圈复杂性等。

简单地说,我希望它是声明性的,但我不知道要使用哪些工具或库。

我记得当我看到“M”语言的演示时,我认为那正是我正在寻找的。有一种简单的方法来声明我的文本格式的语法,然后该工具会自动将输入字符串解析为文本DSL的内存中表示,我认为也可以将格式转换为另一种格式等。

我也与 JetBrains MPS 背后的人保持联系,这是另一种使用DSL的工具,但我的情景似乎并不是他们所尝试的完美匹配提供。

因此,如果有人知道如何在其他程序代码库中优雅地处理文本格式,我很乐意了解这些选项。

1 个答案:

答案 0 :(得分:1)

查看我的开源项目meta#。我认为这听起来就像你正在寻找的那样。