grammar - preguntas - tag questions exercises
Herramientas de escritura de gramática (5)
Para comprobar si una gramática permite un cierto algoritmo de analizador, simplemente colóquelo en el generador del analizador. En el caso de LALR (1), pase la gramática a YACC para ver si detecta conflictos.
Estoy tratando de escribir una gramática en EBNF (salvo una buena razón, tiene que ser EBNF) y estoy buscando un par de utilidades para eso. Si hay una interfaz GUI que puede hacer una, sería genial, pero el Lo que más busco es algo que pueda verificar la gramática, por ejemplo, para ver si es LALR ( n ), y si es así, cuál es el valor de n . ¿Existen tales servicios? ¿Hay alguna otra herramienta útil para escribir gramática que deba conocer (no estoy buscando generadores de analizadores sintácticos)?
ANTLR es un generador de analizadores de GUI en Java que tiene amplias capacidades para el análisis gramatical y factorización. Verifique las preguntas frecuentes; podría ser compatible con lo que estás buscando.
Tomando la sugerencia de Steven Dee un paso más allá, es posible que desee comprobar ANTLRWorks , que es una herramienta de desarrollo de GUI interactiva para gramáticas ANTLR.
CoCo / R C # no se encuentra en la lista. Es simple de usar, muy versátil y especialmente útil tiene generadores de código para una gran variedad de idiomas
Coco / R para C #, Java, C ++, F #, VB.Net, Oberon, otros idiomas
¡Usa TinyPG ! Es un increíble compilador de compilador todo en uno con una GUI liviana, donde construyes tu analizador con RegEx , EBNF y escribes código C # / VB para hacer algo con el árbol de análisis sintáctico .
Aquí hay un resumen breve e informativo que hice antes, que también lo vincula a las descargas.
Mi comprensión de TinyPG:
TinyPG te permite escribir y desarrollar:
- Definir terminales usando expresiones regulares .
- Definir reglas no-terminales y analizador en meta-sintaxis de BNF extendida .
- Escriba el código del compilador en C # o VB , dentro de TinyPG.
Tiene un IDE incorporado, solo Windows (creado en C # .NET, código abierto) .
Le permite probar y obtener una vista previa de expresiones regulares utilizando la herramienta RegEx incorporada . La sintaxis de RegEx es compatible con .NET, lo que significa que incluso el código del analizador de salida utiliza las expresiones regulares de .NET.
Usted escribe EBNF para describir el idioma de su elección (Aquí hay algunos Grammers BNF disponibles gratuitamente que describen los lenguajes de programación modernos (C, Java, JavaScript, C #, VB.NET, SQL-89)
Con TinyPG, su RegEx junto con su EBNF genera un árbol de análisis (vea este diagrama) .
¿Ahora qué haces con el árbol de análisis? Usted escribe el código C # / VB (dentro de TinyPG, por regla de gramática BNF) para su compilador / intérprete / traductor. (Dentro de TinyPG, abra el archivo "simple expression2.tpg" dentro de las muestras proporcionadas para ver una demostración de un "compilador" de calculadora )
TinyPG le permite compilar y probar su tokenizer + parser + complier , dentro de TinyPG IDE, y finalmente emite el código fuente del analizador en C # .NET o VB.NET (a su elección) , con clases listas para usar .
Un excelente compilador de compiladores todo en uno para las masas. ¡Disfrutar!
PD: corrígeme si me equivoco en algo de esto.