Análisis léxico y análisis sintáctico

14

Click here to load reader

Transcript of Análisis léxico y análisis sintáctico

Page 1: Análisis léxico y análisis sintáctico

ANÁLISIS LÉXICO

Y ANÁLISIS

SINTÁCTICO

Page 2: Análisis léxico y análisis sintáctico

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

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

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

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

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

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

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

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

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

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

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

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

GRACIAS!!!