2010-12-22 15 views
6

Aunque he escrito muchos analizadores recursivos anteriormente, recientemente me interesé por Castalia Delphi Parser (¿por qué reinventar la rueda?). Sé que este analizador se ha utilizado en muchos proyectos a lo largo de los años, pero encontrar documentación para él parece difícil.¿Hay algún ejemplo o documentación sobre el uso del analizador de fuentes de Castalia?

¿Dónde puedo encontrar la documentación? O como alternativa, ¿hay algún ejemplo claro sobre su uso en un escenario de análisis de la vida real?

La idea es utilizar Castalia para la verificación sintáctica de unidades Delphi y (si es posible) beneficiarse al generar un árbol de nodos de un programa (con clases, sus métodos, parámetros, tipos de datos de resultado, if/then/else - - básicamente un mapa completo de una unidad o programa). Podrías pensar que es "la mitad de un tiempo de ejecución de scripts" sin ejecutar ningún código, simplemente descomponiéndolo en sus aspectos más fundamentales.

+0

Por favor comparta sus hallazgos, ¿qué has elegido finalmente/hecho? – menjaraz

Respuesta

3

¿por qué no utiliza JvInterpreterParser? tiene solo 2-3 dependencias de unidad ... puede modificarse fácilmente para adaptarse a sus necesidades y también puede mejorar la velocidad, en una antigua prueba he analizado un archivo de 80 MB aproximadamente en 6 segundos. en un Pentium 4 corriendo @ 2,8 Ghz o así ...

+1

Entonces la pregunta es: ¿Hay alguna documentación/ejemplos de usar JvInterpreterParser? –

+1

@Craig Peterson sí, hay un muy buen ejemplo, la clase JvInterpreter, básicamente comienzas desde el principio y llamas a algo así como GetNextToken hasta que el token es tKEOF y sabes que has llegado al final del archivo, ahora es la fuente de el JvInterpreter es bastante grande, sin embargo, para un uso básico, puede comprender fácilmente cómo se puede usar; si quiere más, debe comenzar a pensar y comprender en profundidad cómo funciona y a mejorar el rendimiento (si ese es el caso) – ComputerSaysNo

+1

No estoy seguro de qué es exactamente lo que hace Castalia Delphi Parser, pero TJvInterpreterParser es en realidad * no * un analizador sintáctico; es un lexer o tokenizer. TJVInterpreterExpression y las diversas clases que descienden de él son analizadores. –

Cuestiones relacionadas