Generadores yacc y bison

Solo disponible en BuenasTareas
  • Páginas : 4 (829 palabras )
  • Descarga(s) : 7
  • Publicado : 30 de mayo de 2010
Leer documento completo
Vista previa del texto
El generador de analizadores sintácticos YACC.

Yacc (por sus siglas significa Yet Another Compiler-Compiler, o bien en espeñol, "Otro generador de compiladores más") se define como un programapara generar analizadores sintácticos(la parte de un compilador que comprueba que la estructura del codigo fuente se ajusta a la especificacion sintáctica del lenguaje), basado en una gramáticaanalítica escrita en una notación similar a la BNF, (es una metasintaxis, termino por el cual entendemos: sintaxis para representar sintaxis, usada para expresar gramáticas libres de contexto es decir, unamanera formal de describir lenguajes formales).
Yacc genera el código para el analizador sintáctico inicialmente en el Lenguaje de programación C, aunque también se ha reescrito para otros lenguajes,incluyendo Ratfor, EFL, ML, Ada, Java, y Limbo.
Puesto que el analizador sintáctico generado por Yacc requiere un analizador léxico, se utiliza a menudo conjuntamente con un generador de analizadorléxico, en la mayoría de los casos lex o Flex.
Los tokens y los auxiliares pueden tener valores semánticos asociados. Por defecto estos valores son enteros aunque Yacc soporta otros tipos devalores incluyendo estructuras y uniones de varios tipos.
El usuario declara que tipo de valor está asociado a cada símbolo terminal y a cada no terminal y Yacc sustituye por su valor semánticocorrespondiente.

Para especificar el tipo de los símbolos, se utilizan algunas directivas en la sección de definiciones como:
➢ %token para los símbolos terminales
➢ %type para los símbolosauxiliares
➢ YYSTYPE es el tipo de datos de la pila semántica. Ademas es posible si asi se desea, cambiar el tipo de dato por defecto (enteros) a cualquier otro.
➢ %union Si es que en la pila sedesean varios tipos de datos distintos

Cada nodo del árbol de derivación que el analizador sintáctico recorre, para una cadena de entrada concreta puede tener asociado un valor denominado valor...
tracking img