summaryrefslogtreecommitdiffstats
path: root/src/front/scope.py
blob: 2cc301803dc7e1658fff00766cf2018db013e18e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Scope(object, DictMixin):
    def __init__(self, parent):
        self.parent = parent
        self.__symbols = {}

    def __getitem__(self, key):
        try:
            return self.__symbols[key]
        except KeyError:
            return self.parent[key]

    def __setitem__(self, key, item):
        self.__symbols[key] = item

    def keys(self):
        keys = self.__symbols.keys()
        for key in self.parent.keys():
            if key not in keys:
                keys.append(key)
        return keys