- ...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 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...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 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...delete-character
- Esta
sección se describe con más detalle en la sección
3.8.3 de la página .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...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.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.