c# parsing bnf

Analizador-generador que emite C#dada una gramática BNF?



parsing (5)

Estoy buscando una herramienta que pueda construir un analizador sintáctico (en C #) si le doy una gramática BNF (por ejemplo, http://savage.net.au/SQL/sql-2003-2.bnf )

¿Existe tal generador?


El SDK de Visual Studio realmente viene con herramientas de generación de lexer y analizador. Estos se llaman MPPG y MPLex y son parte del paquete Managed Babel . Si bien la intención de agruparlos con el SDK es desarrollar extensiones de lenguaje para Visual Studio, son perfectamente utilizables para crear analizadores de emisiones AST generales.

MPLex y MPPG se basan en GPLEX y GPPG (proyectos de la Universidad de Tecnología de Queensland) y se utilizan de manera similar a Lex y Yacc. El SDK también contiene acciones de MSBuild para hacer que la generación del analizador sea parte del proceso de compilación normal.

Aquí hay un screencast que muestra MPLex y MPPG en acción:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx


Normalmente, las gramáticas BNF son demasiado ambiguas. ANTLR probablemente sea bueno para lo que estás buscando.



Tendrás que ajustar un poco el BNF, pero TinyPG es una gran herramienta.


IronMeta es una implementación de C # de la OMeta de Alex Warth; es un PEG packrat (análisis gramatical de expresión, usa una selección sesgada), por lo que las gramáticas pueden ser más limpias que cuando se utiliza un sistema LALR de tipo yacc.