File size: 1,635 Bytes
d02548d
 
4892b6f
 
d02548d
4892b6f
3fdac99
4892b6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d02548d
4892b6f
d02548d
 
 
3fdac99
d02548d
4892b6f
d02548d
 
4892b6f
 
3fdac99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import gradio as gr
import json
import shutil
from main import main  # Ejecutará el flujo completo que incluye NLP, parser, semántico, código intermedio

def analizar_codigo(archivo):
    try:
        # Guardar archivo subido como entrada.txt (como espera main.py)
        ruta = "entrada.txt"
        shutil.copy(archivo.name, ruta)

        # Ejecutar análisis completo
        main()

        # Leer salida del análisis
        with open("analisis.json", "r", encoding="utf-8") as f:
            resultado = json.load(f)

        # Extraer mensajes combinados
        errores = []
        for err in resultado.get("errores_parser", []):
            errores.append(f"[Parser] {err}")
        for err in resultado.get("errores_semanticos", []):
            errores.append(f"[Semántico] {err['mensaje']}{err['sugerencia']}")
        for c in resultado.get("comentarios", []):
            errores.append(f"[Comentario] {c['comentario']}{c['sugerencia']}")

        salida_texto = "\n".join(errores) if errores else "Análisis completado sin errores."

        return salida_texto, json.dumps(resultado, indent=2)

    except Exception as e:
        return f"Error crítico: {e}", "{}"

gr.Interface(
    fn=analizar_codigo,
    inputs=gr.File(label="Sube tu archivo de código (.txt)"),
    outputs=[
        gr.Textbox(label="Errores, sugerencias y anotaciones"),
        gr.Code(label="Contenido de analisis.json", language="json")
    ],
    title="Analizador Semántico con NLP - Lenguaje de Robots",
    description="Detecta errores, genera sugerencias y transforma comentarios usando Hugging Face NLP."
).launch()