resumen temas analisis lexico

6
Fase de análisis El análisis léxico constituye la primera fase, aquí se lee el programa fuente de izquierda a derecha y se agrupa en componentes léxicos (tokens), que son secuencias de caracteres que tienen un significado. Además, todos los espacios en blanco, líneas en blanco, comentarios y demás información innecesaria se elimina del programa fuente. También se comprueba que los símbolos del lenguaje (palabras clave, operadores, etc.) se han escrito correctamente. Función del análisis léxico 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. [Símbolo] 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. Componente Léxico (Token) Un token o también llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación. Ejemplos de tokens podrían ser palabras clave (if, else, while, int,...), identificadores, números, signos, o un operador de varios caracteres, (por ejemplo, :=). Los componentes léxicos más comunes son los siguientes: 1. Palabras clave o reservadas: Operadores aritméticos Operadores

Upload: rafael-rivera

Post on 24-Dec-2015

16 views

Category:

Documents


2 download

DESCRIPTION

Resumen Temas Analisis Lexico (Compiladores e interpretes)

TRANSCRIPT

Page 1: Resumen Temas Analisis Lexico

Fase de análisis

El análisis léxico constituye la primera fase, aquí se lee el programa fuente de izquierda a derecha y se agrupa en componentes léxicos (tokens), que son secuencias de caracteres que tienen un significado. Además, todos los espacios en blanco, líneas en blanco, comentarios y demás información innecesaria se elimina del programa fuente. También se comprueba que los símbolos del lenguaje (palabras clave, operadores, etc.) se han escrito correctamente.

Función del análisis léxico

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. [Símbolo] 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.

Componente Léxico (Token)

Un token o también llamado componente léxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programación. Ejemplos de tokens podrían ser palabras clave (if, else, while, int,...), identificadores, números, signos, o un operador de varios caracteres, (por ejemplo, :=).

Los componentes léxicos más comunes son los siguientes:

1. Palabras clave o reservadas:Operadores aritméticosOperadoresRelacionalesOperadores lógicosOperador de asignaciónIdentificadoresConstantesCadenasLiteralesSignos de puntuación

Page 2: Resumen Temas Analisis Lexico

Librerías

2. Atributos de los componentes léxicos:

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:

Apuntador a la entrada de la Tabla de símbolos donde se guarda la información sobre el componente léxico.El lexema para un identificadorEl número de línea en que se encontró por primera vez.

Análisis semántico

Se trata de determinar el tipo de los resultados intermedios, comprobar que los argumentos que tiene un operador pertenecen al conjunto de los operadores posibles, y si son compatibles entre sí, etc. En definitiva, comprobará que el significado de lo que se va leyendo es válido.

El análisis semántico se realiza posteriormente al sintáctico y mucho más difícil de formalizar que éste.

Que es un arbol semantico?

Es una estructura jerárquica en la cual se registran las operaciones que implica u operan dentro del programa fuente.

Tabla de simbolos

Un compilador necesita guardar y usar la información de los objetos que se va encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos, etc.

Sistemas de tipo: Sistema de tipos: conjunto de reglas que determinan el criterio para asignar expresiones de tipo a las diferentes partes del código fuente.

Tipo básico: entero, carácter, real, lógico.

Nombres de tipo.

Constructores de tipo: estructuras, uniones, objetos

Apuntadores: referencias a tipos

Page 3: Resumen Temas Analisis Lexico

Funciones a=suma();

COMPROBACIONES SEMÁNTICAS

Comprobaciones ESTÁTICAS.

Las comprobaciones sintácticas y semánticas.

Comprobaciones DINÁMICAS.

Realizadas en tiempo de ejecución.

Comprobaciones SEMÁNTICAS

De TIPO.

Verificación del tipo de los operandos en las expresiones.

De FLUJO de CONTROL.

Verifica los puntos del programa de salida y entrada del control.

Representaciones internas

Intermedias entre frontal [front-end] y dorsal [back-end], permiten desacoplar los diseños de unos y otros.

Orientadas a:

Su optimización (instrucciones claras y simples)

Generar código de distintas máquinas objeto y el diseño debe permitir su fácil generación por el analizador semántico.

Analizador sintáctico

Un analizador sintáctico (o parser) es una de las partes de un compilador que transforma su entrada en un árbol de derivación.

Page 4: Resumen Temas Analisis Lexico

Elanálisis sintáctico convierte eltexto de entrada en otras estructuras (comúnmente árboles), que son más útiles para el posterior análisis y capturan la jerarquía implícita de la entrada. Un analizador léxico crea tokens de una secuencia de caracteres de entrada y son estos tokens los que son procesados por el analizador sintáctico para construir la estructura de datos, por ejemplo un árbol de análisis o árboles de sintaxis abstracta.

Sistema de tipos

•Sistema de tipos: reglas de un lenguaje que permiten asignar tipos a las distintas partes de un programa y verificar su corrección.

•Formado por las definiciones y reglas que permiten comprobar el dominio de un identificador, y en qué contextos puede ser usado.

•Cada lenguaje tiene un sistema de tipos propio, aunque puede variar de una a otra implementación.

•La comprobación de tipos es parte del análisis semántico.

Funciones principales:

–Inferencia de tipos: calcular y mantener la información sobre los tipos de datos.

–Verificación de tipo: asegurar que las partes de un programa tienen sentido según las reglas de tipo del lenguaje.

Expresiones de tipo

•Un lenguaje de programación contiene un conjunto de tipos predefinido denominados tipos simples.

–Algunos lenguajes permiten definir nuevos tipos simples: enumerado, sub-rango.

Equivalencia de tipos

•Una característica importante del sistema de tipos de un lenguaje de programación es el conjunto de reglas que permiten decidir cuándo dos expresiones de tipo representan al mismo tipo.

•En muchos casos estas reglas no se definen como parte de las especificaciones del lenguaje.

1. Diferentes interpretaciones de los creadores de compiladores.

Page 5: Resumen Temas Analisis Lexico

2. Estas diferencias afectan a la compatibilidad entre diferentes dialectos de un mismo lenguaje.

•Tres formas de equivalencia: estructural, nominal y funcional.

Polimorfismo: una interfaz, métodos múltiples.

•Un lenguaje es polimórfico si una entidad puede tomar más de un tipo.