Estás en:   ArielOrtiz.com > Traductores > Lenguaje Gaila

Lenguaje Gaila

Este documento contiene la especificación técnica del lenguaje de programación Gaila.

Historia

Aquí se enlistan las correcciones, aclaraciones y cambios que ha sufrido este documento.

Elementos Léxicos

En las siguientes secciones, una letra se considera cualquier carácter del alfabeto inglés de la A a la Z mayúscula o minúscula. Un dígito se considera cualquier carácter del 0 al 9. En general los espacios, tabuladores y nuevas líneas sirven como delimitadores entre elementos léxicos, pero fuera de eso son ignorados.

Comentarios

Gaila sólo cuenta con comentarios de línea: comienzan con el carácter ; (punto y coma) y terminan al finalizar la línea.

Identificadores

Un identificador está conformado por una secuencia de uno o más caracteres de letra. Las letras minúsculas y mayúsculas son consideradas diferentes. Los identificadores pueden tener cualquier longitud.

Enteros

Una literal entera es una secuencia de uno o más dígitos. Estas literales están en base diez en un rango de 0 a 231 - 1.

Booleanos

Las literales booleanas son #v y #f.

Sintaxis

Los elementos en mono-espacio representan símbolos terminales (tokens).

programa declaración›* ‹enunciado›*
declaración tipo› ‹identificador
tipo entero | bool
enunciado asignación
| ‹impresión
| ‹condicional
asignación identificador=expresión
impresión imprimeexpresión
condicional siexpresiónentoncesenunciado›* fin
expresión expresión› ‹operador› ‹expresión_simple
| ‹expresión_simple
operador & | < | + | *
expresión_simple identificador
| ‹literal_entera
| ‹literal_booleana
| (expresión)
| -expresión_simple

Semántica

Generalidades

Los enunciados se ejecutan de manera secuencial comenzando desde el primero.

Una literal entera es de tipo entero.

Las literales #v y #f son de tipo bool.

Enunciados

Enunciado Descripción
var = exp Coloca en la variable var el resultado de evaluar exp. var debe estar declarada previamente. var y exp deben ser del mismo tipo.
imprime exp Evalúa exp e imprime el resultado en la salida estándar.
si exp entonces
  enunciados...
fin
Evalúa exp, el cual debe ser de tipo bool. Si resulta en #v, ejecuta enunciados..., de otra forma no tiene efecto alguno.

Operadores

Operador Nombre Tipo Notas
op1 op2 resultado
op1 & op2 Conjunción bool bool bool Devuelve la conjunción lógica entre op1 y op2. Es decir, devuelve #v sólo si tanto op1 y op2 son #v, y devuelve #f en cualquier otro caso.
op1 < op2 Menor entero entero bool Devuelve #v si op1 es menor que op2, #f en otro caso.
op1 + op2 Suma entero entero entero Devuelve la suma aritmética de op1 más op2. Genera una excepción de desbordamiento si el resultado está fuera de rango.
op1 * op2 Multiplicación entero entero entero Devuelve el producto aritmético de op1 por op2. Genera una excepción de desbordamiento si el resultado está fuera de rango.
- op1 Negación entero N/A entero Devuelve la negación aritmética de op1. Genera una excepción de desbordamiento si el resultado está fuera de rango.
© 1996-2009 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
Desarrollado en Django | Licencia de Creative Commons | XHTML válido | CSS válido