2008-11-05 13 views
11

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 ello - si hay una interfaz GUI que puede hacer una, que sería genial, pero lo que estoy buscando 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)?Grammar Writing Tools

+2

En caso de que alguien más se preguntara: http://en.wikipedia.org/wiki/EBNF –

Respuesta

3

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.

1

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.

0

ANTLR es un generador de analizador 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.

9

Use TinyPG! Es un C#/VB código increíble todo-en-uno compilador compilador con una interfaz gráfica de usuario ligero, en el que construir su analizador con RegEx, EBNF, y escribir para hacer algo con el árbol de análisis!

Aquí hay un resumen breve e informativo que hice anteriormente, que también lo vincula a las descargas.


Mis entendimientos de TinyPG:

TinyPG le permite escribir & desarrollar:

Tiene un IDE incorporado, sólo Windows (creado en C# .NET, de código abierto).

Permite que usted pruebe & vista previa de las expresiones regulares utilizando la herramienta RegEx incorporado. La sintaxis de RegEx es compatible con .NET, lo que significa que incluso su código del analizador utiliza .NET's Regular Expressions.

Escribes EBNF para describir el idioma de su elección (Éstos son algunos de libre disposición BNF Grammers that describe modern programming languages (C, Java, JavaScript, C#, VB.NET, SQL-89)

Usando TinyPG, su RegEx junto con su EBNF da salida a una árbol de análisis sintáctico(see this diagram).

Ahora, ¿qué hacer con el árbol de análisis sintáctico? Escribes C#/código VB(dentro de TinyPG, según la regla de la gramática BNF) para su compilador/intérprete/traductor .(dentro TinyPG, abra el archivo "simple expression2.tpg" dentro de las muestras proporcionadas a ver una demostración de una calculadora 'compilador')

TinyPG le permite compilar y probar sutokenizer + analizador + compilador, dentro del IDE TinyPG, y finalmente se da salida al código fuente analizador en C# .NET o VB.NET (a su elección), con listas para su uso clases.

Excelente compilador todo en uno Compilador para las masas. ¡Disfrutar!

PD: Corrígeme si me equivoco en algo de esto.

+0

gran respuesta, aplausos. –

1

CoCo/R C# no aparece en la lista. Es fácil 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++, C#, VB.Net, Oberon, otros idiomas

[1 ] http://www.ssw.uni-linz.ac.at/Coco/