class SymbolTable: def __init__(self): self.symbols = {} return 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): try: return self.symbols[token] except KeyError: return None def getOrPut(self, token): try: return self.symbols[token] except KeyError: return self.put(token)