next up previous contents
Next: 6.3.7 Recuperación de información Up: 6.3 Integración con el Previous: 6.3.5 Actualización mediante reglas

6.3.6 Actualización no determinista

La actualización no determinista de los componentes léxicos está relacionada con la utilización de las condiciones de arranque correspondientes a la salida y a la detección de errores.

La condición de salida

A esta condición de arranque se llega a partir de la regla sin condición de arranque cuyo patrón es el punto. Con ello se indica que ya se han reconocido todas los posibles componentes léxicos para una palabra dada.

En este momento se dispone de la información concerniente a la porción de texto que constituye la palabra, por lo que se puede establecer el campo word de la variable token. Ciertamente, esta información ya se conoce cuando se finaliza la cadena de condiciones de arranque para cada análisis léxico de la palabra. Sin embargo, este es el único lugar en el que se puede determinar con seguridad que no se va a realizar ningún análisis más, a nivel léxico, de esta palabra. Por tanto es el lugar idóneo para guardar esta información, ya que se garantiza que sólo será actualizada una vez para cada palabra. Pero lo que es aún más importante, es la única condición de arranque por la que se garantiza que pasará el análisis de toda palabra, por lo que las dos aternativas serían:

Como se ve, la solución más simple y eficiente consiste en realizar el almacenamiento de la información concerniente a la cadena de caracteres que conforma la palabra que acaba de ser reconocida en la condición <S> de salida.

Si se llega a esta condición con las listas de enteros y de cadenas de carácteres de los campos de la variable token vacías, significa que la palabra no ha sido reconocida como una de las incorporadas al analizador léxico. En este caso, se utiliza la categoría Desconocido para la palabra. Para establecerla, es necesario llamar a la función new_column_token y posteriormente a set_cat_token, pasándole a esta última, además de la dirección de token, el valor UKN que identifica a la categoría Desconocido.

Cuando se alcanza la condición de salida, el analizador léxico devuelve el control al sintáctico. En este momento, este último ya dispone en la variables token de toda la información concerniente a la palabra que se ha podido obtener.

La condición de error

Esta condición se alcanza cuando una palabra ha comenzado a ser reconocida aplicando algunas reglas léxicas, pero se ha detectado que no cumple alguna de ellas. En tal caso, en las acciones correspondientes a la regla incluida en esta condición de arranque se llama a la función rm_column_token para eliminar la información del análisis erróneo de la variable token.

En caso de que se desee realizar una depuración del analizador léxico, podría ser interesante mantener tal información, pero sumando al campo categoría un valor ERRgif que indique que dicha información es errónea.


next up previous contents
Next: 6.3.7 Recuperación de información Up: 6.3 Integración con el Previous: 6.3.5 Actualización mediante reglas

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