Está en la página 1de 3

HERRAMIENTAS PARA GENERAR UN ANALIZADOR

SINTCTICO
1.HERRAMIENTA YACC:
1.1. Tipo de analizador: Ascendente, parser LALR(1).
1.2. Cdigo generado: C, C++.
1.3. Caractersticas:
Se puede integrar con Lex dejando a ste el
anlisis lxico.
La precedencia se puede definir al margen de la
gramtica, manteniendo sta ms simple.
Conjuntamente con Memphis se puede construir
un rbol sintctico como salida del analizador.
Genera siempre autmatas finitos deterministas.
1.4. Funcionamiento de YACC
Yacc no es directamente un analizador sino un
generador de analizadores. A partir de un fichero
fuente en yacc, se genera un fichero fuente en C
que contiene el analizador sintctico. Sin embargo,
un analizador sintctico de yacc no puede funcionar
por s solo, sino que necesita un analizador lxico
externo para funcionar. Dicho de otra manera, el
fuente en C que genera yacc contiene llamadas a
una funcin yylex() que debe estar definida y debe
devolver el tipo de lexema encontrado. Adems, es
necesario incorporar tambin una funcin yyerror(),
que ser invocada cuando el analizador sintctico

encuentre un smbolo que no encaja en la


gramtica.

2.HERRAMIENTA JAVACC:
2.1. Tipo de analizador: Descendente recursivo,
parser LL(k).
2.2. Cdigo generado: Java.

2.3. Caractersticas:
Dispone de JJTree para construir el rbol.
JJDoc toma una gramtica y genera
documentacin HTML al estilo javaDoc.
La especificacin lxica puede hacerse en la
misma gramtica.
Genera combinaciones de autmatas finitos
deterministas y no deterministas.
Es un potente generador de parsers
descendente, por eso se recomienda su uso para
usuarios que trabajen en programacin orientada
a objetos.
Especificaciones lxicas y gramaticales en un
solo archivo.
ofrece estados lxicos y la capacidad de agregar
acciones lxicas.

Permite el uso de tokens especiales.


El anlisis del parsing y los pasos de
procesamiento de tokens pueden realizarse en
profundidad.
Mejor manejo de errores.

2.4. Funcionamiento de Javacc:


En su funcionamiento ms sencillo y habitual,
JavaCC
genera
un
analizador
sintctico,
complementado con un analizador lexicogrfico,
para que, conjuntamente, se pueda realizar un
anlisis lxico-sintctico de un texto de entrada.
El analizador sintctico obtenido es, en general,
LL(k): descendente y determinista con la consulta
de k smbolos por adelantado; si la gramtica
proporcionada cumple la condicin LL(1), se genera
un analizador sintctico descendente-predictivorecursivo.

También podría gustarte