.net 对于我的脚本语言,切换到DLR的主要优势是什么?
我已经使用Antlr编写了一个DSL,从我的语法文件生成一个lexer和解析器。解析器生成一个抽象语法树,其中包含我可以计算的各种节点(例如函数节点)。在函数节点的代码中,我负责绑定检查函数名和参数类型,以从函数库中查找匹配项。我在这里有一些简单的缓存来优化函数查找(如果我用两个整数调用A+B,那么下次使用加号运算符时很有可能用两个整数).net 对于我的脚本语言,切换到DLR的主要优势是什么?,.net,dsl,dynamic-language-runtime,.net,Dsl,Dynamic Language Runtime,我已经使用Antlr编写了一个DSL,从我的语法文件生成一个lexer和解析器。解析器生成一个抽象语法树,其中包含我可以计算的各种节点(例如函数节点)。在函数节点的代码中,我负责绑定检查函数名和参数类型,以从函数库中查找匹配项。我在这里有一些简单的缓存来优化函数查找(如果我用两个整数调用A+B,那么下次使用加号运算符时很有可能用两个整数) 最近我一直在阅读有关DLR的文章,它似乎是为了适应这种类型的脚本语言实现而设计的。乍一看,它看起来不像是生成了解析器或词法分析器,但它似乎确实有助于实现的其他
最近我一直在阅读有关DLR的文章,它似乎是为了适应这种类型的脚本语言实现而设计的。乍一看,它看起来不像是生成了解析器或词法分析器,但它似乎确实有助于实现的其他部分。我想知道切换到使用DLR对我来说有什么主要优势。完全访问.NET framework是最大的优势。
- 访问.Net基类库和类型
- 访问为.Net编写的第三方库
- 您可以让Microsoft担心API的维护(安全更新等)
- 您可以在VisualStudio中托管该语言
dynamic
类型。为了在没有DLR的情况下实现这一点,您必须生成“普通”静态CLR类型
很难确定这会有多大的优势,因为我们不知道你想用你的语言做什么,或者它已经做了多少。然而,显然有很多非常聪明的人在DLR上工作——在我看来,如果你正在创建一种在.NET上运行的动态语言,那么利用他们的工作是有意义的。谢谢Jon,这里有一些很好的动机,尤其是动态类型。真希望我能在开源果酱上参加你的演讲。只花了5分钟,一点细节都没有。不过,我已经差不多完成了C#Depth的动态章节,所以应该很快就可以使用了。