Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPILADORES
Lex genera el cdigo C para un analizador lxico, y yacc genera el cdigo para un parser.
Tanto lex como yacc toman como entrada un archivo de especificaciones que es tpicamente
ms corto que un programa hecho a medida y ms fcil de leer y entender. Por convencin,
la extensin del archivo de las especificaciones para lex es .l y para yacc es .y. La salida de
lex y yacc es cdigo 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 cdigo fuente C provisto por el usuario, que se ubica
tpicamente en un archivo separado pero puede ser ubicado en el archivo de especificaciones
de yacc. El cdigo provisto por el usuario consiste de una rutina main que llama a yyparse,
que en su momento, llama a yylex.
El siguiente diagrama permite observar los pasos en el desarrollo de un compilador usando
lex y yacc:
nombre_archivo.l
lex.yy.c
Especific.
Lex
Especific.
Yacc
lex
yacc
yylex()
yyparse()
Compilador C
nombre_archivo.y
y.tab.c
Rutinas C
Libreras
COMPILADOR
Para llegar a la construccin del compilador el usuario debe tener instalados el compilador
MINGW y el paquete de YACC, estos componentes se encuentran dentro de la carpeta
Compiladores Lex & Yacc del CD.
Instalacin.
Diseo de Compiladores.
FIGURA A
Esta es una distribucin mnima del compilador MINGW solo soporta el modo consola de
Windows.
Su uso bsicamente es para compilar algunos ejemplos sencillos y muy til para el proyecto
de lenguajes y compiladores. Si usted ya tiene instalada la versin completa del mingw, no
tiene sentido usar esta versin
-
Instalacin.
Diseo de Compiladores.
FIGURA B
Asumimos que instalo el compilador en la unidad C: aunque podra haber sido cualquier
otra.
Usted puede tener otra distribucin del mingw instalada en su disco duro (normalmente
\MinGW) no habr problemas ya que trabajarn en forma independiente.
Instalacin.
Diseo de Compiladores.
Bajo consola DOS coloque la direccin o ruta donde se encuentran los archivos
(COM_BAS.L y COM_BAS.Y) mediante comandos bsicos como CD
Instalacin.
Diseo de Compiladores.
FIGURA CUna vez en la carpeta c:\yacc\bin escriba <lex com_bas.l> como se muetra en la
figura C y se crear el archivo lex.yy.c, donde lex.yy.c es una representacin tabulada de
un diagrama de transiciones construido a partir de las expresiones regulares de
COM_BAS.L.
Las acciones asociadas a las expresiones regulares de COM_BAS.L son partes de cdigo en
C y se transfieren directamente a lex.yy.c.
Ahora escriba <yacc d com_bas.y> se especifica que d es para generar un fichero de
cabecera llamado y.tab.h.
COM_BAS.Y constituye una especificacin en yacc, luego al someter COM_BAS.Y al
compilador yacc so obtiene un programa en C llamado y.tab.c.El archivo y.tab.c es el
analizador sintctico en C incluye adems otras rutinas de apoyo que pudo generar el
usuario.
Instalacin.
Diseo de Compiladores.
Copie todos los archivos (COM_BAS.L, COM_BAS.Y, lex.yy.c, y.tab.c, y.tab.h) a la
direccin c:\mgwcon\bin.
Bajo consola DOS, para generar el programa ejecutable .exe deber escribir la siguiente
lnea de cdigo, (asegrese de encontrarse en la carpeta c:\mgwcon\bin en DOS).
Se puede cambiar el nombre del programa .exe solamente indicando otro nombre de su
eleccin por ejemplo gcc y.tab.c lex.yy.c o COMPILADOR.exe.
Para nuestro ejemplo el programa ejecutable tendr nombre com_bas.exe como se muestra
en la siguiente figura.
Instalacin.
Diseo de Compiladores.
Instalacin.
Diseo de Compiladores.
Instalacin.