...LFCIA
Laboratorio de Fundamentos de la Computación e Inteligencia Artificial.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...determinista
La necesidad del no determinismo a nivel léxico viene dada por la finalidad de la implementación que se muestra en este proyecto: la construcción de un entorno integrado de procesamiento de lenguaje natural, concretamente aplicado a la lengua castellana.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ICE
Incremental Context-Free Environment.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...OCR
Optical Character Recognition.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...algebraica
ASF, de Algebraic Specification Formalism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...sintaxis
SDF, de Syntax Definition Formalism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...size=-1>SE
Generic Syntax-directed Editor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...widget
Los widgets son los bloques gráficos básicos estándar mediante los cuales se crea y unifica el aspecto de una interfaz de usuario
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxicos
Ver sección 3.2.1 en la página gif.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...TTLT
Token-Text Link Table, Tabla de enlace componente léxico-texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...collector
Recolector de basura.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...finales
Esta estratagema funciona bien debido a que textedit también cuenta los caracteres de ruptura de línea a la hora de realizar los movimientos con el cursor, de tal modo que si el cursor está situado en el primer carácter de una línea de n caracteres, se necesitan n + 1 movimientos del cursor hacia la derecha para que se sitúe en el primer carácter de la línea siguiente.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...sincronismo
Se debe recordar que las modificaciones sólo pueden afectar a una cadena contigua de caracteres, ya que el texto correspondiente a un componente léxico no puede estar diseminado por distintos lugares del editor y tan sólo se permite editar un componente léxico en cada operación.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ratón
Se puede insertar texto mediante el ratón utilizando los mecanismo de cortar y pegar
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...size=-1>BACKSPACE
En condiciones normales ambas teclas provocan el mismo efecto sobre el texto contenido en una instancia de textedit: borran el carácter que precede a la posición del cursor
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...insert-character
Esta función se describe detalladamente en la sección 3.8.2 de la página gif.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...delete-character
Esta sección se describe con más detalle en la sección 3.8.3 de la página gif.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...texto
Por ejemplo, en muchos lenguajes de programación los saltos de línea actúan como separadores entre componentes léxicos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Es preciso almacenar la longitud debido a que pueden existir caracteres separadores que no formen parte de ningún componente léxico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...análisis
Nótese que en la asociación indirecta por posición, al modificar un componente léxico era preciso buscar las entradas de la TTLT para todos los caracteres incluidos en el ámbito que se viera afectado por la modificación, que podía ser el resto de la línea o el resto del texto dependiento de la existencia o no de modificación en el número de líneas del texto del componente léxico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...editado
(c+1) representa la longitud media del texto de un componente léxico más el carácter de separación con el siguiemte. 10#10 representa el número total de caracteres en el texto. Si lo dividimos por l, la longitud media de cada línea, obtenemos el número medio de caracteres por línea. Por tanto, el número medio de entradas a reorganizar en la TTLT será de 11#11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...simple
Con este término nos referimos tanto la asociación indirecta por posición como la asociación indirecta por deplazamiento.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...texto
El texto correspondiente a 0, 1 o varios componentes léxicos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...relacionado
En la práctica dicho texto será contiguo, aunque se podría tratar con partes discontinuas de texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...distintos
En un B árbol la estrucutura de almacenamiento utilizada por los nodos internos es diferente a la utilizada por los nodos hoja.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...intermedios
Los nodos intermedios se utilizan simultáneamente como enlaces con los nodos de nivel inferior y como enlaces a los datos finales, en este caso los componentes léxicos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...indirecta
Realmente el significado de TTLT en el caso de la asociación multinivel debería ser el de Token Text Link Tree (árbol de enlace componente léxico-texto). Sin embargo, para evitar confusiones, se ha decidido mantener el signicado de las siglas, puesto que sigue teniendo validez
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxicos
En la estrategia de asociación indirecta por posición, el desplazamiento de las entradas en la tabla suponía un gran consumo de recursos debido a que no se conocían a priori las claves de acceso a los componentes léxicos. En el caso presente, sí se conocen los números de líneas que han de ser modificados, por lo que el acceso a las entradas correspondientes es directo. Por consiguiente no es necesario rastrear todo el texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...listas
Esta característica se presenta muy útil en nuestro caso, puesto que la operación más común, aparte del acceso a los elementos, será la reasignación de posiciones en la línea por el desplazamiento provocado por la modificación del texto de un componente léxico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...dominante
Mientras que un texto puede tener miles de líneas, cada línea contendrá un número reducido de componentes léxicos, típicamente menos de una decena.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...árbol
En la asociación indirecta la raíz del árbol la constituiría la propia TTLT.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...variaciones
Relativas a los datos dependientes del texto que deben almacenar (posición, longitud, ...), no a los datos del análisis léxico-sintáctico en ellos almacenados.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Una operación de inserción puede verse como añadir el nuevo texto al principio del siguiente y una operación de borrado como una modificación en la que el nuevo texto es la cadena vacía.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...borrados
Esto es, qué hacer cuando el usuario pretenda realizar una operación de edición que no sea info sobre un componente léxico que había sido borrado previamente por el usuario.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...TTR
Los correspondientes a las posiciones de comienzo del texto de los componentes léxicos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...desplazador
También conocido por su denominación en lengua inglesa, scroller.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...modificación
El texto del componente léxico afectado en el caso de modificación o borrado o el nuevo texto añadido en el caso de una inserción.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...directorios
Cuando se trabaja en AÏDA con nombres de directorios, éstos deben terminar en / (slash), puesto que la concatenación de nombres de directorios con nombres de ficheros se realiza de modo literal.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...adecuado
El valor de opción string se indica en múltiplos de 8 Kilobytes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...multi-idioma
Cuando, como resultado de un cambio de idioma, se va a utilizar un mensaje cuyo texto es mayor que en el idioma original, dicho texto aparecerá truncado en pantalla para adaptarlo al espacio ocupado por el original.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tamaño
Las utilidades incluidas en el módulo edps[ILOG 91c] tienen problemas al tratar con este tipo de fuente. Por ello, en ciertos casos, se sustituye por 9x15
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...campos
Algunas implementaciones del X Window System proporcionan una aplicación denominada xfontsel que facilita enormemente la tarea de selección de fuentes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...X11
X window System versión 11.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...plano
Foreground.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...fondo
Background.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...disponibles
AÏDA crea una variable interna por cada icono que se carga, cuyo nombre coincide con el del icono cargado. Utilizando la función boundp se puede conocer si dicha variable existe (y por consiguiente el icono).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...componentes
Los componentes se han nombrado en mayúsculas para evitar confusiones en los casos en que el componente recibe la misma denominación que otra variable de ICEeditor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...anónima
LE-LISP permite definir funciones anónimas mediante el uso de la forma lambda
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...texto
Secuencia de caracteres terminadas con un carácter de fin de línea, típicamente un carácter de linefeed en los sistema Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...editor
Una línea del editor está formada por la secuencia de caracteres o imágenes que caben en la anchura actual del editor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...imagen
Este tipo de redisplay retardado sólo es posible cuando se utiliza el editor en modo programado, esto es, cuando se utilizan funciones LE-LISP para modificar los contenidos del editor. Las modificaciones interactivas, aquellas realizadas directamente por el usuario haciendo uso del ratón y del teclado, provocan una actualización inmediata de la imagen.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...VBP
Virtual Bitmap Display.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...LE-LISP
Los cursores del VBD se refieren a los bitmaps utilizados para mostrar el puntero del ratón o del cursor de texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ratón
Por tanto habrá un cursor del VBP situado en la posición indicada por el insertion-cursor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tamaño
Se puede modificar el tamaño de una cadena de caracteres utilizando un tamaño de fuente diferente. Sin embargo ciertos tipos de fuentes son difíciles de escalar automáticamente para cualquier tamaño, además de los problemas surgidos como consecuencia de la compatibilidad de fuentes entre servidores X.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...prácticas
Unos iconos y menús demasiado pequeños o demasiado grandes resultan incómodos de manejar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...estéticas
Unos botones de tamaño excesivamente grande o pequeño provocan un cierto rechazo por su apariencia visual.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...TTLT
Token Text Link Table.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...()
Para indicar que no hay un valor establecido. No se puede utilizar la cadena nula poruqe indicaría que se ha introducido un componente léxico sin texto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Esto es así porque se ha establecido la convención de que el componente léxico a insertar irá antes del componente léxico sobre el que se ha pulsado. Se podría haber tomado la convención de que la inserción se realizase después del componente léxico señalado, pero se ha considerado más conveniente la primera opción por resulatr más natural para el usuario.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ratón
Esta información es necesaria para conocer, al finalizar la operación, la parte de la esrcutura de asociación de los componentes léxicos con el texto que deberemos reorganizar. Recordemos que los componentes léxicos puede incluir en su texto cualquier carácter, incluidos saltos de línea.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...selección
Sólo se da información de un componente léxico cada vez.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Este valor sólo ha podido ser establecido, en este instante, para la operación de borrado, con valor de cadena nula
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...sonora
Se ha optado por no permitir el desborrado de componentes léxicos. Para realizar una modificación sobre un componente léxico borrado el usuario debe inserta un nuevo componente léxico, justo antes o después del borrado, con el texto modificado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ordinario
Es decir, un carácter que no implica salto de línea.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Por texto actual se entiende aquel que resulta de aplicar inserciones y borrados válidos sobre el texto inicial del componente léxico y que se encuentra seleccionado utilizando los atributos gráficos correspondientes a la operación de edición que se está llevando a cabo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...editor
Se podría optar por capturar los eventos directamente de la ventana utilizando las funciones del Virtual Bitmap Display de LE-LISP, pero plantea problemas a la hora de establecer una adecuada colaboración con las tareas de edición del textedit.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...borrado
Que en un textedit son la teclas DEL y BACKSPACE. Ambas teclas funcionan de idéntico modo, borrando el carácter situado inmediatamente antes del cursor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Unix
Estas convenciones incluyen el particular modo en que el lenguaje C sitúa los argumentos y el valor devuelto en la pila.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...sistema
El directorio del sistema tiene la forma /usr/ilog/lelisp/system, donde system identifica la arquitectura de la máquina. Por ejemplo, en un IBM RS/6000 el directorio system será /usr/ilog/lelisp/rs6000.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...entrada
Dirección de comienzo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...bajo
Underscore.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...2.x
En el sistema operativo Solaris 2.x (SunOS 5.x) se ha eliminado la opción de enlace incremental -A del editor de enlaces ln. Dicha opción sí se encuentra disponible bajo Solaris 1.x (SunOS 4.1.x). Tengo noticias de que el investigador holandés Casper Dik ha realizado modificaciones en el código fuente de LE-LISP para transformar las llamadas al editor de enlaces en llamadas a las nuevas funciones dlopen y dlclose de Solaris 2.x. Se puede contactar con él mediante e-mail en casper@fwi.uva.nl.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...!
El carácter macro ! ejecuta el comando que se le pasa como argumento, utilizando el shell /bin/sh.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...enlaces
En una máquina Sun4 bajo Solaris 1.1 (SunOS 4.1.3).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...LE-LISP
any * significa `puntero a cualquier tipo C'.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...basura
Garbage collection.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...byte
Strings con un sólo carácter o vectores con un único elemento.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...objetos
Número de caracteres en un string y número de elementos en un vector.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...C
El compilador de C utilizado es el cc estándar incluido en la distribución de SunOS 4.1.3. La sintaxis utilizada se corresponde con el lenguaje C clásico K&R [Kerninghan y Ritchie 85].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...LL_T
El tipo LL_T representa un puntero a cualquier cosa.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...palabra
Consideramos una palabra como el conjunto de caracteres delimitado por separadores, es decir, el conjunto de caracteres cuya presencia en el texto fuente va a dar lugar al reconocimiento de un componente léxico por parte del analizador léxico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...IF
La cadena de caracteres ``IF'' en el código fuente del programa, siempre que no esté dentro de un string.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Generalmente, cada componente léxico se suele identificar mediante un número entero, que es el valor que se pasa al analizador sintáctico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...biyectiva
Los demás identificadores que aparecen en el código fuente (nombres de variables, de funciones, de tipos,...) se resuelven mediante la utilización de tablas de símbolos [Aho et al. 90].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...distintas
La tercera persona del presente de indicativo y la segunda persona del imperativo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...limitado
A lo sumo de unos pocos cientos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...trate
Los sustantivos más comunes hacen el femenino añadiendo al lexema la terminación a. Para construir los plurales se utilizan las terminaciones os y as.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...conjugación
Un caso típico es el del verbo pensar, para cuya conjugación es necesario utilizar las raices pens y piens.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Flex
La versión utilizada ha sido la 2.4.6 de Enero de 1994.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...velocidad
El nombre de Flex proviene de Fast Lex.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...arranque
Start conditions.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...patrón
La parte izquierda de la regla.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...reconocida
Puede ser que no se reconozca el lexema como válido o que se reconozca el lexema pero no se pueda aplicar ninguna de las reglas léxicas para construir la palabra.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...pánico
Panic mode en la literatura anglosajona.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...manera
Los comentarios en Flex se ponen a la manera del C, esto es, acotados entre un /* y un */.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...patrones
El carácter 35#35 se utiliza en Flex para escapar aquellos caracteres que tienen un significado especial en la gramática flex. Esto ocurre por ejemplo con el punto.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...yytext
En la variable yytext se almacena el texto reconocido en cada regla.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...cola
Trailing context.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...arranque
Realmente es como si existiese una condición de arranque implícita llamada INITIAL en todas aquellas reglas que caracen de condición de arranque.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...largos
Por ejemplo, bloques de comentarios de miles de caracteres.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...dinámicamente
Cuando yytext cambia de tamaño es necesario volver a reconocer todos los caracteres del componente léxico, lo cual puede provocar una degradación importante del rendimiento para componentes léxicos muy grandes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...caracteres
Si se desea, se puede cambiar el tamaño por defecto de yytext utilizando un #define para establecer YYLMAX al valor deseado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...palabras
Por ejemplo, la probabilidad de que un sutantivo esté seguido de un verbo y un adverbio, etc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...REJECT
Esta acción fue incorporada en la versión 2.1 de Junio de 1989.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...entrada
Recordemos que para Flex la mejor regla (la mejor elección) es aquella cuyo patrón coincide con la mayor cantidad de caracteres de la entrada. En caso de que dos patrones empaten, se considera mejor el situado antes en el código fuente.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ejecutó
Un aspecto importante a tener en cuenta es que la acción REJECT actúa como una ramificación, de modo que el código situado después de ella en las acciones de las reglas no es ejecutado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Paxon
Se puede contactar con Vern Paxon mediante e-mail en la dirección vern@ee.lbl.gov.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...diccionario
Estas acepciones han sida sacadas del Diccionario Collins English-Spanish editado por Grijalbo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...bellows
El honor de encontrar este ejemplo ha sido del Prof. Jorge Graña. Su habilidad en el manejo de diccionarios es incuestionable.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...variables
Todas las declaraciones de variables y tipos de datos, así como las declaraciones de funciones, deben realizarse en un fichero de cabecera (aquellos fichero C que tienen la extensión .h) que debe ser incluido en la porción del programa Flex reservada a la definición de código C dentro de la sección de declaraciones. La definición de las funciones debe realizarse también en un programa C separado que una vez compilado debe ser enlazado con el analizador léxico generado, utilizándose para ello la instrucción ld con el parámetro -r.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...palabra
La regla sin condición de arranque cuyo patrón está formado únicamente por el punto y cuyas acciones envían al reconocedor a la condición de arranque <S>.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...fix
Un número entero.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ICE
En Bison [Donnelly y Stallman 88] sólo existe la parte de generación de analizadores, los cuales son totalmente autónomos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ICE
Incremental Context-free Environment.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...C
En el capítulo 4 se muestran los tipos de enlaces existente entre los lenguajes LE-LISP y C y cómo se pueden realizar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Flex
No es obligatorio utilizar Flex ni Lex para construir el lexical. Es suficiente con tener un programa C compilado en el que esté definida la función yylex.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...GALENA
GALENA, de Generador de Analizadores para LEnguajes NAturales, es el nombre de un proyecto en desarrollo cuyo fin es el de construir herramientas para el análisis de lenguajes naturales, abarcando los aspectos léxicos, sintácticos y semánticos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...módulos
Si se ha utilizado Flex o Lex, el módulo principal (aquel que contiene las rutinas propias del análisis léxico, incluyendo la función yylex) será lex.yy.c y los demás módulos contendrán rutinas definidas por el usuario.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Lex
O sus equivalentes GNU, Bison y Flex.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...-n
En el resto del texto se supondrá, aunque no se indique explícitamente, que siempre que se llama a bison se utiliza la opción -n. Esta opción le indica a bison que debe generar un analizador sintáctico no determinista incremental en LE-LISP, es decir, un analizador ICE. Si no se específica la opción -n, el analizador generado será de tipo determinista tradicional escrito en C, esto es, un analizador típico de Bison o Yacc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...definiciones
Es decir, entre los delimitadores %{ y %} existentes antes del primer %%.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...reconocido
Este entero se identifica con los componentes léxicos mediante los valores indicados en los #define incluidos en el fichero .tab.h. Tales valores se generan a partir de las definiciones %token incluidas en el programa fuente (con extensión .y).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...parar
La tercera persona del presente de indicativo y la segunda del imperativo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...parir
La primera y la tercera persona del singular del presente de subjuntivo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...INT_LIST
Puesto que los valores de tipo INT_LIST son punteros a valores de tipo struct ITEM_INT_LIST, al valor recibido como argumento por ésta y otras funciones de manejo de listas es realmente un puntero a un puntero a una estructura ITEM_INT_LIST. El doble nivel de indirección es requerido puesto que se va a modificar el valor del puntero incicial de la lista.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...argumento
El argumento que se pasa a esta función es un puntero a una variable de tipo INT_LIST.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...palabra
Al tratarse de analizadores léxicos no deterministas, una misma palabra puede corresponderse con varios tipos de componente léxico distintos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...lista
Es decir, el que ocupaba anteriormente la cabeza de la lista.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxicas
Esto último se debe generalmente a errores tipográficos o del reconocedor óptico de caracteres en caso de que haya sido escaneada.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ERR
Este valor ERR deberá ser igual a 1 más el mayor valor numérico utilizado para designar una categoría. Con ello, el analizador sintáctico, o el programa especial de depuración del analizador léxico, puede determinar que el campo category no contiene un valor válido. Restando ERR de su valor se obtendrá la categoría fallida que se intentó reconocer.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..._yylex
El nombre de la función externa a LE-LISP que se correponde con la función C del analizador léxico generado por Flex.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...modificado
Cada componente léxico tiene asociado un único itemset.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...itemset
Este dato tiene sentido si se borran varios componentes léxicos consecutivos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...{ice}:changes
Esta función es la encargada de añadir un nuevo elemento a dicha lista.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...{change}:new
Esta función crea un nuevo componente de la lista de cambios.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...código
La función newr concatena físicamente a una lista un nuevo elemento.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ICEeditor
El ejecutable incluye todos los recursos de AÏDA necesarios para poder ejecutar ICEeditor, pero no incluye el entorno de desarrollo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...HREF=#manuaidaaidamainps#4659>
Para capturar las imágenes de las aplicaciones AÏDA se ha utilizado el módulo edps [ILOG 91c], que no se incluye de modo estándar en el entorno incial. Para cargarlo es necesario teclear (loadmodule 'edps). Una vez cargado, este módulo proporciona acceso a la función post-edit. Una llamada a esta función, que no tiene argumentos, lanza una aplicación AÏDA que permite almacenar cualquier imagen AÏDA en un fichero PostScript. La imagen almacenada no es un bitmap, sino que se transforman todos los elementos gráficos utilizados para construir la imagen en sus equivalentes PostScript. Con ello se consigue, por ejemplo, que al imprimirlo en una impresora láser, se utilicen las fuentes PostScript para el texto, con lo que se dispondrá de toda la resolución de la impresora, independientemente de la resolución de la pantalla en la cual fue capturada la imagen. Sin embargo, se pueden plantear problemas a la hora de realizar la captura exacta de la imagen que se desea pasar a PostScript. Concretamente, para capturar las imágenes que aparecen en este trabajo, se ha utilizado una versión de AÏDA ejecutándose en una workstation Sun SPARC 10, pero Utilizando como servidor X la consola de un IBM RS/6000 mod. 550 con el gestor de ventanas Motif en la mayoría de los casos, excepto para la captura de los iconos, en que se hizo preciso sustituir mwm por el gestor de ventanas twm.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...obtenido
Dicho ejecutable debe estar accesible en el path del usuario. El fichero debe tener permiso de ejecución.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tiempo
Típicamente del orden de una docena de segundos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...tecleado
Utilizando ICEeditor o cualquier editor de texto como puede ser Emacs o vi.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...load
Como se verá posteriormente, ICEeditor soporta múltiples idiomas para interactuar con el usuario. Sin embargo, cuando en este trabajo se nombre algún elemento gráfico, como por ejemplo una opción de menú, se utilizará el nombre que recibe dicho elemento en la versión en inglés de ICEeditor.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...pegar
Copy and paste.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...léxico
Es decir, se indicará un componente léxico y el texto del nuevo componente léxico será insertado delante de dicho componente léxico.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...directory
Nada más aparecer la ventana de diálogo, el directorio actual se corresponde con el nombre del directorio desde el cual se lanzó ICEeditor. Su contenido va cambiando según el usuario va interactuando con los distintos elementos gráficos de esta ventana.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...edit
El segundo botón de la barra de menú principal.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...color
Color wheel.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...RGB
Red, Green, Blue.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...deseada
La barra representa una escala en la que el tope superior indica el 100% del brillo y el tope inferior ausencia total de brillo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...análisis
Estas ramas opcionales son consecuencia de las ambigüedades de la gramática. El carácter no determinista del analizador ICE permite optener todas las posibles alternativas cuando surgen ambigüedades.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...máquina
Actualmente sólo se soportan sistemas Sun SPARC con SunOS 4.1.x, estaciones DEC bajo Ultrix y estaciones Silicon Graphics bajo IRIX. En todos los casos se debe disponer del X Window System.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...LE-LISP
Para evitar la duplicidad de software instalado y por consiguiente ahorrar espacio en disco, en vez de instalar el LE-LISP incluido en la cinta de distribución de CENTAUR se puede utilizar otra versión previamente instalada, por ejemplo la que viene incluida con AÏDA y MASAÏ. Sin embargo, no es posible ejecutar programas construidos mediante estas últimas herramientas empleando CENTAUR, ya que las librerías de objetos y las ampliaciones de LE-LISP que utilizan no son accesibles desde fuera de sus entornos de desarrollo y de los módulos ejecutables generados mediante el runtime correspondiente.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...size=-1>ENTAUR
La última por el momento, aunque se espera que pronto salga a la luz la versión 2.0, que promete numerosas mejoras.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...recursos
El fichero de recursos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...HREF=#editcentc_maineps#5560>
El tamaño de esta ventana no puede ser modificado, ya que ignora los eventos de redimensionamiento.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...IDENT
Si en vez de + ... se hubiese escrito * ... significaría que lident podría tener 0 ó más descendientes de tipo IDENT.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...size=-1>DF
Syntax Definition Formalism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...size=-1>PML
Pretty Printer Meta Language.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...impresión
El nivel del árbol hasta el que se aplican las reglas descritas en la especificación del pretty printer.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ICE
Incremental Context-free Environment.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...PDT
Push Down Translator.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...dinámicas
Dinamic frames.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...item
En Earley asociado a 115#115.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...1
La primera letra en la cadena de entrada del ejemplo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...2
Este item en Earley estaría asociado a 121#121.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...posible
Esto es, evitando triplicar las partes comunes a los distintos árboles.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...b
Un operador predictor no implica el reconocimiento de ningún símbolo gramatical: los terminales se reconocen con scanner y los no terminales con completer.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...es
Al ser b terminal, realmente no se puede derivar a nada, por lo que el puntero de retroceso debe ser forzosamente el itemset en el cual se reconoció el propio b.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...itemset
En Earley el item generado estaría asociado a 128#128.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...itemset
Eestaría asociado en Earley a la producción 133#133.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...cadena
Este delimitador 122#122 no forma parte realmente de la cadena de entrada, sino que se añade para saber cuando se ha terminado de reconocer totalmente la cadena, hecho que sucede cuando se puede reducir al símbolo inicial 143#143 teniendo 122#122 como componente léxico a analizar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...y
Nótese que los superíndices indican que estos últimos itemsets pertenecen a la cadena de entrada modificada y los primeros a a la original.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...INRIA
Institut National de Recherche en Informatique et en Automatique.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ejecución
Memoria y tiempo de ejecución.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...aplicaciones
Tiempos de desarrollo y configuración necesaria del ordenador utilizado.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...LAP
Lisp Assembly Program.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...Símbolos
Generalmente son nombres de variables o funciones.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...paquete
Un paquete (package) tiene la forma 204#204 y se utiliza para establecer una jerarquía de nombres.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...espacios
Por jemplo (1 total "pepe" 4.2) es una lista de cuatro elementos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...quote
El carácter '.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...collection
Recogida de basura.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...O.O.
Orientación a Objetos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...manera
Suponiendo que year y get-date son funciones ya definidas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...person
Aunque en el mundo real a veces no lo parezca.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...nivel
Que pueden ser descritas a partir de las primitivas GKS.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...destino
Que no tienen por qué ser distintos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ventana
Por ejemplo, que ha sido parcialmente cubierta por otra.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...ILOG
Inteligence Logicielle.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...VBD
Virtual Bitmap Display
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...atómicas
Aquellas que no se pueden descomponer a su vez en imágenes más simples.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...compuestas
Formadas por la combinación de imágenes atómicas.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...coloreadas
Colored boxes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...rellenas
Filled rectangular boxes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...
  • Superposiciones
    Image overlays.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...restringidas
    Constrained views.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...enmarcadas
    Boxed images.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...
  • Cruces
    Crosses.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...unidas
    Jointed connections.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...
  • Texturas
    Patterns.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...dibujo
    Foreground.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...fondo
    Background.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...coloreado
    Colored background plane.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...aplicación
    Cuyo tipo es {aidawindow}, definido en el VBD.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...AÏDA
    Pueden contener cualquier imagen que no sea una aplicación.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...raiz
    La correspondiente al fondo de la pantalla.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...widgets
    Bloques de pantalla estándar que permiten unificar el aspecto de un conjunto de aplicaciones.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...strings
    Sólo admiten cadenas de caracteres como imágenes seleccionables.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...AÏDA
    AÏDA engine.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...INRIA
    Institut National de Recherche en Informatique et en Automatique.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...VTP
    Virtual Tree Processor, un sistema para la manipulación de árboles de sintaxis abstracta.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...size=-1>PML
    Pretty Printer Meta Language.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...size=-1>DF
    Syntax Definition Formalism.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...size=-1>SF
    Abstract Specification Formalism.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...size=-1>SE
    Generic Syntax-directed Editor.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...FIGUE
    Formatage Incremental GraphiqUE.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...{object}
    Equivalente a {application} en AÏDA.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...icon
    En CENTAUR se utiliza la función gfxobj-load-icon en vez de libloadicon para crear un icono a partir de un fichero bitmap almacenado en disco.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...popup
    Los menús popup también se denominan menús de aparición súbita.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...redimensionamiento
    Existe un método scroll-resize genérico en la clase {gfxobj} que no hace nada, de ahí la necesidad de redefinirlo.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...objeto
    A menos que el nuevo objeto que se desee crear no sea más que un subobjeto de alguno ya existente al que tan sólo se desea modificar su comportamiento mediante la redefinición de alguos métodos como redisplay o grow.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...sujeto
    En la terminología utilizada por los creadores de ctedit, se denomina sujeto a los datos almacenados en una instancia de ctedit.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...refresh
    También llamado user-expose.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...clear-window
    Una llamada a la función XClearWindow de la librería Xlib.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
    ...llamada
    El tipo de select '{textual}:all destaca todas las palabras de una expresión. Otro tipo de select es '{textual}:inmediate, que destaca sólo aquellos tokens impresos por una regla.
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    
  • Miguel A. Alonso Pardo
    Thu Nov 20 16:47:01 CET 1997