Instalacion Lex y Yacc

Diseño de Compiladores. COMPILADORES Lex genera el código C para un analizador léxico, y yacc genera el código para un

Views 119 Downloads 67 File size 410KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Diseño de Compiladores.

COMPILADORES 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. 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

Librerías

COMPILADOR

Para llegar a la construcción 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.

Instalación.

1

Diseño de Compiladores.

INTALACIÓN DEL PAQUETE YACC. PASOS Copie la carpeta yacc al disco local C. Asumiendo que usted ha instalado este paquete en el directorio c:\yacc, prepare su ambiente de la siguiente manera: Bajo la consola DOS de Windows escriba el siguiente PATH, como se ilustra en la “figura A”. SET PATH=c:\yacc\bin;%PATH% SET BISON_SIMPLE=c:\yacc\bin\bison.simple SET BISON_HAIRY=c:\yacc\bin\bison.hairy Esta versión de YACC y LEX funcionan sin problemas con la versión del compilador MINGW32.

FIGURA A Esta es una distribución mínima del compilador MINGW solo soporta el modo consola de Windows. Su uso básicamente es para compilar algunos ejemplos sencillos y muy útil para el proyecto de lenguajes y compiladores. Si usted ya tiene instalada la versión completa del mingw, no tiene sentido usar esta versión -

Su ventaja principal es su pequeño tamaño que facilita su descarga, y traslado de una máquina a otra sin complicaciones.

Instalación.

2

Diseño de Compiladores.

INTALACIÓN DEL COMPILADOR MGWCON. Para instalar abra la carpeta “Compiladores Lex & Yacc” del CD, copie la carpeta llamada "\MgwCon" en el disco local C.

En XP se puede, ejecutando el comando SET PATH=... estando en el modo consola de Dos, ponga la ruta en el PATH : como se ilustra en la “figura B” SET PATH=%PATH%;C:\MgwCon\Bin;

FIGURA B Asumimos que instalo el compilador en la unidad C: aunque podría haber sido cualquier otra. Usted puede tener otra distribución del mingw instalada en su disco duro (normalmente \MinGW) no habrá problemas ya que trabajarán en forma independiente.

Instalación.

3

Diseño de Compiladores.

TRABAJANDO CON EL PAQUETE YACC Dentro de la carpeta “TRABAJO” del CD se encuentra la carpeta de “COMPILADOR BASICO” dentro de la cual encontrará los archivos escritos en lex y yacc con los nombres de COM_BAS.l y COM_BAS.y.

Los dos últimos archivos (COM_BAS.L y COM_BAS.Y) copielos a la dirección c:\yacc\bin anteriormente instalada.

Bajo consola DOS coloque la dirección o ruta donde se encuentran los archivos (COM_BAS.L y COM_BAS.Y) mediante comandos básicos como “CD”

Instalación.

4

Diseño de Compiladores.

FIGURA CUna vez en la carpeta c:\yacc\bin escriba como se muetra en la “figura C” y se creará el archivo lex.yy.c, donde lex.yy.c es una representación 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 código en C y se transfieren directamente a lex.yy.c. Ahora escriba se especifica que –d es para generar un fichero de cabecera llamado y.tab.h. COM_BAS.Y constituye una especificación 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 sintáctico en C incluye además otras rutinas de apoyo que pudo generar el usuario.

Instalación.

5

Diseño de Compiladores. Copie todos los archivos (COM_BAS.L, COM_BAS.Y, lex.yy.c, y.tab.c, y.tab.h) a la dirección c:\mgwcon\bin.

Bajo consola DOS, para generar el programa ejecutable .exe deberá escribir la siguiente línea de código, (asegúrese de encontrarse en la carpeta c:\mgwcon\bin en DOS).

Se puede cambiar el nombre del programa .exe solamente indicando otro nombre de su elección 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.

Instalación.

6

Diseño de Compiladores.

Hágalo ejecutar y compruebe los resultados

Expresiones que soporta com_bas Los operadores de uso son "+", "-", "*", "/", “div”, “mod” y el uso de paréntesis "(" y ")" para alterar la precedencia de evaluación.

Instalación.

7

Diseño de Compiladores.

Para terminar presione +Z (Fin de Archivo) Errores Si esta trabajando en modo DOS y aparece un error como el siguiente debe volver a escribir las líneas de código del PATH. estas se encuentra en la “figura A” y “figura B”

Instalación.

8