【发布时间】:2012-02-15 12:39:50
【问题描述】:
这个问题听起来微不足道,但让我解释一下我的情况。
我正在使用面向对象的编程语言 (C#),大多数实际执行代码是过程,即一系列语句,有时是分支和循环。相当标准。
现在我面临一个处理文本格式的任务(PGN,但它可能是其他任何东西,例如 VCard 或一些自定义格式)。至少对我来说,使用它的“标准”方式是混合使用:
- 正则表达式
- if / switch 语句
- for 循环
- 将正则表达式匹配存储到某个自定义结构中和/或将其输出为某种结果格式
但是,我根本不喜欢这种程序化方法 - 正则表达式容易出错,代码通常很难理解和调试,通常具有相当高的圈复杂度等。
简单地说,我希望它是声明性的,但我不知道要使用什么工具或库。
我记得当我看到“M”语言的演示时,我认为这正是我正在寻找的。有一种简单的方法来声明我的文本格式的语法,然后该工具会自动将输入字符串解析为文本 DSL 的内存表示,我认为也可以将格式转换为另一种格式等。
我还与 JetBrains MPS 背后的人保持联系,这是另一种使用 DSL 的工具,但我的场景似乎与他们试图提供的内容并不完美匹配.
因此,如果有人知道如何优雅地处理程序代码库中的文本格式,我很乐意了解这些选项。
【问题讨论】:
标签: c# text dsl declarative