sintáctico sintactico sharp semantico prueba proyecto lexico hacer descargar compiladores compilador como analizador .net parsing antlr yacc lexer
herramientas del compilador LEX / YACC de

.net - sintactico - como hacer un compilador en java



¿Buen generador de analizador(piense lex/yacc o antlr) para.NET? ¿Tiempo de construcción solamente? (5)

¿Hay un buen generador de analizador (piense lex / yacc o antlr) para .NET? ¿Alguien que tenga una licencia que no asustaría a los abogados? Muchos de LGPL, pero estoy trabajando en componentes integrados y algunas organizaciones no se sienten cómodas si tomo una dependencia de LGPL.

He escuchado que Oslo puede proporcionar esta funcionalidad, pero no estoy seguro si es una dependencia del tiempo de compilación o también una dependencia del tiempo de ejecución. ¿Alguien puede aclarar lo que Oslo proporcionará?

ACTUALIZAR
Lo que realmente me gustaría es un generador de analizador que sea una dependencia de tiempo de compilación. Parece que ANTLR tiene un componente de tiempo de ejecución.


ANTLR tiene un componente de tiempo de ejecución, pero siempre puede tomar las pocas clases que usa e incluirlas en su proyecto, momento en el que ya no necesita hacer referencia al conjunto de tiempo de ejecución. Tiene licencia bajo la licencia BSD: cláusula 3 para el objetivo C # 3 y cláusula 4 para el objetivo C # 2.


Acabo de descubrir que F # se envía con una implementación de yacc y lex. Parece que podré aprovechar este generador de analizador para mis necesidades de .NET.

F # Muestras

El ejemplo de Análisis muestra cómo usar las herramientas fsyacc y fslex para crear analizadores y lexers para usar con F #. (Modo: Compilado, se ejecuta en: cualquier CLI, incluido Mono)

Publicaciones relacionadas del blog:


Personalmente soy un gran fan del Generador de analizador GOLD . No genera ningún código directamente, solo le proporciona las tablas de estado de DFA y LALR y le permite escribir su propio motor de análisis para satisfacer sus necesidades.

Esta forma de estructurar las cosas no se adapta a todos ni a todas las situaciones (pierde cierta flexibilidad debido a que su idioma debe cumplir con las restricciones de LALR), por lo que no reclamo que sea "la forma correcta", pero me gustó la separación del algoritmo de análisis. de las reglas de análisis (y esto significa que cualquier requisito de tiempo de ejecución está completo y fácilmente bajo su control).

Por supuesto, no tiene que escribir su propio motor; hay tres motores escritos en C # listados en el sitio, por ejemplo. No sé qué licencias usan esos motores, pero escribir su propio motor es francamente trivial si encuentra las licencias desagradables. GOLD incluye documentación que proporciona una descripción completa de un algoritmo de trabajo, que es (como cabría esperar si comprende el análisis de LALR), un sistema de máquina de estado simple. El programa GOLD en sí mismo es de uso gratuito, por supuesto.

GOLD también incluye un IDE para escribir la gramática de tu idioma, que puede ser muy útil.



Hmmm ya mencionaste a Antlr, así que no estoy seguro de por qué no lo consideras ...

Antlr genera C # ( http://www.antlr.org/wiki/display/ANTLR3/Antlr%2B3%2BCSharp%2BTarget ) y tiene una licencia BSD ( http://www.antlr.org/license.html ) que parece Tener muy pocas restricciones.

Irony ( http://irony.codeplex.com/ ) tiene bastantes descargas y una licencia MIT (fácil de usar para los ojos). Parece tener un código fuente completo, por lo que podría ser posible "incrustarlo" directamente en su aplicación.