Пример #1
0
def main():

    maze = MyMap.MyMap()
    maze.loadMap()
    arrows = maze.findArrows()

    print(len(arrows))
Пример #2
0
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)
Пример #3
0
	def __init__(self):
		self._globals = MyMap()             	
		self._locals = MyMap()
Пример #4
0
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)