Lithe es un lenguaje de programación experimental creado en 1982 por David Sandberg en la Universidad de Washington que permite al programador elegir libremente su propia sintaxis. Lithe combina las ideas de traducción dirigida por sintaxis y clases de una manera novedosa, dando como resultado un lenguaje notablemente simple pero potente.
Descripción general
El modelo de programación estándar basado en clases no especifica un mecanismo para manipular objetos: mientras que Smalltalk utiliza el paso de mensajes, Lithe utiliza la traducción dirigida por sintaxis (SDT). La SDT es un método para traducir una cadena en una secuencia de acciones , asociando una de estas acciones a cada regla de una gramática. De este modo, el análisis sintáctico de una cadena de la gramática produce una secuencia de aplicaciones de reglas. Lithe combina la SDT con el modelo de clases utilizando clases como alfabeto no terminal de la gramática. Dado que la clase de gramática utilizada por Lithe contiene propiamente todas las gramáticas libres de contexto, se puede describir una amplia variedad de sintaxis, y la SDT proporciona una forma sencilla de asociar semántica a cualquier sintaxis de este tipo.
En Lithe, el paquete es la unidad de modularidad del programa . Un paquete se divide en dos partes: una que define las clases y otra que define las reglas. La ocultación de información se logra exigiendo que tanto las reglas como las clases que se mostrarán fuera del paquete incluyan palabras clave de exportación , y que los nombres de los paquetes de origen se incluyan en la cláusula `with` del paquete consumidor.
Ejemplos
La programación en Lithe consiste en definir pares de reglas y acciones, así como clases. Tomemos como ejemplo la tarea de calcular el valor absoluto de un número:
regla "|" < i: int > "|" devolver int ; { si i<0 entonces devolver -i sino devolver i fin }Una vez definido este par regla-acción, se puede utilizar libremente dentro del código fuente de Lithe; por ejemplo, la siguiente expresión será válida a partir de entonces:
|x - y| + 3
La regla equivalente en BNF sería:
< int > ::= "|" < int > "|"Cabe destacar que la descripción de Lithe intercambia los lados izquierdo y derecho de la descripción BNF y, a continuación, añade un nombre a cada no terminal en el lado derecho de la BNF. Estos nombres se utilizan en la parte de acción, que se expresa como una cadena que se traduce en una secuencia de acciones mediante otros pares regla-acción definidos previamente (algunos de estos pares regla-acción invocarán acciones primitivas).
Enlaces externos
- "Lithe: un lenguaje que combina una sintaxis flexible y clases"
- lenguajes de programación declarativos
- Lenguajes de programación experimentales
- Lenguajes de programación con sintaxis extensible