40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from Hashtable import HashTable
|
|
|
|
|
|
class SymbolTable:
|
|
def __init__(self):
|
|
self.symboltableConstants = HashTable()
|
|
self.symboltableIdentifier = HashTable()
|
|
|
|
def addIdentifier(self, identifier, value):
|
|
self.symboltableIdentifier.insert(identifier, value)
|
|
|
|
def getIdentifier(self, identifier):
|
|
return self.symboltableIdentifier.get(identifier)
|
|
|
|
def getPositionIdentifier(self, identifier):
|
|
return self.symboltableIdentifier.getPosition(identifier)
|
|
|
|
def addConstants(self, constants, value):
|
|
self.symboltableConstants.insert(constants, value)
|
|
|
|
def getConstants(self, constants):
|
|
return self.symboltableConstants.get(constants)
|
|
|
|
def getPositionConstants(self, constants):
|
|
return self.symboltableConstants.getPosition(constants)
|
|
|
|
def __str__(self):
|
|
var = "Identifier Table\n"
|
|
for i in range(self.symboltableIdentifier.capacity):
|
|
element = self.symboltableIdentifier.elementList[i]
|
|
while element is not None:
|
|
var += str(element.key) + " " + str(element.value) + "\n"
|
|
element = element.next
|
|
var += "Constants Table\n"
|
|
for i in range(self.symboltableConstants.capacity):
|
|
element = self.symboltableConstants.elementList[i]
|
|
while element is not None:
|
|
var += str(element.key) + " " + str(element.value) + "\n"
|
|
element = element.next
|
|
return var |