class Program: memsize = 20 def __init__(self, stmtList): self.stmtList = stmtList self.nameTable = {} self.funcTable = {} self.listMemory = ListMemory(self.memsize) self.listMemory.pushctx(self.nameTable) def eval(self): self.stmtList.eval(self.nameTable, self.funcTable, self.listMemory) def dump(self): print "Dump of Symbol Table" print "Name Table" for k in self.nameTable: if isinstance(self.nameTable[k], ListElt): print " %s -> %s " % (str(k), self.listMemory.walk(self.nameTable[k])) else: print " %s -> %s " % (str(k), str(self.nameTable[k])) print "Function Table" for k in self.funcTable: print " %s" % str(k) print "" def display(self, depth=0): #print "%sPROGRAM :" % (tabstop*depth) self.stmtList.display(self.nameTable, self.funcTable, self.ListMemory)