Este es un ejemplo muy sencillo, pero indispensable al momento de querer utilizar nuestra gramática definida en Irony. Vamos a considerar las siguientes clases para el ejemplo:
- Gramatica.cs : es donde se encuentran todas las reglas gramaticales definidas en Irony(ver Ejemplo de gramática en Irony.net).
- Analizador.cs: es una nueva clase que se crea con el objetivo de realizar el análisis.
- Formulario.cs: clase de la interfaz gráfica en la cual tendremos un área de texto de la clase RichTextBox y un botón de la clase Button.
Crearemos un método en la clase Analizador.cs llamado "Validar_cadena" el cual necesita dos parámetros para su ejecución que son la cadena a analizar y la gramática que se utilizara para dicho análisis. Retornara un valor booleano dependiendo si es valida o no la cadena. El método podría ser de la siguiente forma:
public bool Validar_cadena(string Cadena, Grammar Mi_gramatica) {
LanguageData lenguaje = new LanguageData(Mi_gramatica);
Parser parser = new Parser(lenguaje);
try
{
ParseTree arbol = parser.Parse(Cadena); // el análisis devuelve un árbol abstracto
return arbol.Root != null; //si el arbol no tiene raíz significa que la cadena no es valida
}
catch (Exception e)
{
MessageBox.Show(e.ToString()); //por errores de programacion en Gramatica.cs
return false;
}
}
Nota: es indispensable agregar la librería de Irony a la clase Analizador.cs
using Irony.Parsing;
Para analizar el texto colocado en el RichTextBox estas serian las acciones en el boton:
private void Boton_analizar(object sender, EventArgs e)
{
if (AreaDeTexto.Text != null)
{
Analizador analizador = new Analizador();//creamos instancia de Analizador
Gramatica mi_gramatica = new Gramatica();//creamos instancia de Gramática
if (analizador.Validar_cadena(AreaDeTexto.Text, mi_gramatica))//Ejecución
{
MessageBox.Show("Cadena Correcta");
}
else
{
MessageBox.Show("Cadena incorrecta");
}
}
}