69 lines
2.6 KiB
Python
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() |