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.