2009-07-28 12 views

Respuesta

6

Gold está bien en cuanto a generadores de analizadores sintácticos van.

+0

Diría que es bastante bueno – SpaceghostAli

+3

OP pidió LL (k). El oro es LALR. –

+0

corrígeme si estoy equivocado: ¿No hay un subconjunto de gramáticas LL de gramáticas LALR? –

4

Es posible que desee mirar MinosseCC, un puerto de JavaCC a C#. Otra posibilidad es Spart.

+1

MinosseCC se renombró a CSharpCC. La versión actual está en el espacio del Código de Google y es el puerto de JavaCC 3.2, mientras que una versión de desarrollo (puerto de JavaCC 5.0) está en desarrollo en GitHub (http://github.com/deveel/csharpcc) – Antonello

22

ANTLR (nada más que decir)

+16

, así que necesita di algo para llegar a 15 caracteres. ;) +1 – kenny

+0

Creo que ANTLR tiene problemas reales para dar los mensajes de error adecuados. Buena suerte descubriendo, por ejemplo. donde poner la especificación @inlude! La documentación es desconcertante y nunca muestra la forma preferida de hacer las cosas. Los gramars de árbol son una pérdida de tiempo ... el sitio de ANTLR incluso tiene una enorme entrada de blog sobre esto. –

+1

Hmm, parece que http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Target se actualizó por última vez hace 3 años y faltan todos los bloques de código. Espere, no, eso es exactamente sucede cuando JavaScript está deshabilitado. De todos modos, C# siempre ha sido un objetivo ANTLR de segunda clase. Cuando lo usé por primera vez, el código fuente C# Runtime no estaba disponible: el autor (que no es el mismo que el autor de ANTLR) liberó el binario sin una licencia especificada IIRC, y se dejó caer de la faz de la tierra. Usé Reflector para reconstruir el código fuente. – Qwertie

3

Hay un nuevo generador de analizador en el bloque llamado LLLPG, que admite las gramáticas LL (k) y las aserciones de ancho cero. Se puede usar sin una biblioteca de tiempo de ejecución (una clase base es suficiente). La documentación es bastante detallada ahora, y he usado LLLPG para analizar la mayoría de un dialecto de C# llamado C# mejorado (que, de hecho, es el principal lenguaje de entrada de LLLPG). Sin embargo, la sintaxis de entrada no es EBNF (es una especie de combinación de C# + código de estilo ANTLR).

Descripción completa: Lo escribí. Preguntas bienvenidas

Cuestiones relacionadas