2011-12-15 9 views
5

Utilizo las clases de Lexer y Analizador generadas por la herramienta ANTLR (dirigida a C#). Supongamos que he analizado un código y obtuve un árbol AST para él. ¿Qué ocurre si parte de mi código inicial ha cambiado y quiero actualizar solo las partes correspondientes del árbol? ¿Hay una manera común de hacer eso? Por ejemplo, se insertó una línea de código dentro del cuerpo de algunas funciones. Y quiero reconstruir solo la parte del árbol que representa esta función y actualizar las posiciones de las funciones siguientes tokensActualización del árbol AST de ANTLR

+0

Después de haber cambiado el árbol, ¿qué desea hacer a continuación? Supongo, regenerar el texto fuente. ¿Con comentarios? Diseño original? ...? –

+0

Solo quiero tener un árbol AST relevante. Digamos que quiero administrar el intellisense para algunos IDE – Natalia

+0

¿Cómo sabrías qué partes de tu AST en realidad se vieron afectadas por el cambio? – stryba

Respuesta

1

Existen algunos proyectos que hacen lo que usted puede querer lograr. Pero no sé si ANTLR lo admite. Puede consultar: http://en.wikipedia.org/wiki/Incremental_compiler

Para el resaltado de sintaxis solo propongo, sugiero usar expresiones regulares para los diferentes tokens en su sintaxis. (Si actualiza solo la línea en la que está trabajando, no debería tener ningún problema de rendimiento.)