COMPILADORES HERRAMIENTAS LEX Y YACC LEX Es una herramienta utilizada para especificar analizadores léxicos. Suele llamarsele compilador Lex a la herramienta, y lenguaje Lex a sus especificaciones de entrada. YACC Genera un analizador sintáctico (la parte de un compilador que comprueba que la estructura del código fuente se ajusta a la especificación sintáctica del lenguaje). Como se realiza Lex genera el código C para un analizador léxico, y yacc genera el código para un parser. Tanto lex como yacc toman como entrada un archivo de especificaciones que es típicamente más corto que un programa hecho a medida y más fácil de leer y entender. Por convención, la extensión del archivo de las especificaciones para lex es .l y para yacc es .y. La salida de lex y yacc es código fuente C. Lex crea una rutina llamada yylex en un archivo llamado lex.yy.c. Yacc crea una rutina llamada yyparse en un archivo llamado y.tab.c. Estas rutinas son combinadas con código fuente C provisto por el usuario, que se ubica típicamente en un archivo
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
COMPILADORES HERRAMIENTAS LEX Y YACC
LEX
Es una herramienta utilizada para especificar analizadores léxicos. Suele llamarsele compilador Lex a la herramienta, y lenguaje Lex a sus especificaciones de entrada.
YACC
Genera un analizador sintáctico (la parte de un compilador que comprueba que la
estructura del código fuente se ajusta a la especificación sintáctica del lenguaje).
Como se realiza
Lex genera el código C para un analizador léxico, y yacc genera el código para un parser.
Tanto lex como yacc toman como entrada un archivo de especificaciones que es
típicamente más corto que un programa hecho a medida y más fácil de leer y entender.
Por convención, la extensión del archivo de las especificaciones para lex es .l y para
yacc es .y. La salida de lex y yacc es código fuente C. Lex crea una rutina llamada yylex
en un archivo llamado lex.yy.c. Yacc crea una rutina llamada yyparse en un archivo
llamado y.tab.c.
Estas rutinas son combinadas con código fuente C provisto por el usuario, que se ubica
típicamente en un archivo separado pero puede ser ubicado en el archivo de
especificaciones de yacc. El código provisto por el usuario consiste de una rutina main
que llama a yyparse, que en su momento, llama a yylex.
strcpy( mensaje, "Error de sintaxis" ); else strcpy( mensaje, s );
fprintf(stderr, "Error en linea %d: %s\n", linea, mensaje); printf("ha ocurrido un error\n"); getch(); return 0;}
int main(void) { printf("\t\tUNIVERSIDAD CENTRAL DEL ECUADOR"); printf("\t\tDISEÑO DE COMPILADORES"); printf("\nFabián Silva Muñoz\n"); printf("\n\nIngrese la expresion a calcular: "); yyparse(); return 0;}