def __init__(self, programa_compilado, mundo=None, limite_recursion=6500, limite_iteracion=6500): """ Inicializa el ejecutor dados un codigo fuente compilado y un mundo, tambien establece el limite para la recursion sobre una funcion antes de botar un error stack_overflow.""" self.arbol = programa_compilado if mundo: self.mundo = mundo #print mundo.mundo else: self.mundo = kworld() #En la 1,1 orientado al norte self.corriendo = True self.sal_de_instruccion = False self.sal_de_bucle = False self.limite_recursion = limite_recursion self.limite_iteracion = limite_iteracion self.pila_funciones = deque() #La pila de llamadas a funciones #Las anteriores cantidades limitan que tan hondo se puede llegar #mediante recursion, y que tanto puede iterar un bucle, esto para #evitar problemas al evaluar codigos en un servidor. self.profundidad = 0 #El punto inicial en la recursion self.estado = "Ok" #El estado en que se encuentra self.mensaje = "" #Mensaje con que termina la ejecucion
def __init__(self, programa_compilado, mundo=None, limite_recursion=65000, limite_iteracion=65000, limite_ejecucion=200000, debug=False): """ Inicializa el ejecutor dados un codigo fuente compilado y un mundo, tambien establece el limite para la recursion sobre una funcion antes de botar un error stack_overflow.""" self.ejecutable = programa_compilado if mundo: self.mundo = mundo else: self.mundo = kworld() #En la 1,1 orientado al norte self.corriendo = True self.indice = 0 #Marcador con la posición en la cinta de ejecución self.ejecucion = 0 #Contador del número de instrucciones que se han ejecutado self.diccionario_variables = dict() self.sal_de_instruccion = False self.sal_de_bucle = False self.limite_recursion = limite_recursion self.limite_iteracion = limite_iteracion self.limite_ejecucion = limite_ejecucion self.pila = kstack() #La pila de funciones y bucles self.profundidad = 0 #Las anteriores cantidades limitan que tan hondo se puede llegar #mediante recursion, y que tanto puede iterar un bucle, esto para #evitar problemas al evaluar codigos en un servidor. self.estado = "Ok" #El estado en que se encuentra self.mensaje = "" #Mensaje con que termina la ejecucion #Debug self.debug = debug
def __init__ (self, programa_compilado, mundo=None, limite_recursion=65000, limite_iteracion=65000, limite_ejecucion=200000, debug=False): """ Inicializa el ejecutor dados un codigo fuente compilado y un mundo, tambien establece el limite para la recursion sobre una funcion antes de botar un error stack_overflow.""" self.ejecutable = programa_compilado if mundo: self.mundo = mundo else: self.mundo = kworld() #En la 1,1 orientado al norte self.corriendo = True self.indice = 0 #Marcador con la posición en la cinta de ejecución self.ejecucion = 0 #Contador del número de instrucciones que se han ejecutado self.diccionario_variables = dict() self.sal_de_instruccion = False self.sal_de_bucle = False self.limite_recursion = limite_recursion self.limite_iteracion = limite_iteracion self.limite_ejecucion = limite_ejecucion self.pila = kstack() #La pila de funciones y bucles self.profundidad = 0 #Las anteriores cantidades limitan que tan hondo se puede llegar #mediante recursion, y que tanto puede iterar un bucle, esto para #evitar problemas al evaluar codigos en un servidor. self.estado = "Ok" #El estado en que se encuentra self.mensaje = "" #Mensaje con que termina la ejecucion #Debug self.debug = debug
def __init__ (self, programa_compilado, mundo=None, limite_recursion=6500, limite_iteracion=6500): """ Inicializa el ejecutor dados un codigo fuente compilado y un mundo, tambien establece el limite para la recursion sobre una funcion antes de botar un error stack_overflow.""" self.arbol = programa_compilado if mundo: self.mundo = mundo #print mundo.mundo else: self.mundo = kworld() #En la 1,1 orientado al norte self.corriendo = True self.sal_de_instruccion = False self.sal_de_bucle = False self.limite_recursion = limite_recursion self.limite_iteracion = limite_iteracion self.pila_funciones = deque() #La pila de llamadas a funciones #Las anteriores cantidades limitan que tan hondo se puede llegar #mediante recursion, y que tanto puede iterar un bucle, esto para #evitar problemas al evaluar codigos en un servidor. self.profundidad = 0 #El punto inicial en la recursion self.estado = "Ok" #El estado en que se encuentra self.mensaje = "" #Mensaje con que termina la ejecucion
c_fin = 0 if len(sys.argv) == 1: grammar = kgrammar(debug=deb, gen_arbol=True) else: fil = sys.argv[1] grammar = kgrammar(flujo=open(fil), archivo=fil, futuro=True) try: c_inicio = time() grammar.verificar_sintaxis(gen_arbol=True) c_fin = time() #grammar.guardar_compilado('codigo.kcmp', True) #pprint(grammar.arbol) except KarelException, ke: print ke.args[0], "en la línea", grammar.tokenizador.lineno else: mundo = kworld(mochila='inf') runner = krunner(grammar.arbol, mundo) inicio = time() runner.run() fin = time() pprint(runner.mundo.mundo) print runner.mensaje print "tiempo: ", int( (c_fin - c_inicio) * 1000), "milisegundos en compilar" print "tiempo: ", int((fin - inicio) * 1000), "milisegundos en ejecutar" print "total:", int((c_fin - c_inicio) * 1000) + int( (fin - inicio) * 1000), "milisegundos"
c_fin = 0 if len(sys.argv) == 1: grammar = kgrammar(debug=deb, gen_arbol = True) else: fil = sys.argv[1] grammar = kgrammar(flujo=open(fil), archivo=fil, futuro=True) try: c_inicio = time() grammar.verificar_sintaxis(gen_arbol=True) c_fin = time() #grammar.guardar_compilado('codigo.kcmp', True) #pprint(grammar.arbol) except KarelException, ke: print ke.args[0], "en la línea", grammar.tokenizador.lineno else: mundo = kworld(mochila='inf') runner = krunner(grammar.arbol, mundo) inicio = time() runner.run() fin = time() pprint(runner.mundo.mundo) print runner.mensaje print "tiempo: ", int((c_fin-c_inicio)*1000), "milisegundos en compilar" print "tiempo: ", int((fin-inicio)*1000), "milisegundos en ejecutar" print "total:", int((c_fin-c_inicio)*1000) + int((fin-inicio)*1000), "milisegundos"
if len(sys.argv) == 1: grammar = kgrammar(debug=False) else: fil = sys.argv[1] grammar = kgrammar(flujo=open(fil), archivo=fil, futuro=True) try: c_inicio = time() grammar.verificar_sintaxis(gen_arbol=True) grammar.expandir_arbol() c_fin = time() except KarelException, ke: print ke.args[ 0], "en la línea", grammar.lexer.linea, 'columna', grammar.lexer.columna else: casillas_prueba = {(1, 1): {'zumbadores': 0, 'paredes': set()}} mundo = kworld(casillas=casillas_prueba, mochila='inf') runner = krunner(grammar.ejecutable, mundo) inicio = time() runner.run() fin = time() pprint(runner.mundo.mundo) print '---' print runner.estado, runner.mensaje print "---" print "tiempo: ", int( (c_fin - c_inicio) * 1000), "milisegundos en compilar" print "tiempo: ", int((fin - inicio) * 1000), "milisegundos en ejecutar" print "total:", int((c_fin - c_inicio) * 1000) + int(
grammar = kgrammar(flujo=open(fil), archivo=fil, futuro=True) try: c_inicio = time() grammar.verificar_sintaxis(gen_arbol=True) grammar.expandir_arbol() c_fin = time() except KarelException, ke: print ke.args[0], "en la línea", grammar.lexer.linea, 'columna',grammar.lexer.columna else: casillas_prueba = { (1, 1) : { 'zumbadores': 0, 'paredes': set() } } mundo = kworld(casillas = casillas_prueba, mochila='inf') runner = krunner(grammar.ejecutable, mundo) inicio = time() runner.run() fin = time() pprint(runner.mundo.mundo) print '---' print runner.estado,runner.mensaje print "---" print "tiempo: ", int((c_fin-c_inicio)*1000), "milisegundos en compilar" print "tiempo: ", int((fin-inicio)*1000), "milisegundos en ejecutar" print "total:", int((c_fin-c_inicio)*1000) + int((fin-inicio)*1000), "milisegundos"