Análisis léxico y análisis sintáctico
Click here to load reader
-
Upload
angiepao1717 -
Category
Documents
-
view
6.142 -
download
1
Transcript of Análisis léxico y análisis sintáctico
![Page 1: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/1.jpg)
ANÁLISIS LÉXICO
Y ANÁLISIS
SINTÁCTICO
![Page 2: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/2.jpg)
COMPILADORES
ANÁLISIS LÉXICO
Y
ANÁLISIS SINTÁCTICO
ANGIE EVILLA LUQUEZ
CORPORACIÓN UNIVERSITARIA REMINGTON
INGENIERÍA DE SISTEMAS
![Page 3: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/3.jpg)
ANALISIS LEXICO
FUNCION DEL ANLIZADOR LEXICO
El analizador léxico es la primera fase de un compilador.
Su principal función consiste en leer los caracteres de entrada
y elaborar como salida una secuencia de componentes
léxicos que utiliza el analizador sintáctico para hacer el
análisis.
En algunas ocasiones, los analizadores léxicos se dividen
en una cascada de dos fases; la primera, llamada "examen",
y la segunda, "análisis léxico". El examinador se encarga de
realizar tares sencillas, mientras que el analizador léxico es el
que realiza las operaciones complejas.
![Page 4: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/4.jpg)
ASPECTO DEL ANALISIS LEXICO
Hay varias razones para dividir la fase de análisis de lacompilación en análisis léxico y análisis sintáctico.
Un diseño sencillo es quizá la consideración más importante.Separar el análisis léxico del análisis sintáctico a menudo permitesimplificar una u otra de dichas fases.
Se mejora la eficiencia del compilador. Un analizador léxicoindependiente permite construir un procesador especializado ypotencialmente más eficiente para esta función. Gran parte detiempo se consume en leer el programa fuente y dividirlo encomponentes léxicos. Con técnicas especializadas de manejo debuffer para la lectura de caracteres de entrada y procesamiento decomponentes léxicos se puede mejorar significativamente elrendimiento de un compilador.
Se mejora la transportabilidad del compilador. Laspeculiaridades del alfabeto de entrada y otras anomalías propiasde los dispositivos pueden limitarse al analizador léxico.
![Page 5: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/5.jpg)
COMPONENTES LEXICOS, PATRONES Y LEXEMAS
Cuando se menciona el análisis sintáctico, los términos"componente léxico"(token), "patrón" y "lexema" se empleancon significados específicos.
En general, hay un conjunto de cadenas en la entrada parael cual se produce como salida el mismo componente léxico.Este conjunto de cadenas se describe mediante una reglallamada patrón asociado al componente léxico. Se dice queel patrón concuerda con cada cadena del conjunto.
Lexema es una secuencia de caracteres en el programafuente con la que concuerda el patrón para un componenteléxico.
Los componentes léxicos se tratan como símbolosterminales de la gramática del lenguaje fuente, con nombresen negritas para representarlos.
![Page 6: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/6.jpg)
ATRIBUTOS DE LOS COMPONENTES LEXICOS
Cuando concuerda con un lexema más de un patrón, el analizador léxico debe proporcionar información adicional sobre el lexema concreto que concordó con las fases del compilador.
El analizador léxico recoge información sobre los componentes léxicos en sus atributos asociados.
Los componentes léxicos influyen en las decisiones del análisis sintáctico, y los atributos, en la traducción de los componentes léxicos.
En la práctica, los componentes léxicos suelen tener un solo atributo – un apuntador a la entrada de la tabla de símbolos donde se guarda la información sobre el componente léxico; el apuntador se convierte en el atributo del componente léxico.
![Page 7: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/7.jpg)
CARACTERÍSTICAS DEL ANÁLISIS LÉXICO
Lee caracteres.
Produce componentes léxicos (tokens).
Filtra comentarios.
Filtra separadores múltiples (espacios, tabuladores y
saltos de línea).
Lleva el contador de línea y columna del texto fuente.
Genera errores en caso de que la entrada no corresponda
a ninguna categoría léxica.
![Page 8: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/8.jpg)
ALGUNAS DEFINICIONES
Categoría léxica: Tipo de símbolo elemental del lenguaje
fuente, (identificadores, palabras clave, constantes
numéricas, operadores, ...).
Componente léxico (token): Elemento perteneciente a
una categoría léxica.
Atributos de un componente: Información del
componente necesaria en etapas posteriores del análisis
(valor de la constante, nombre de una variable, ...).
Lexema: Cadena de caracteres correspondiente al
componente léxico.
![Page 9: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/9.jpg)
ANALISIS SINTACTICO
comprueba que las sentencias que componen el texto fuente
son correctas en el lenguaje, creando una representación
interna que corresponde a la sentencia analizada.
De esta manera se garantiza que sólo serán procesadas las
sentencias que pertenezcan al lenguaje fuente. Durante el
análisis sintáctico, así como en las demás etapas, se van
mostrando los errores que se encuentran.
![Page 10: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/10.jpg)
RAZONES POR LAS QUE SE SEPARA LA FASE DEANÁLISIS DE UN COMPILADOR EN ANÁLISISLEXICOGRÁFICO Y ANÁLISIS SINTÁCTICO.
En el diseño del analizador sintáctico, éste no ha de preocuparse de leer el archivo de entrada, ni de saltar blancos, ni comentarios, ni de recibir caracteres inesperados, puesto que todo ello ha sido filtrado previamente por el analizador lexicográfico.
Se mejora la eficiencia del compilador en su conjunto. La lectura del programa fuente suele requerir gran parte del tiempo de compilación, que se ve reducido si el analizador lexicográfico incorpora técnicas especiales de lectura, o está realizado en ensamblador.
Aumenta la portabilidad del compilador, ya que todas las diferencias que se produzcan en el alfabeto de entrada, o en el dispositivo de almacenamiento, pueden ser reducidas al analizador lexicográfico, dejando al analizador sintáctico intacto.
![Page 11: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/11.jpg)
FUNCIÓN DEL ANÁLISIS SINTÁCTICO
Analizar sintácticamente una cadena de tokens no es más
que encontrar para ella el árbol sintáctico o de derivación
que tiene como raíz el axioma de la gramática, y como
nodos terminales la sucesión ordenada de símbolos que
componen la cadena analizada.
En caso de no existir este árbol sintáctico, la cadena no
pertenecerá al lenguaje, y el analizador sintáctico ha de
emitir el correspondiente mensaje de error.
Existen dos formas de analizar sintácticamente una
cadena:
![Page 12: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/12.jpg)
ANÁLISIS DESCENDENTE: Partiendo del axioma inicial de lagramática se va descendiendo utilizando las derivacionesizquierdas, hasta llegar a construir la cadena analizada.
Análisis ascendente: Se va construyendo el árbol desde susnodos terminales. Es decir, se construye desde los símbolos de lacadena hasta llegar al axioma de la gramática.
Simultáneamente a la fase de análisis sintáctico, además de reconocerlas secuencias de tokens, y analizar su estructura, pueden realizarseuna serie de tareas adicionales, como:
Recopilar información de los distintos tokens y almacenarla en latabla de símbolos.
Realizar algún tipo de análisis semántico, tal como la comprobaciónde tipos.
Generar código intermedio.
Avisar de los errores que se detecten.
![Page 13: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/13.jpg)
Bibliografía:
http://www.galeon.com/shock/tareas.html
http://www.uhu.es/francisco.moreno/gii_pl/doc
s/Tema_2.pdf
http://informatica.uv.es/docencia/iiguia/asignat
u/2000/PL/2008/tema2.pdf
![Page 14: Análisis léxico y análisis sintáctico](https://reader037.fdocuments.mx/reader037/viewer/2022092914/559c46771a28ab85218b46e8/html5/thumbnails/14.jpg)
GRACIAS!!!