gpt4 book ai didi

c# - 是否可以使用 DLR 开发静态类型语言?

转载 作者:太空狗 更新时间:2023-10-29 21:19:15 24 4
gpt4 key购买 nike

我必须为 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com