【问题标题】:What are the main advantages of switching to DLR for my scripting language?为我的脚本语言切换到 DLR 的主要优势是什么?
【发布时间】:2009-06-24 22:30:55
【问题描述】:

我使用 Antlr 编写了一个 DSL,以从我的语法文件生成词法分析器和解析器。解析器生成一个抽象语法树,其中包含我可以计算的各种节点(例如函数节点)。在函数节点的代码中,我负责绑定——检查函数名称和参数类型是否与函数库匹配。我在这里有一些简单的缓存来优化函数查找(如果我用两个整数调用 A+B,那么下次我使用加号运算符时很有可能使用 2 个整数)。

最近我一直在阅读有关 DLR 的信息,它似乎旨在适应这种类型的脚本语言实现。乍一看,它看起来不像生成解析器或词法分析器,但它似乎确实有助于实现的其他部分。我想知道改用 DLR 对我的主要优势是什么。

【问题讨论】:

    标签: .net dsl dynamic-language-runtime


    【解决方案1】:

    如果您仔细实现绑定,DLR 将为您提供一个非常强大的缓存机制 - 可能比您自己实际能够做到的优化程度更高。此外,您更有可能获得与其他语言的良好互操作性,因为您将使用“标准”动态对象协议。

    例如,只需使用 dynamic 类型,C# 4 就可以调用您的语言而无需任何额外工作。为了在没有 DLR 的情况下执行此操作,您必须生成“普通”静态 CLR 类型。

    很难确定会有多少优势,因为我们不知道您想用您的语言做什么,或者它已经做了多少。但是,显然有很多非常聪明的人在从事 DLR 工作——在我看来,如果您正在创建一种在 .NET 上运行的动态语言,那么利用他们的工作是有意义的。

    【讨论】:

    • 感谢 Jon,那里有几个很好的动机,尤其是动态类型。希望我能参加你在开源大会上的演讲。
    • 只有 5 分钟 - 完全没有细节。不过,我几乎完成了深入了解 C# 的动态章节,所以应该很快就会提供。
    【解决方案2】:

    对 .NET 框架的完全访问是最重要的。

    【讨论】:

      【解决方案3】:
      • 访问 .Net 基类库和类型
      • 访问为 .Net 编写的第三方库
      • 您可以让 Microsoft 担心 API 的服务(安全更新等)
      • 您可以在 Visual Studio 中托管该语言

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 2011-01-07
        • 1970-01-01
        • 2010-09-11
        • 2023-04-10
        • 1970-01-01
        相关资源
        最近更新 更多