【问题标题】:How to work with textual formats in otherwise procedural code?如何在其他程序代码中使用文本格式?
【发布时间】:2012-02-15 12:39:50
【问题描述】:

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

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

现在我面临一个处理文本格式的任务(PGN,但它可能是其他任何东西,例如 VCard 或一些自定义格式)。至少对我来说,使用它的“标准”方式是混合使用:

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

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

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

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

我还与 JetBrains MPS 背后的人保持联系,这是另一种使用 DSL 的工具,但我的场景似乎与他们试图提供的内容并不完美匹配.

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

【问题讨论】:

    标签: c# text dsl declarative


    【解决方案1】:

    查看我的开源项目meta#。我认为这听起来正是您正在寻找的。​​p>

    【讨论】:

    • 看起来不错。项目的状态如何?从路线图 (metasharp.codeplex.com/…) 来看,它似乎处于开发的早期阶段。
    • 模式匹配功能非常强大。支持构建时转换的 msbuild 任务也不错。 IDE集成等辅助功能很差。语法语言位于不完整的通用语言之上。但核心场景稳定有效,例如:justinmchase.com/2011/10/05/…有一些用户。它需要的是更多的贡献者。有一个 nuget 包,您可以立即试用。
    猜你喜欢
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多