Next: 7 Guía para el
Up: 6.4 Integración con ICEeditor
Previous: 6.4.1 Análisis total
Para realizar un análisis incremental, es preciso indicarle a ICE
los componentes léxicos que han sufrido modificaciones respecto al último
análisis. La información que ICE precisa conocer es la siguiente:
- El itemset que ha sufrido la modificación. Esto es, el componente léxico
cuyo texto se ha modificado.
- El nuevo texto asociado a dicho itemset.
- El siguiente itemset.
Para poder proporcionar tal información, ICEeditor transforma todas
las operaciones de edición de componentes léxicos en operaciones de
modificación, las cuales se almacenan en el campo operations
de la estructura {ICEeditor}, tal como se indica en el
capítulo 2.
Cuando el usuario solicita la realización de un análisis
incremental del texto, se activa el método parser asociado a
la estructura {ICEeditor}. Este método realiza las siguientes
acciones:
- Llama a la función {ice}:old para obtener el primer
itemset resultado del análisi anterior.
- Para cada componente léxico que ha sido modificado:
- Recupera su itemset
realizando sucesivas llamadas a la función
{ice}:get-next.
- Busca el itemset siguiente a la secuencia contigua de
componentes léxicos modificados.
- Crea un nuevo elemento en la lista que almacena los
cambios sufridos por los componentes léxicos desde el último
análisis. Para ello se realizan llamadas a las funciones
{ice}:changes y
{change}:new, como se muestra en el siguiente
fragmento de código:
en donde "new_text" representa el nuevo texto
del componente léxico después de ser modificado, itemset indica el itemset
que ha sido modificado y next_itemset el
siguiente itemset a la cadena contigua de comonentes
léxicos modificados..
- Realiza una llamada a {ice}:incremental, la función
que realiza el análisis incremental. Esta función ha sido
modificada para pasar al analizador léxico la posición de
inicio de cada modificación.
Next: 7 Guía para el
Up: 6.4 Integración con ICEeditor
Previous: 6.4.1 Análisis total
Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997