summaryrefslogtreecommitdiffstats
path: root/src/front/symbols.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/front/symbols.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/front/symbols.py b/src/front/symbols.py
index a868d77..0f98d83 100644
--- a/src/front/symbols.py
+++ b/src/front/symbols.py
@@ -3,28 +3,28 @@ class SymbolTable:
self.symbols = {}
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)
-
- if id == None:
- if len(self.symbols) <= 0:
- id = 0
- else:
+ def put(self, token, id = None):
+ try:
+ id = int(id)
+ except TypeError:
+ try:
id = max(self.symbols.values()) + 1
-
+ except ValueError:
+ id = 0
+ except ValueError:
+ raise ValueError("only digits as id possible. '%s' is not a number" % id)
+
self.symbols[token] = id
return id
-
def get(self, token):
- if token in self.symbols:
+ try:
return self.symbols[token]
-
- return None
+ except KeyError:
+ return None
def getOrPut(self, token):
- if self.get(token):
- return self.get(token)
-
- return self.put(token)
+ try:
+ return self.symbols[token]
+ except KeyError:
+ return self.put(token)