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