class SymbolTable: def __init__(self): 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: 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)