2008-11-24 9 views
5

necesito para crear un editor de código para mi propio lenguaje sencillo:editor de código con autocompletar

className.MethodName (nombreParámetro = 2, ...)

He creado la gramática y el analizador autogenerate apropiada usando la herramienta ANTLR. Ahora me gustaría tener un autocompletado para clase, método, variables y nombres de parámetros. Esta lista debe depender del contexto, es decir para clase." debería mostrar los métodos y para "class.Method (" - parameters. Iba a analizar el texto y mostrar la lista dependiendo de en qué nodo esté el cursor. El problema es que para código incompleto como "aaa.bbb (" the analizador produce un error en lugar de un árbol sintáctico. alguna idea de cómo resolver este problema? tal vez estoy en el camino equivocado y que no debe analizar código para mostrar autocompletar?

Respuesta

0

cómo sobre TextMate en el Mac o sus clones en otras plataformas? me acabas de empezar con él, pero parece tener un conjunto de herramientas plug-in muy abierto.

1

es necesario analizar al menos algunas partes del código para saber lo que se vea.

o necesita un analizador que permite el análisis hasta que encuentra un error y continúa desde allí más tarde (o incluso simplemente lo ignora e intenta arreglarlo para continuar el análisis, pero aquí se vuelve muy difícil, por lo que puede acceder al último nodo y use su gramática y el árbol de sintaxis existente para autocompletarlo, o puede almacenar en caché el último árbol de sintaxis y usar algo como regex para ver cuándo se autocompleta y usar el caché para ver qué autocompletar.

La sugerencia posterior podría ser la más fácil pero tiene la desventaja de que la memoria caché puede estar actualizada en el momento en que necesita la finalización (es decir: puede crear una nueva clase en un archivo, todas las terminaciones basadas en esa clase no estará disponible hasta que el archivo no tenga errores).

Sidenode: Al ver que hace el análisis, usted podría estar interesado en Parsing Expression Grammars, sin embargo, no le ayudan exactamente con ese problema.

Cuestiones relacionadas