ParamManagerScripts/backend/script_groups/TwinCat/test_enhanced_converter.py

69 lines
2.6 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script de prueba para el convertidor LAD mejorado
"""
from lad_to_pseudocode_converter_enhanced import EnhancedLadConverter
def test_enhanced_converter():
"""Prueba el convertidor mejorado"""
print("=== Convertidor LAD Mejorado ===")
try:
# Crear el convertidor
converter = EnhancedLadConverter()
# Parsear el archivo
print("Parseando INPUT.EXP...")
converter.parse_file(".example/INPUT.EXP")
print(f"Redes encontradas: {len(converter.networks)}")
# Mostrar detalles de las primeras redes
for i, network in enumerate(converter.networks[:10]):
print(f"\n--- Red {network.id} ---")
print(f"Comentario: {network.comment}")
print(f"Contactos: {len(network.contacts)}")
print(f"Asignaciones: {len(network.assignments)}")
print(f"Function Blocks: {len(network.function_blocks)}")
# Mostrar detalles de asignaciones
for j, assignment in enumerate(network.assignments[:3]):
print(f" Asignación {j+1}:")
if assignment['conditions']:
conditions = [f"{'NOT ' if c.negated else ''}{c.name}" for c in assignment['conditions']]
print(f" Condiciones: {' AND '.join(conditions)}")
if assignment['target_var']:
print(f" Variable destino: {assignment['target_var']}")
if assignment['function_name']:
print(f" Function Block: {assignment['function_name']}")
if assignment['operator']:
print(f" Operador: {assignment['operator']}")
if assignment['operands']:
print(f" Operandos: {assignment['operands']}")
# Convertir a pseudocódigo
print("\n=== Generando pseudocódigo ===")
structured_code = converter.convert_to_structured()
# Guardar archivo
output_file = "INPUT_enhanced_pseudocode.txt"
converter.save_to_file(output_file)
# Mostrar las primeras líneas
print("\n=== Primeras líneas del resultado ===")
lines = structured_code.split('\n')
for i, line in enumerate(lines[:50]):
print(f"{i+1:3d}: {line}")
return True
except Exception as e:
print(f"Error: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
test_enhanced_converter()