- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Antlr 编写了一个 DSL,用于从我的语法文件生成词法分析器和解析器。解析器生成一个抽象语法树,其中包含我可以计算的各种节点(例如函数节点)。在函数节点的代码中,我负责绑定(bind)——检查函数名称和参数类型是否匹配函数库。我在这里有一些简单的缓存来优化函数查找(如果我用两个整数调用 A+B,那么下次我使用加号运算符时很有可能使用 2 个整数)。
最近我一直在阅读有关 DLR 的信息,它似乎旨在适应这种类型的脚本语言实现。乍一看,它看起来不像生成解析器或词法分析器,但它似乎确实有助于实现的其他部分。我想知道改用 DLR 对我的主要优势是什么。
最佳答案
如果您仔细实现绑定(bind),DLR 将为您提供非常强大的缓存机制 - 可能比您自己实际能够做到的优化程度更高。此外,您更有可能获得与其他语言的良好互操作性,因为您将使用“标准”动态对象协议(protocol)。
例如,只需使用 dynamic
类型,C# 4 就可以调用您的语言而无需任何额外工作。为了在没有 DLR 的情况下执行此操作,您必须生成“普通”静态 CLR 类型。
很难确定会有多少优势,因为我们不知道您想使用您的语言做什么,或者它已经做了多少。但是,显然有很多非常聪明的人在从事 DLR 工作——在我看来,如果您正在创建一种在 .NET 上运行的动态语言,那么利用他们的工作是有意义的。
关于.net - 为我的脚本语言切换到 DLR 的主要优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038717/
我在一个较大的 C# 项目的一小部分中使用 DLR,IronPython 是有问题的语言。 对于系统的某些部分,用户可以输入一个小脚本来为它们定制行为。我想要做的是能够限制他们使用无副作用的纯函数或在
首先,我已经阅读Making a CLR/.NET Language Debuggable,但是仍然难以实现。 我编写了一种玩具语言,该语言可以通过生成Linq表达式,然后调用LambdaExpres
.Net 4 将具有 DLR(动态语言运行时)。我知道它将用于 Iron Python 和 Iron Ruby 之类的东西。但这就是它的全部好处吗? DLR 有什么用处? DLR 是如何工作的? 最佳
是否可以从非托管代码(例如 C++ 或 Delphi)调用托管代码,特别是 IronRuby 或 IronPython? 例如,我们有一个用 Delphi 编写的应用程序正在迁移到 C#.NET。我们
我到处都读到 .net 4 中的新 DLR,他们说它的一个很好的用途是反射,并且总是显示的代码片段类似于 dynamic d = GetSomeObject(); d.DoSomething(); d
我打算创建一个 Web 服务,以尽可能快的速度执行大量手动指定的计算,并且一直在探索 DLR 的使用。 抱歉,如果本文很长,请随意浏览并了解总体要点。 我一直在使用 IronPython 库,因为它使
我正在考虑限制使用 C# 的 dynamic 关键字。我的initial time trials令人惊讶 - 100,000 次迭代的性能下降不到一秒(可能是由于 DLR 缓存)。 不过,我无权访问内
我需要 DLR 的帮助。我正在实现 IDynamicMetaObjectProvider 和 DynamicMetaObject,但我在获取预期的返回类型时遇到了一些问题。我在元对象中覆盖了 Bind
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
随着 .NET 4.0 测试版的推出,以及 .NET 动态语言运行时的更广泛的可用性,我猜这些类型的主题将变得“更热”。 我对 DLR 和 PowerShell 之间的概念差异感到困惑。在我看来,如果
我使用 Antlr 编写了一个 DSL,用于从我的语法文件生成词法分析器和解析器。解析器生成一个抽象语法树,其中包含我可以计算的各种节点(例如函数节点)。在函数节点的代码中,我负责绑定(bind)——
我目前正在使用 DLR 执行以下操作来创建和执行简单的 Python 计算: ScriptRuntime runtime = Python.CreateRuntime(); ScriptEngine
我需要指出正确的方向。我已将 Iron Python 脚本宿主嵌入到一个简单的 C# 应用程序中,但现在我需要了解锁定用户生成的 IronPython 或 IronRuby 脚本的安全性的最佳实践。
DLR 层的职责是什么? 最佳答案 来自 http://msdn.microsoft.com/en-us/library/dd233052.aspx 处的文档. The purpose of the
我正在尝试学习如何在 DLR 之上编写简单的脚本语言,方法是使用一个名为 ToyScript 的非常古老的 DLR 示例。但是 ToyScript 似乎不支持以下脚本结构,我想在我的实现中使用它: p
我对 DynamicMethods、表达式树和 DLR 之间的交互和关系有一些疑问。 我知道 LambdaExpression.Compile 在内部使用 ILGenerator 来创建委托(dele
我必须为 .NET 的静态类型语言开发一个编译器,我正在考虑为此使用 DLR,而不是构建所有部分(词法分析器/解析器、语法、语义、代码生成)。 DLR 是否适合这种情况?或者直接为 .NET 构建编译
我刚刚开始尝试更多地了解 .Net VM 基础,但立即被某些东西抛弃了。我知道有一个叫做 DLR 的新东西,它允许 C# 中的所有动态内容和 IronX 语言的运行。但是现在我正在阅读有关这种称为 B
我正在构建一个针对 .NET 的编译器,并且我之前已经直接生成了 CIL,但是生成 DLR 树将使我的生活变得更加轻松。我支持一些动态功能,即运行时函数创建和鸭子类型,但绝大多数代码是完全静态的。 既
来自维基百科关于 DLR 的条目, 看起来 DLR 的目的是为了使用 Python、Ruby 等语言。这就是 DLR 的全部吗?还有其他好处吗?为什么要为 ASP.net 项目或 Winform 应用
我是一名优秀的程序员,十分优秀!