Estoy buscando un generador de analizador sintáctico que, dado un EBNF para un lenguaje LL (k), me proporcione un analizador C# y genere las clases de los tipos definidos en el EBNF.¿Qué es un buen compilador compilador de C#/generador de analizador?
Respuesta
Gold está bien en cuanto a generadores de analizadores sintácticos van.
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
ANTLR (nada más que decir)
, así que necesita di algo para llegar a 15 caracteres. ;) +1 – kenny
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. –
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
Grammatica admite LL (k). http://grammatica.percederberg.net/
Encuentra ironía en http://irony.codeplex.com/
PROS: es simple CONS: Falta de documento -más despacio
Coco/R (del SSO - "Johannes Kepler" Universidad de Linz)
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
- 1. ¿Qué es un buen compilador de c
- 2. ¿Qué es un buen compilador BASIC para Mac OSX?
- 3. Analizador de código de Scala (no compilador)
- 4. ¿Qué es un buen analizador de CSS C/C++?
- 5. ¿Por qué es más difícil construir un compilador cruzado que compilar un compilador común?
- 6. ¿Un buen analizador de ocaml?
- 7. ¿Qué es un compilador de compilación? ¿Cómo funciona?
- 8. Compilador Magic: ¿Por qué?
- 9. ¿Qué compilador Java es utilizado por NetBeans?
- 10. ¿Qué es "DNS_BLOCK_ASSERTIONS" (indicador del compilador C)?
- 11. ¿Buen y pequeño compilador de Haskell para Linux?
- 12. Casos de prueba del compilador o cómo probar un compilador
- 13. ¿Qué es #defined si un compilador cumple con Cpp0x?
- 14. Determinar qué compilador creó un Win32 PE
- 15. ¿Existe un compilador de R?
- 16. ¿Googles GOLANG es un intérprete o compilador?
- 17. Compilador/intérprete de Java
- 18. Hacer un compilador JIT
- 19. Necesita un compilador de fondo
- 20. ¿Es posible el compilador Jquery * *?
- 21. Bandera del compilador de Visual Studio C++: ¿qué es -Zm200?
- 22. Averiguar qué compilador usa Maven
- 23. ¿Qué complementos de compilador scala están disponibles?
- 24. Dónde está un buen analizador de direcciones
- 25. ¿Qué es el plegado constante en el compilador de Java?
- 26. Interesante compilador de proyectos
- 27. Escribir un compilador; que VM?
- 28. compilador de PHP para Windows
- 29. ¿Es el compilador de C# más inteligente que el compilador de VB.NET?
- 30. Compilador de expresiones regulares
Diría que es bastante bueno – SpaceghostAli
OP pidió LL (k). El oro es LALR. –
corrígeme si estoy equivocado: ¿No hay un subconjunto de gramáticas LL de gramáticas LALR? –