next up previous contents
Next: 3.6.3 Contrucción del editor Up: 2.4 Asociación indirecta por Previous: 2.4 Asociación indirecta por

2.5.1 Acceso a los componentes léxicos

Cuando el usuario haga click con el ratón sobre el texto con el fin de indicar que desea realizar una operación de modificación sobre el componente léxico asociado al texto que está señalando, se utilizan las coordenadas del texto para construir la clave con la cual acceder a la TTLT y recuperar el TTR asociado al componente léxico indicado. Sin embargo, aun quedan dos cuestiones importantes por determinar:

Respecto a la primera de las cuestiones planteadas, existen en principio dos métodos mediante los cuales proceder a su resolución:

El primer método presenta, en principio, los siguientes inconvenientes:

Una solución inmediata consiste en hacer que las entradas de la TTLT almacenen un puntero a los TTR, como se suele hacer en lenguajes de programación imperativos clásicos como el C o el Pascal. En LISP, al almacenar elementos en una tabla hash lo que realmente se guardan son punteros al objeto, por lo que si no median operaciones explícitas de creación, dos operaciones que almacenen la misma variable en entradas distintas tan solo crean dos enlaces a la misma variable (zona de memoria). Esto tiene efectos perniciosos cuando queremos utilizar, por ejemplo dentro de un bucle, una misma variable para almacenar varios elementos sucesivamente en una tabla hash, ya que en realidad se están almacenando punteros a misma variable con lo cual todas las entradas tendrán asociado el último valor asignado a la variable. Hay que tener mucho cuidado con este tipo de situaciones, por otro lado bastante frecuentes en LISP, aunque en esta ocasión puedan resultar ventajosas.

El tener que crear una entrada en la TTLT por cada carácter presente en el texto hace que la TTLT alcance tamaños prohibitivos para textos medianamente grandes. Esto se convierte en el mayor incoveniente de esta forma de acceso a la TTLT.

El segundo método tiene como ventaja unos menores requerimientos de memoria, ya que para cada componente léxico sólo se almacena una entrada en la TTLT. Como contrapartida se encuentra la mayor craga de procesamiento asociada, ya que para facilitar la interacción con el usuario se permite que éste apunte sobre cualquier carácter del texto y no sólo sobre aquellos mediante los cuales se realiza la indexación de la tabla. En este método se necesita definir un conjunto de funciones cuya misión será buscar el componente léxico al que pertenece el carácter señalado.


next up previous contents
Next: 3.6.3 Contrucción del editor Up: 2.4 Asociación indirecta por Previous: 2.4 Asociación indirecta por

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997