gpt4 book ai didi

c# - 学习 DLR(如何在其上实现一种语言)

转载 作者:行者123 更新时间:2023-11-30 12:46:28 25 4
gpt4 key购买 nike

我正在尝试学习如何在 DLR 之上编写简单的脚本语言,方法是使用一个名为 ToyScript 的非常古老的 DLR 示例。但是 ToyScript 似乎不支持以下脚本结构,我想在我的实现中使用它:

print b()
def b() {
return 1
}

它引发异常,与大多数静态编译语言完全一样。'

如果脚本遵循“静态语言范式”:

def b() { 
return 1
}
print b()

ToyScript 可以正常工作。

我的问题是:前者应该如何在 DLR 中完成?

[显然我正在寻找解决方案的描述,而不是解决方案本身:)]

最佳答案

有几种可能的实现方式。第一个是要求执行来创建一个函数。通过这种方式,您无法在通过执行创建函数之前调用函数。第二种方法是在解析代码和执行全局脚本时创建所有函数。通过这种方式,函数声明可以出现在代码的任何地方,因为函数在任何执行之前就已经创建好了。缺点是无论是否调用它们,您都需要创建所有函数。然后有一个中间的方式;第一次解析代码时,将函数的抽象语法树 (AST) 存储在函数表中。然后当你想调用一个函数时,在函数表中查找函数声明,然后从 AST 中编译或解释。比较以下两个 JavaScript 代码片段,您就会有一个好主意。

console.log(b());
function b() {
return 1;
}

console.log(b());
var b = function() {
return 1;
}

关于c# - 学习 DLR(如何在其上实现一种语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291613/

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