示例#1
0
文件: T.py 项目: foones/dharma
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))
示例#2
0
文件: q.py 项目: foones/dharma
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')