Binding 有可能静态地定义动态语言的作用域吗?

Binding 有可能静态地定义动态语言的作用域吗?,binding,syntax,scope,programming-languages,Binding,Syntax,Scope,Programming Languages,我有这个问题。 如果我有一个被划分为单元(子程序)的动态语言。这种语言是否可能具有静态作用域? 如果是,符号表中如何表示?这在每一行中都有一个表示静态链的字段,如Algol风格语言中的a.R.?大多数语言都有静态作用域。这包括许多动态语言(Python、Ruby、Javascript甚至Perl,如果您使用my声明变量) 如果是,它在符号表中是如何表达的 和其他语言一样。如果您遇到一个变量声明(在某些语言中,“声明”表示“变量第一次被赋值”),则会将该变量添加到表中。到达作用域的末尾后,它将从表

我有这个问题。 如果我有一个被划分为单元(子程序)的动态语言。这种语言是否可能具有静态作用域?
如果是,符号表中如何表示?这在每一行中都有一个表示静态链的字段,如Algol风格语言中的a.R.?

大多数语言都有静态作用域。这包括许多动态语言(Python、Ruby、Javascript甚至Perl,如果您使用
my
声明变量)

如果是,它在符号表中是如何表达的


和其他语言一样。如果您遇到一个变量声明(在某些语言中,“声明”表示“变量第一次被赋值”),则会将该变量添加到表中。到达作用域的末尾后,它将从表中删除。在某些语言中,规则可能有点复杂(例如在Javascript中,变量在声明之前就在作用域中),但基本上就是这样。

谢谢您的回答。我的问题是,当我们有一种algol风格的语言时,如何搜索动态语言全局变量激活注册中心有一个指向其父的指针,通过它我们可以找到全局变量。当我们有一个符号表时,它是如何执行的?@user2482648我被你的评论弄糊涂了。您所描述的内容听起来很像动态范围(向上爬升堆栈框架,直到找到变量),但ALGOL是词汇范围,不是吗?无论如何,在词汇范围的语言中,您可以通过在符号表中查找变量来找到它。您看到一个变量,然后执行
sym_table[variable.name]
操作,就得到了变量声明的信息。但这并不是动态语言所特有的。