我目前正在开发一种动态类型的语言。
我在开发过程中面临的主要问题之一是如何进行快速的运行时符号查找。
对于一般的、自由的全局和局部符号,我只需对它们进行索引,并让每个范围(全局或局部)保留一个符号数组并使用索引快速查找它们。我对这种方法非常满意。
但是,对于对象中的属性,问题要困难得多。我不能对它们使用相同的索引方案,因为我不知道我当前正在访问哪个对象,因此我不知道要使用哪个索引!
这是 python 中的一个示例,它反映了我希望用我的语言工作的内容:
class A:
def __init__(self):
self.a = 10
self.c = 30
class B:
def __init__(self):
self.c = 20
def test():
if random():
foo = A()
else:
foo = B()
# There could even be an eval here that sets foo
# to something different or removes attribute c from foo.
print foo.c
有谁知道快速查找的任何巧妙技巧?我知道哈希图和展开树,所以如果有任何方法可以像我的其他查找一样高效,我会很有趣。