PRACTICA N° 05: “ANALIZADOR LEXICO CON C++”
1.
OBJETIVOS:
2.
Simular un compilador en Borland C++ de código fuente a código objeto. Determinar el funcionamiento de un analizador léxico. FUNDAMENTO TEÓRICO: 2.1. Analizador Léxico: El analizador léxico es la primera fase de un compilador. Su principal función consiste en leer caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer el análisis. Esta interacción suele aplicarse convirtiendo el analizador léxico en una subrutina o corrutina del analizador sintáctico. Recibida la orden “obtén el siguiente componente léxico” del analizador sintáctico, el analizador léxico lee los caracteres de entrada hasta que pueda identificar el siguiente componente léxico. “El analizador léxico actúa normalmente como un procedimiento que es llamado por el analizador sintáctico cuando este necesita un nuevo token.” (Sanchez & Valverde, 1988) El analizador léxico tiene que dividir la secuencia de caracteres en palabras con significado propio y después convertirlo a una secuencia de terminales desde el punto de vista del analizador sintáctico, que es la entrada del analizador sintáctico. Otras funciones que realiza: • Eliminar los comentarios del programa. • Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo aquello que carezca de significado según la sintaxis del lenguaje. • Reconocer los identificadores de usuario, números, palabras reservadas del lenguaje, y tratarlos correctamente con respecto a la tabla de símbolos (solo en los casos que debe de tratar con la tabla de símbolos). • Llevar la cuenta del número de línea por la que va leyendo, por si se produce algún error, dar información sobre donde se ha producido. • Avisar de errores léxicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de un error. • Puede hacer funciones de preprocesador.
3.
PROCEDIMIENTO Y DESARROLLO:
Simularemos un compilador por lo cual emplearemos un lenguaje SIMPLE, el cual ejecutara el proceso de análisis léxico de un archivo de texto. Procederemos a digitar el código fuente proporcionado por la docente.
Al ejecutarlo, y probar con un código en un archivo .txt, el analizador léxico funciona con éxito.
4.
ANÁLISIS DE RESULTADOS
a) ¿Qué es lo que muestra el programa?
Muestra el análisis léxico que se hizo al archivo ejemplo.txt, donde escanea los tokens permitidos; es decir, lee los elementos del código fuentes y nos muestra en pantalla si los datos son aceptados o si hubo algún error.
b) Coloque en el archivo ejemplo.txt algún carácter no reconocido por el lenguaje SIMPLE/0. Vuelva a ejecutar la aplicación generada por C++. ¿Qué observó en la ejecución? ¿Cuál es la razón del resultado?
Se colocó el carácter “ $ ”, al momento de ejecutar solo analizo hasta el operador de multiplicación ,siguientemente se detuvo ya que el carácter “ $ ” no estaba definido como lenguaje permitido en nuestro compilador.
c) Elimine el carácter “;” de alguna de las instrucciones. Vuelva a ejecutar la aplicación. ¿Qué observó en la ejecución? ¿Cuál es la razón del resultado?
El programa ejecuto normalmente, esto sucede porque el analizador léxico solo aprueba que los elementos del código fuente ingresados seas reconocidos en su lenguaje programado, mas no ejecuta funciones, eso sería parte del analizador sintáctico.
d) Explique detalladamente que es lo que realiza la función siguienteToken().
En esa función, se analiza el código carácter por carácter hasta que pueda identificar el siguiente componente léxico reconociendo los valores que podrían ser aceptados y que ya están definidos en el mini compilador, lo cual arrojaría la señal de error o de aceptación.
5.
6.
CONCLUSIONES:
Se logró simular con éxito un mini compilador con un lenguaje simple pero de gran relevancia para fines de estudio y demostración.
Demostramos el funcionamiento de un analizador léxico, que es recibir y leer carácter por carácter de un código fuente proporcionada y determinar si pertenece a su lenguaje programado.
REFERENCIAS BIBLIOGRAFICAS:
“Traductores, Compiladores e Intérpretes: Análisis lexicográfico”, Recuperado de: http://www.lcc.uma.es/~galvez/ftp/tci/tictema2.pdf el 19 de Noviembre del 2016.
“Autómatas y Compiladores: Función del Analizador Sintáctico”. Recuperado de: http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/autocontenido/autocon/31_fu ncion_del_analizador_sintctico.html el 19 de Noviembre del 2016. Sanchez, G., & Valverde, J. (1988). Compiladores e Interpretes: Un enfoque pragmatico. Madrid: Diaz de Santos.