diff options
author | Benedikt Böhm <bb@xnull.de> | 2009-05-25 18:45:16 +0200 |
---|---|---|
committer | Benedikt Böhm <bb@xnull.de> | 2009-05-25 18:45:16 +0200 |
commit | f720e2d49c6292ccb3de8c9668c99a5b799038b2 (patch) | |
tree | 061af5030d7ec6d6becfb1c1a7fba16681233c11 /src/front/scope.py | |
parent | a200c7f8c51ace73295974cc07e9e4a9db38d3e1 (diff) | |
download | swppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.tar.gz swppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.tar.xz swppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.zip |
add scope, and symbol class, obsoletes SymbolTable
Diffstat (limited to 'src/front/scope.py')
-rw-r--r-- | src/front/scope.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/front/scope.py b/src/front/scope.py new file mode 100644 index 0000000..2cc3018 --- /dev/null +++ b/src/front/scope.py @@ -0,0 +1,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 |