def main(): if len(sys.argv) != 2: sys.stderr.write('Uso: %s archivo.qu\n' % (sys.argv[0],)) sys.exit(1) nombre_archivo = sys.argv[1] try: contenido = leer_archivo(nombre_archivo) iterador_tokens = tokenizar(contenido, nombre_archivo=nombre_archivo) print('----tokenizacion----') print(unicode(iterador_tokens)) analizador = PClausura1ConTerminador( PValor('A', PPalabra('a')), separador=PPalabra('c'), terminador=PPalabra('b'), ) # analizador = PClausuraConTerminador( # PClausuraConTerminador( # PPalabra('a'), # terminador=PPalabra('b'), # separador=PPalabra('c'), # ), # terminador=PPalabra('z'), # separador=PPalabra('c'), # ) nmatches = 0 for match in analizador.match(iterador_tokens): nmatches += 1 programa, iterador_tokens2 = match print('----arbol sintactico----') print(unicode(programa)) if nmatches == 0: MS = analizador.max_match(iterador_tokens) #for it, prs in MS: # print '--max matches--' # print 'PRS', prs print analizador.mensaje_de_error(iterador_tokens) #if nmatches == 0: # raise QuilomboException(analizador.mensaje_de_error(iterador_tokens)) except QuilomboException as e: print(unicode(e))
def main(): if len(sys.argv) != 2: sys.stderr.write('Uso: %s archivo.qu\n' % (sys.argv[0],)) sys.exit(1) nombre_archivo = sys.argv[1] for ext in ['', '.qu']: if os.path.exists(nombre_archivo + ext): nombre_archivo = nombre_archivo + ext break try: contenido = leer_archivo(nombre_archivo) iterador_tokens = tokenizar(contenido, nombre_archivo=nombre_archivo) tesoro_empezar(iterador_tokens) #print(u'----tokenizacion----').encode('utf-8') #print(unicode(iterador_tokens)).encode('utf-8') analizador = PPrograma() nmatches = 0 matches = analizador.match(iterador_tokens) for match in matches: nmatches += 1 programa, iterador_tokens2 = match print(u'----arbol sintactico----').encode('utf-8') print(unicode(programa)).encode('utf-8') print(u'----resultado de evaluar----').encode('utf-8') estado = estado_inicial() for resultado in evaluar(programa, estado): print 'ESTADO', unicode(estado).encode('utf-8') print(unicode(resultado)).encode('utf-8') break if nmatches == 0: #for it, res in analizador.max_match(iterador_tokens): # print it.posicion(), res raise QuilomboException(analizador.mensaje_de_error(iterador_tokens)) tesoro_terminar() except QuilomboException as e: print(80 * u'-').encode('utf-8') print(unicode(e)).encode('utf-8')