def main(): maze = MyMap.MyMap() maze.loadMap() arrows = maze.findArrows() print(len(arrows))
def main(): maze = MyMap.MyMap() maze.loadMap() #maze.isObstacle(785,34) #x and y are flipped start = (52, 447) end = (427, 243) path = astar(maze, start, end) maze.printPath(path)
def __init__(self): self._globals = MyMap() self._locals = MyMap()
class SymbolTable: def __init__(self): self._globals = MyMap() self._locals = MyMap() def clearLocalTable(self): self._locals.deleteAll() def defined(self, name): if self._locals.defined(name): return True; elif self._globals.defined(name): return True else: return False def dump(self): if len(self._locals) + len(self._globals) == 0: C.Compiler.showMessage("\n***Symbol tables are empty***\n") else: C.Compiler.showMessage("") C.Compiler.showMessage("***Global Symbol Table***\n") self._dumpOneTable("global") C.Compiler.showMessage("***Local Symbol Table***\n") self._dumpOneTable(self._locals) C.Compiler.showMessage("***End of symbol table dump***\n") C.Compiler.showMessage("") return def get(self, name): if self._locals.defined(name): return self._locals[name] elif self._globals.defined(name): return self._globals[name] else: C.Compiler.setError("Symbol not declared: " + name) raise CompilerException("Symbol not declared: " + name) def insert(self, sym): name = sym.toString() if sym.getScope() == SymbolScope.GLOBAL and self._globals.defined(name): C.Compiler.setError("Duplicate declaration for " + name) if sym.getScope() == SymbolScope.LOCAL and self._locals.defined(name): C.Compiler.setError("Duplicate declaration for " + name) if sym.getScope() == SymbolScope.GLOBAL: self._globals[name] = sym else: self._locals[name] = sym #Private: def _dumpOneTable(self, table): if table == "global": for item in self._globals: symbol = self._globals[item] addr = C.Compiler.long2string(symbol.getAddress()) level = "G" if symbol.getSymbolType() == SymbolType.VARIABLE: symbolType = "VARIABLE" elif symbol.getSymbolType() == SymbolType.ARRAY: symbolType = "ARRAY" elif symbol.getSymbolType() == SymbolType.DEFINED_FUNCTION: symbolType = "DEFINED_FUNCTION" else: symbolType = "FORWARD_FUNCTION" line = symbol.toString() + ", " + addr + ", " + level + ", " + symbolType +"\n" C.Compiler.showMessage(line) else: for item in self._locals: symbol = self._locals[item] addr = C.Compiler.long2string(symbol.getAddress()) level = "L" if symbol.getSymbolType() == SymbolType.VARIABLE: symbolType = "VARIABLE" elif symbol.getSymbolType() == SymbolType.ARRAY: symbolType = "ARRAY" elif symbol.getSymbolType() == SymbolType.DEFINED_FUNCTION: symbolType = "DEFINED_FUNCTION" else: symbolType = "FORWARD_FUNCTION" line = symbol.toString() + ", " + addr + ", " + level + ", " + symbolType +"\n" C.Compiler.showMessage(line)