lunes, noviembre 20, 2006

Los breaks en los lenguajes de programacion

En PL1 he visto como se determinan los break en los lenguajes tipo C (como C, C++, Java, PHP) para que no den errores y se comprueben situaciones como las siguientes:
<?php

if (!isset($hola)) {
echo "Break..";
break;
}

?>
que producirá un error como el siguiente:
Fatal error: Cannot break/continue 1 level in /home/alidhaey/testbreak.php on line 5
Este tipo de cosas, se podrian detectar en el analizador sintactico, pero hacerlo allí supone complicar la gramatica del lenguaje (y sí, los lenguajes de programación tienen gramáticas). La solución alternativa, es detectarlo en una fase posterior, de atribución, en la que se van calculando los valores de los tokens que lo requieran.

Se hace con una variable que lleva el control del anidamiento de los ciclos While/Do/For y del Switch. Si hay break, cuando esta variable esta a cero, se genera el error correspondiente.

Recuerdo, que sin saber nada sobre este tipo de cosas, apliqué una solución parecida para un minilector RSS que hice, que tenia que parsear la corrección semántica de un RSS. La sintáctica me la daba el recorrido del arbol XML del RSS.

No hay comentarios:

Publicar un comentario

Cómo utilizar el servicio Secrets Manager para guardar las claves privadas de SSH

Para guardar la clave privada en el servicio Secrets Manager como un secreto en modo texto sin formato, sigue estos pasos Supongamos que la ...