summaryrefslogtreecommitdiffstats
path: root/src/front/scope.py
diff options
context:
space:
mode:
authorBenedikt Böhm <bb@xnull.de>2009-05-25 18:45:16 +0200
committerBenedikt Böhm <bb@xnull.de>2009-05-25 18:45:16 +0200
commitf720e2d49c6292ccb3de8c9668c99a5b799038b2 (patch)
tree061af5030d7ec6d6becfb1c1a7fba16681233c11 /src/front/scope.py
parenta200c7f8c51ace73295974cc07e9e4a9db38d3e1 (diff)
downloadswppy-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.py20
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