Mostrando entradas con la etiqueta pl. Mostrar todas las entradas
Mostrando entradas con la etiqueta pl. Mostrar todas las entradas

lunes, noviembre 27, 2006

Bucles Do/While/For y Switch

Mantenía el otro día una agria polémica1 con Troty acerca de una frase que comenté sobre las similitudes que existen entre los bucles Do/While/For y un Switch, a tenor de su comportamiento con la instrucción break que aparece en los lenguajes de programación tipo C (C, C++, PHP, Java, Javascript).

Hoy, la confirmación de ese punto de vista no ha llegado del todo, pero acaban de darme más pistas para que la loca idea que aventuré fuera cierta. ¿Por qué?.

Fácil, la estructura subyacente para el tratamiento semántico del lenguaje, es decir, un árbol de síntaxis abstracta, son similares/idénticas. Toma que toma!.

Dicho de otro modo, la forma en que los compiladores/interpretes de los lenguajes manipulan e interpretan las instrucciones Do/While/For/Switch es igual, con alguna que otra peculiaridad, pero esa peculiaridad sólo tiene significado para el programador, como una ayuda extra para facilitarle la vida.

1 Por supuesto que la polémica es ficticia, pero queria utilizar la frase.

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.

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 ...