summaryrefslogtreecommitdiffstats
path: root/src/front/symbol.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/symbol.py
parenta200c7f8c51ace73295974cc07e9e4a9db38d3e1 (diff)
downloadswppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.tar.gz
swppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.tar.xz
swppy-f720e2d49c6292ccb3de8c9668c99a5b799038b2.zip
add scope, and symbol class, obsoletes SymbolTable
Diffstat (limited to '')
-rw-r--r--src/front/symbol.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/front/symbol.py b/src/front/symbol.py
new file mode 100644
index 0000000..879403f
--- /dev/null
+++ b/src/front/symbol.py
@@ -0,0 +1,34 @@
+class SymbolClass(object):
+ def __init__(self, name):
+ self.name = name
+
+ def __str__(self):
+ return self.name
+
+ def __repr__(self):
+ return "<SymbolClass: %s>" % self
+
+SymbolClass.CONST = SymbolClass("CONST")
+SymbolClass.VAR = SymbolClass("VAR")
+SymbolClass.FUNC = SymbolClass("FUNC")
+
+class SymbolType(object):
+ def __init__(self, name):
+ self.name = name
+
+ def __str__(self):
+ return self.name
+
+ def __repr__(self):
+ return "<SymbolType: %s>" % self
+
+SymbolType.INT = SymbolType("INT")
+SymbolType.BOOL = SymbolType("BOOL")
+
+class Symbol(object):
+ __slots__ = ['cls', 'type', 'value']
+
+ def __init__(self, value, type = SymbolType.INT, cls = SymbolClass.VAR):
+ self.value = value
+ self.type = type
+ self.cls = cls