-
Notifications
You must be signed in to change notification settings - Fork 0
/
SymbolTable.py
42 lines (32 loc) · 1.15 KB
/
SymbolTable.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class SymbolTable:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.elements = {}
def insert(self,id, tipo, attributes):
newE = TableElement(id=id,tipo=tipo,attributes=attributes)
self.elements[id] = newE
def lookup(self,id):
query = self.elements.get(id)
if(query is not None):
return query
else:
return None
def update(self,id,value):
if(self.elements[id] is None):
raise Exception(id + " not found in SymbolTable")
self.elements[id].attributes = value
def delete(self,id):
success = self.elements.pop(id,d=None)
return success
def print(self):
for element in self.elements.values():
element.print()
''' Definition of each element on the table'''
class TableElement:
def __init__(self,tipo,id,attributes):
#super().__init__(*args, **kwargs)
self.tipo =tipo
self.id = id
self.attributes = attributes
def print(self):
print("<type: {0}, id: {1}, attributes: {2}>".format(self.tipo,self.id,self.attributes))