В настоящее время я разрабатываю язык с динамической типизацией.
Одна из основных проблем, с которыми я сталкиваюсь во время разработки, - это быстрый поиск символов во время выполнения.
Для общих, бесплатных глобальных и локальных символов я просто индексирую их и позволяю каждой области (глобальной или локальной) хранить массив символов и быстро искать их с помощью индекса. Я очень доволен таким подходом.
Однако с атрибутами в объектах проблема намного сложнее. Я не могу использовать для них ту же схему индексации, потому что я не знаю, к какому объекту я обращаюсь в данный момент, поэтому я не знаю, какой индекс использовать!
Вот пример на 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
Кто-нибудь знает какие-нибудь хитрые приемы для быстрого поиска? Я знаю о хэш-картах и растянутых деревьях, поэтому мне интересно, есть ли какие-то способы сделать это так же эффективно, как мой другой поиск.