- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我必须为 .NET 的静态类型语言开发一个编译器,我正在考虑为此使用 DLR,而不是构建所有部分(词法分析器/解析器、语法、语义、代码生成)。
DLR 是否适合这种情况?或者直接为 .NET 构建编译器并避免所有动态调用会更好。
编辑:我确实在没有使用 DLR 提供的任何动态表达式的情况下实现了该语言,而是使用了其他表达式。
在那之后我可以说,当实现一个编译器来直接以 DLR 而不是 IL 为目标时,这要好得多。生成的代码仍然会非常干净。
如果你想看一些代码检查:tigerconverters.codeplex.com/
最佳答案
在这种情况下,DLR 必须为您提供的最好的东西是表达式树。这些是为 LINQ 引入的相同表达式树,但它们已被扩展以支持生成完整程序。与 IL 相比,生成表达式树要简单得多,并且在生成树时会进行大量有用的检查,而不是在生成无效 IL 时难以诊断故障。所以你应该检查 System.Linq.Expressions。要编译并保存到程序集,您需要使用 LambdaExpression.CompileToMethod。
使用这些时唯一动态的是您可以完全避免的 DynamicExpression 节点。
关于c# - 是否可以使用 DLR 开发静态类型语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667332/
我在一个较大的 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 应用
我是一名优秀的程序员,十分优秀!