是否可以使动态语言具有静态作用域



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

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

如果是,在符号表中如何表达?

其他语言也是如此。如果遇到变量声明(在某些语言中,"声明"的意思是"第一次将变量赋值给"),则会将该变量添加到表中。一旦到达作用域的末尾,它就会从表中删除。在某些语言中,规则可能有点复杂(例如,在Javascript中,变量甚至在声明之前就在作用域中),但基本上就是这样

最新更新