2012-02-23 11 views
8

¿Hay código del analizador o un componente analizador para Delphi o un programa que aceptará la notación BNF (Formulario Backus-Naur) como entrada y generará el código Delphi (o pascal) hacer el análisis sintáctico?Producir Código Delphi que Analizará un archivo con un formato BNF dado

La razón de esto es que voy a intentar analizar perfectamente conjuntos de datos después de varias versiones de the GEDCOM standard (utilizado para la genealogía), y deberá procesar el archivo de estado a estado a medida que se llegue a los tokens. Preferiría un programa automatizado para hacer el arduo trabajo de configurar el código pascal básico para hacer el estado para procesar el estado por mí.

De lo contrario, tendré que crear manualmente las estructuras de estado.

vi la siguiente pregunta (y TinyPG se ve bien, pero necesito código de Delphi): Parser-generator that outputs C# given a BNF grammar?

Si no hay tal bestia, ¿hay otras herramientas disponibles que harán esta tarea más fácil ?

Respuesta

6

Te recomiendo el sistema de análisis GOLD. Las gramáticas GOLD se basan en la forma y las expresiones regulares de Backus-Naur.

Recursos

Motores

motor s para Delphi se enumeran particularmente here.

Este one para Object Pascal por Rob van den Brink podría ser de su interés.

Cita:

Rob van den Brink actualiza su motor para la programación Object Pascal Idioma. Su implementación usa una plantilla de programa para crear un programa de funcionamiento completo . Este enfoque incrusta las tablas de análisis directamente en el código fuente. Como resultado, no necesita cargar un archivo de tabla de gramática compilada . La descarga contiene una plantilla de programa , así como varios ejemplos.

Proyecto de ejemplo usando ORO

GOLD es de gran alcance, que se utiliza como el motor de análisis de dcu2pas, una Unidad de Delphi compilado (archivos DCU) decompilador que se aloja here (bitbucket.org). Observe en cambio que está escrito en .

+1

Me gusta mucho el sistema de análisis GOLD, especialmente el editor y el depurador. Desafortunadamente, la implementación del motor Delphi tiene una década de antigüedad, el Readme.txt para el código de 'Rob van den Brink' dice" 24 de abril de 2002 ". Es anterior a Delphi Unicode por unos buenos 7 años. –

+0

Sí, están envejeciendo pero pueden mejorarse. Las implementaciones recientes del motor C# están utilizando construcciones de borde sangrante. El motor D (Digital Mars D) de Matthias Piepkorn está inspirado en esos motores Delphi y lo encuentro realmente excelente. Ya es hora de que la comunidad Delphi recupere lo mejor y se levante para mantenerse al día. – menjaraz

+1

Esto se ve exactamente como la herramienta que esperaba encontrar. ¡Gracias por señalarlo! – lkessler

Cuestiones relacionadas