summaryrefslogtreecommitdiffstats
path: root/src/front/symbols.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/front/symbols.py')
-rw-r--r--src/front/symbols.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/front/symbols.py b/src/front/symbols.py
index f4ab40e..a868d77 100644
--- a/src/front/symbols.py
+++ b/src/front/symbols.py
@@ -1,9 +1,30 @@
class SymbolTable:
def __init__(self):
+ self.symbols = {}
return
- def put(token, id):
- return
+ def put(self, token, id=None):
+ if id and not id.isdigit():
+ raise Exception("Only digits as id possible. '%s' is not a number" % id)
- def get(token):
- return
+ if id == None:
+ if len(self.symbols) <= 0:
+ id = 0
+ else:
+ id = max(self.symbols.values()) + 1
+
+ self.symbols[token] = id
+ return id
+
+
+ def get(self, token):
+ if token in self.symbols:
+ return self.symbols[token]
+
+ return None
+
+ def getOrPut(self, token):
+ if self.get(token):
+ return self.get(token)
+
+ return self.put(token)