Digamos que tengo un gran bloque de código que ya he lexed y analizado.
Supongamos que solo un personaje cambia; Me gustaría actualizar mi análisis, pero dado que la modificación es muy pequeña en comparación con todo, me gustaría saber si es posible no analizar todo nuevamente, pero si hay algoritmos para determinar el rango para volver a analizar , y para tratar adecuadamente los límites de token en movimiento.
¡Gracias por adelantado!
Respuestas:
Según la solicitud de @Agos, convertí el comentario en una respuesta.
Primero, debo admitir que no estoy realmente bien informado en este campo. Sin embargo, le sugiero que lea los documentos Creación de analizadores amigables y Análisis incremental eficiente y flexible para tener una visión de qué algoritmos se utilizaron para el análisis incremental antes de 2000.
Para tratamientos actualizados, puede consultar estos documentos:
Más información: Hay (al menos) dos enfoques para el análisis / compilación:
fuente
si su analizador incremental guarda el estado en cada extremo de la línea, vuelve a analizar solo desde el último estado válido del analizador (en el mejor de los casos, por ejemplo, después de un análisis completo, este es solo el comienzo de la línea donde comienza la modificación) y deja de analizar al final de la línea donde termina la modificación (el analizador interno podría mirar más allá de la modificación para reconocer correctamente la estructura)
fuente