Introducción
L es probablemente el lenguaje de programación más simple del mundo. Se utiliza únicamente en entornos universitarios y de enseñanza, ya que no posee suficiente potencia como para realizar programas que puedan tener algún tipo de utilidad a parte de la comprensión de la teoría de la computabilidad.
Instrucciones básicas
El número de instrucciones de L es muy reducido. Únicamente utilizaremos las
cuatro siguientes:
- Dejar igual el valor de una variable. Representada como V==, donde V es una
variable cualquiera, se trata de una sentencia vacía que no realiza ninguna
acción, ni añade ninguna funcionalidad extra. Se incluye por razones de
representación de programas (codificación).
- Incrementar el valor de una determinada variable. Simbolizada como V++,
donde V es una variable cualquiera, tiene el efecto de incrementar en una unidad
el valor de esta variable.
- Decrementar el valor de una determinada varaible. Se denota como V--,
donde V es una variable cualquiera, y tiene el efecto de decrementar en una
unidad el valor de la variable. Si esta variable tiene valor 0, éste seguirá
siendo su valor después de la ejecución de la instrucción.
- Salto condicional. Se escribe IF V ( 0 GOTO L, donde V es una variable y
L una etiqueta. Si el valor de V es distinto de 0, entonces la siguiente
instrucción a ejecutra será la que está etiquetada con la etiqueta L. Si el
valor de V es 0 entonces se ejecuta como siguiente instrucción la siguiente del
programa.
Variables
Los programas en L nos servirán para definir funciones sobre números
naturales. El lenguaje tendrá un conjunto de variables cuyos valores serán estos
naturales. De forma teórica no se establece un número máximo de variables a
utilizar, y todas estas se encuentran inicializadas a cero al comenzar la
ejecución del programa en el que aparezcan. Los nombres de las variables se
componen de una letra seguida de un subíndice entre 1 e infinito (si el
subíndice es 1, éste puede ser omitido). Dividimos las variables en tres clases:
- Variables de entrada: Son un número finito de variables cuyo valor no se
inicializa a cero sino al de los valores de entrada de la funcion que estamos
definiendo. Los nombres de estas variables son X1, X2, X3, ...
- Variable de salida: Representa al único valor de salida de la función y
su nombre es Y
- Variables locales: Son las únicas variables que pueden aparecer, además
de las de entrada y la de salida, en un programa en L. Los nombres que reciben
estas variables son Z1, Z2, Z3, ...
Etiquetas
Un programa es una lista (secuencia finita) de instrucciones como las anteriores, cada una de ellas pudiendo estar precedida por una etiqueta. Las etiquetas las definiremos con letras que pueden ir acompañadas de un subindice. Cuando una instruccion está precedida por una etiqueta escribiremos esta entre paréntesis. Los únicos símbolos que pueden denotar etiquetas son A1, B1, C1, D1, S1, A2, B2, C2, D2, S2, A3, ...
Macros
Los programas en L son bastante complicados debido a ser este lenguaje de
bastante bajo nivel. Para hacerlo más sencillo introducimos el concepto de
macro. Estas nos proporcionan la posibilidad de dar un nombre a un fragmento de
código que usemos repetidamente y usarlo en otros programas como una abreviación
suya. A la instrucción que utilizamos como abreviación la llamamos macro, y el
fragmento de código que representa lo llamamos expansión de la macro.
Para definir macros utilizaremos una notación similar al lenguaje L, pero
cambiando los identificadores de variables y de etiquetas. En una macro no se
permite la utilización de las variables ni de las etiquetas propias del lenguaje
L (variables X, Y, Z y etiquetas A, B, C, D, S). Esto evitará confusión a la
hora de expandir la macro.
En su lugar utilizaremos como identificadores de variables locales a la macro a
W1,...,Wn y usaremos como identificadores de etiquetas locales a la macro a
G1,...,Gn o F, este último usado para definir el salto al final de la macro.
Nos interesará que en la expansión de la macro se sustituyan ciertos
identificadores por identificadores propios del programa en el que hemos llamado
a la macro. Para ello utilizaremos los parámetros de la macro, que habrá que
definir en la cabecera de la misma y que los denominaremos T1,...,Tn.