Acerca de...

Mi foto
Ecuador
Mis dos amores quienes me acompañan y me apoyan en todo.....

miércoles, 2 de febrero de 2011

ANTLR

¿Qué es y cómo funciona ANTLR?

ANTLR es un programa está escrito en java, por lo que se necesita alguna máquina virtual de java para poder ejecutarlo. Es software libre, lo que quiere decir que al descargarlo de la página oficial (http://www.antlr.org) obtendremos tanto los ficheros compilados *.class como el código fuente en forma de ficheros *.java.

ANTLR es un generador de analizadores. Mucha gente llama a estas herramientas compiladores de compiladores, dado que ayudar a implementar compiladores es su uso más popular. Sin embargo tienen otros usos. ANTLR, por ejemplo, podría servir para implementar el intérprete de un fichero de configuración.

ANTLR es capaz de generar un analizador léxico, sintáctico o semántico en varios lenguajes (java, C++ y C# en su versión 2.7.2) a partir de unos ficheros escritos en un lenguaje propio.

Dicho lenguaje es básicamente una serie de reglas EBNF y un conjunto de construcciones auxiliares.

ANTLR genera analizadores pred-LL(k), y él mismo utiliza un analizador pred-LL(k) para leer los ficheros en los que están escritas las reglas EBNF. ANTLR admite acciones en sus reglas, además de otras prestaciones como paso de parámetros, devolución de valores o herencia de gramáticas.

En el ejemplo siguiente se describe un programa de análisis en ANTLR, que puede reconocer expresiones de la suma en la forma “1+2+3”:

opciones generales de //, por ejemplo la opción de la lengua

objetivo

{

LENGUA = “CSharp”;

}

// que sigue que la clase

SumParser del programa de análisis amplía programa de análisis;

opción

{

k = 1;

}

definición de // de una declaración

de la expresión: NÚMERO ENTERO (NÚMERO ENTERO DE PLUS^) *;

// aquí la clase

SumLexer de Lexer amplía Lexer;

opción

{

k = 1;

}

MÁS : '+';

DÍGITO : (“0”… “9”);

NÚMERO ENTERO: (DÍGITO) +;

El listado siguiente demuestra la llamada de los programas de análisis en un programa:

Lector del lector del texto;

el lector del texto de // (...) con indicaciones llena

SumLexer más lexer = SumLexer nuevo (lector);

SumParser más programa de análisis = SumParser nuevo (más lexer);

parser.expression ();

No hay comentarios:

Publicar un comentario