Professional Documents
Culture Documents
CONCEPTOS BSICOS
Es una herramienta que sirve para generar un programa, capaz de analizar gramaticalmente una entrada dada por lex, a partir de una especificacin. Esta especificacin, debe contener los tokens reconocidos y los tipos de datos de los mismos si es que se ocupan para realizar operaciones sobre ellos, y una especificacin de gramtica en un formato similar a BNF (Backus Naus Form), que va desde el smbolo no terminal ms general a cada una de las opciones terminales.
El usuario de Yacc prepara una especificacin que incluye: un conjunto de reglas que describen los elementos de la entrada un cdigo a ser invocado cuando una regla es reconocida una o ms rutinas para examinar la entrada
PROCESO EN YACC
Luego Yacc convierte la especificacin en una funcin en C que examina la entrada. Esta funcin, un parser, trabaja mediante la invocacin de un analizador lxico que extrae tokens de la entrada. Los tokens son comparados con las reglas de construccin de la entrada, llamadas reglas gramaticales. Cuando una de las reglas es reconocida, el cdigo provisto por el usuario para esa regla (una accin) es invocado. Las acciones son fragmentos de cdigo C, que pueden retornar valores y usar los valores retornados por otras acciones.
ALGUNAS ESPECIFICACIONES
El nombre de un smbolo puede ser de cualquier longitud, consistiendo en letras, punto, underscore, y dgitos (en cualquier lugar excepto en la primera posicin). Se distingue entre maysculas y minsculas. Los nombres de smbolos no terminales van en minsculas y los tokens en maysculas por convencin. Si la entrada no responde a la gramtica, entonces el parser imprimir el mensaje syntax error. Este mensaje emitido por la rutina yyerror, que puede ser redefinida por el programador para proveer ms informacin.
SECCIN DE DECLARACIONES:
La
seccin de declaraciones contiene informacin que afecta la operacin de yacc. Esta seccin usa varias palabras claves para definir tokens y sus caractersticas. Cada una de estas palabras claves es seguida por una lista de tokens o caracteres literales entre apstrofes.
SECCIN DE REGLAS:
La
seccin de reglas contiene las reglas de produccin que describen la gramtica. En general una regla consiste de uno o ms conjuntos de tokens y no terminales con una accin opcional para cada conjunto de tokens.
SECCIN DE CDIGO:
La seccin de cdigo C es opcional, pero puede contener cualquier cdigo C provisto por el usuario. All se pueden especificar la rutina de anlisis lxico yylex, una rutina main, o subrutinas usadas por acciones de la seccin de reglas. Tres rutinas son requeridas: main, yylex, y yyerror, aunque estas tambin pueden ser vinculadas externamente. Se pueden usar comentarios como en C (/* ... */). Blancos, tabs, y newlines se ignoran.