【问题标题】:Sub Language C# [closed]子语言 C# [关闭]
【发布时间】:2010-04-26 20:10:23
【问题描述】:

我只是想知道,是否有可能在 C# 或 C++ 中创建类似于“子语言”的东西?或者更好的术语是“扩展”?有人可以提供链接/资源吗?

非常感谢! :)

谢谢 杰森

【问题讨论】:

  • 从问题中不清楚您到底需要什么。尝试详细说明。
  • 我认为您指的是“域特定语言”。谷歌搜索会产生富有成效的结果,例如codeproject.com/KB/recipes/YourFirstDSL.aspx
  • 在没有说出你的意思的情况下将“子语言”之类的词扔到开放空间中可能会引发很多奇思妙想的答案。稍微解释一下您要做什么会更有效。
  • 我认为更好的术语是“扩展”的相反。 “结束”会很讽刺。

标签: c# c++ visual-c++


【解决方案1】:

我想您正在寻找的短语可能是Domain Specific Language

一个例子是 .net 的 Boo

在 Boo 上预订:http://www.manning.com/rahien/

Link on building DSLs for .Net

【讨论】:

    【解决方案2】:

    我一直关注 C++ 编程的方式是,我通过创建新类型来解决新问题来扩展语言。

    【讨论】:

      【解决方案3】:

      这完全取决于您认为什么是“子语言”。

      如果您愿意花时间和精力学习如何使用DLR (Dynamic Language Runtime),您几乎可以创建任何您想要的东西。

      【讨论】:

        【解决方案4】:

        你能说得更具体点吗?您可以在DLR 上构建自己的动态语言。还有here

        【讨论】:

          【解决方案5】:

          为了简单起见,我将贡献“你自己的脚本语言”。 如果您不关心预编译代码,而是希望在运行时编译某些内容,则可以考虑制作自己的脚本语言并为其编写解析器,以便在运行时执行它。

          【讨论】:

            【解决方案6】:

            嗯,.net 是一个多语言平台。当然,您需要编写一个编译器,并且您可以用任何语言编写该编译器,包括 C#。我开始了一个关于writing a brainf**k compiler in C#的系列。

            编译器不一定是Languague-to-IL,您也可以编写一个编译器来编译Language-To-C#,然后使用C#编译器(有些人称这些编译器为预处理器)。您只需要确保您所做的任何事情都可以翻译成 C#(或者 C++,如果这是您想要做的)。然后你可以定义你的关键字和语言标记。

            请记住,创建新的、孤立的编程语言可能会成为未来的维护债务,并且通常是“Not invented here”-综合症过多的标志。

            【讨论】:

              【解决方案7】:

              我使用Irony 实现了 DSL,效果很好。请记住,它仍然是一个 WIP,您可能会发现它非常适合使用。

              【讨论】:

                猜你喜欢
                • 2017-07-31
                • 2021-11-27
                • 1970-01-01
                • 2022-06-16
                • 2017-08-04
                • 2011-03-10
                • 1970-01-01
                • 2014-01-19
                • 2012-11-02
                相关资源
                最近更新 更多