2011-03-04 19 views
6

Estoy tratando de crear un analizador de VBScript. Me preguntaba cuál es la mejor manera de hacerlo. He investigado e investigado. La forma más popular parece ser algo como Gold Parser o ANTLR.VBScript Parcial Parser

La función que deseo implementar es hacer una comprobación dinámica de errores de sintaxis en VBScript. No quiero compilar todo el VBS cada vez que cambia el texto. ¿Cómo hago eso? Traté de usar Gold Parser, pero supongo que no hay forma incremental de analizarlo, algo así como árboles de análisis parciales ... ¿Alguna idea sobre cómo implementar un árbol de análisis parcial para tal escenario?

He implementado VBscript Parsing a través de GOLD Parser. Sin embargo, todavía no es un analizador parcial, analiza todo el script después de cada cambio de texto. ¿Hay alguna manera de construir tal cosa?

thks

+0

¿Por qué te opones a reparar todo el asunto? Los VBScripts tienden a no ser muy grandes. –

+0

Hmm ... accr a http://www.cs.vu.nl/~dick/PTAPG.html los analizadores parciales son posibles y estaba buscando una manera de construir el mismo. Perdóname si parezco un novato. Nunca trabajé en la construcción de un analizador ... – redDragonzz

+0

Es posible construir analizadores sintácticos "parciales" o incrementales. Es considerablemente más difícil que construir un analizador para una gramática completa. Entonces, si no necesita uno, debe omitirlo. Para documentos pequeños de VBScript, puede aplicar un analizador completo a la cadena para ver si está bien. Si tienes programas grandes, entonces quizás esto importe. –

Respuesta

2

primera vez que buscaría un analizador de VBScript existente en lugar de escribir su propia, que no es una tarea trivial!

Hay una gramática de VBScript en formato BNF en esta página: http://rosettacode.org/wiki/BNF_Grammar que puede traducir a una gramática ANTLR (o algún otro generador de analizadores).

Antes de intentar hacer cosas sofisticadas como volver a analizar solo una parte de la fuente, le recomiendo que primero cree un analizador que realmente funcione.

¡La mejor de las suertes!

+0

Gold Analizador permite analizar VBScript http://www.devincook.com/goldparser/engine/dot-net/morozov/index.htm y he implementado un analizador basado en él y el tiempo de ejecución de C# escrito por morozov. Entonces, ¿cómo hago para crear un analizador parcial :) – redDragonzz

+0

@redDragonzz, entonces debería actualizar su pregunta original con esta información. –

3

Si realmente desea hacer un análisis incremental, considere this paper por Tim Wagner.

Es un esquema brillante para mantener los árboles de análisis existentes, mezclar mezclas de fragmentos de cadena en los puntos de edición y analizar árboles que representan las partes del texto fuente que no ha cambiado, y reintegrar las cadenas en el conjunto de análisis árboles. Se hace usando un analizador GLR incremental.

No es fácil de implementar; Hice solo la parte de GLR y nunca llegué a la parte incremental. La pieza de GLR valió la pena.

Hay muchos documentos sobre el análisis incremental. Este es uno de los realmente buenos.

+0

Bien, trataré de hacerlo de esta manera, ¿qué pasa con ANTLR? Creo que tiene la capacidad de construir árboles de sintaxis abstracta parcialmente. – redDragonzz

+0

@redDragonz: No sé lo suficiente sobre ANTLR. Lo que puedo decir es que los generadores de analizadores sintácticos específicamente y utilizados principalmente para analizar el programa completo (reglas de objetivos para la gramática) prácticamente no brindan una forma significativa de realizar un análisis incremental.Teniendo en cuenta que ANTLR está en esta categoría, me sorprendería si proporcionara un apoyo tan incremental. Su experiencia puede ser diferente. –