Teoría de lenguajes y compiladores

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

PROGRAMACIÓN EN C.
Análisis Sintáctico Capítulo 4.
Filminas Segunda semana
Clasificación de los compiladores
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Prof. Ing.Maria Rosa Damaso Rios
Análisis Lexicográfico
Teoría de Autómatas y Compiladores
Analizadores Sintácticos Descendentes Predictivos
Unidad 2. Análisis léxico
Teoría de lenguajes y compiladores
Compilador HTML David Morales Marco Jiménez Carlos Márquez
Traducción dirigida por la Sintaxis
3. INTRODUCCIÓN A LA PROGRAMACIÓN
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
Definición del lenguaje XML mediante una gramática
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Teoría de lenguajes y compiladores
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Programación de sistemas
Procesadores del Lenguaje
Teoría de lenguajes y compiladores
FUNDAMENTOS DE PROGRAMACION
ANALISIS SINTACTICO Parte I
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Clasificación de Gramáticas y Manejo de Errores
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
Compiladores (23/04/ :35) Compiladores Tema 3 Análisis Lexicográfico Scanners.
Universidad Nacional de Jujuy Facultad de Ingeniería
FORMA INTERNA DE REPRESENTAR
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Procesadores de Lenguajes
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Semantica.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
Teoría de lenguajes y compiladores
Análisis Léxico Área Software de Base.
INFORMATICA VII (Programación e implementación de sistemas)
Teoría de Autómatas y Lenguajes Formales Informática Técnica de Gestión ESCUELA SUPERIOR DE INFORMATICA Universidad de Castilla-La Mancha Tema 1. Introducción.
Elementos básicos del lenguaje
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
LÓGICA DE PROGRAMACIÓN LSC. Susana Alejandra López Jiménez.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Teoría de lenguajes y compiladores
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Autómatas y Compiladores Novena Semana. Ricardo Vargas Del Valle A35469.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
PRINCIPIOS DE PROGRAMACIÓN
Teoría de lenguajes y compiladores
El proceso de compilación
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
EL TIPO DE DATO LOGICO y constantes.
Autómatas y Compiladores. Segunda Semana. Ricardo Vargas Del Valle A35469.
Conceptos y Lenguaje Imperativo
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Transcripción de la presentación:

Teoría de lenguajes y compiladores Unidad I Analizador lexicográfico Semana 4 Temas Funcionamiento de un analizador lexicográfico. Exploradores

Objetivo General El alumno al finalizar el curso podrá desarrollar aplicaciones que le permitan determinar si una estructura gramatical corresponde a una sentencia valida en la definición de un lenguaje en particular, teniendo en cuenta el contexto sintáctico y semántico. Así mismo estará capacitado para proponer nuevas formas estructurales en la definición de lenguajes de programación.

Objetivos Específicos Diseñar e implementar un analizador lexicográfico. Diseñar e implementar un analizador sintáctico. Diseñar e implementar un analizador semántico.

Objetivos Instruccionales Comprender el funcionamiento de un analizador lexicografico.

Temas Exploradores

¿Qué es un token? Exploradores La salida del analizador léxico es un conjunto de tokens. Un token es una categoría sintáctica En Español: Nombres, verbos, adjetivos, … En un lenguaje de programación Identificadores, Enteros, palabras reservadas, espacios en blanco, … La siguiente etapa, toma los tokens. Ejemplo: Los identificadores se tratan diferente que las palabras reservadas.

Tokens Exploradores Los token corresponden a conjuntos de cadenas. Identificadores: cadenas de letras o dígitos que comienzan con una letra. Enteros: una cadena de dígitos. Palabras reservadas: else, if, begin, … Espacios en blanco: una secuencia de espacios, nuevas líneas, tabuladores. Open par: un paréntesis izquierdo.

Tokens, Patrones y Lexemas Exploradores Tokens, Patrones y Lexemas Lexema.- Es la palabra encontrada en el código fuente Token.- Es la representación usada en el lenguaje Patrón.- Es el conjunto de reglas asociadas a un token.

Token, Patrones y Lexemas Exploradores Token, Patrones y Lexemas Ejemplo: Para el lenguaje c++ Token Lexema Patrón Const const const Relación <,<=,!= <|<=|!= Id x, y, cont letras, seguidas de más letras y dígitos

Exploradores ANALISIS LEXICO El explorador, analizador lexicográfico o “scanner” es la parte del compilador que lee los caracteres del programa fuente y que construye unos símbolos intermedios (que llamaremos “tokens”), por ejemplo las variables, los enteros, palabras reservadas y los delimitadores ( +, - , *, espacio en blanco, etc.)

Implementación del analizador léxico Exploradores Implementación del analizador léxico Una implementación debe hacer dos cosas: Reconocer las subcadenas que corresponden a tokens. Regresar el valor o lexema de un token El lexema es la subcadena.

Implementación del analizador léxico Exploradores Implementación del analizador léxico El Analizador léxico por lo regular descarta tokens que no son "importantes“, tokens que no contribuyen a generar el árbol. Ejemplos: Espacios en blanco, comentarios. Pregunta: ¿Qué pasa si quitamos todos los espacios en blanco y comentarios antes de realizar el análisis léxico?

Razones por las que es conveniente separar el análisis léxico del sintáctico Exploradores Una parte muy elevada del tiempo de compilación se consume en la lectura y exploración de los caracteres del programa fuente. La sintaxis de los símbolos que trata el explorador se describe con una gramática más simple (regular o tipo 3), mucho más simple que la del lenguaje a compilar. En lugar de tener compiladores separados para cada caso, bastara tener exploradores diferentes, pero el resto del compilador seria el mismo.

Funciones principales Exploradores Formación y entrega al parser de los tokens. Estos tokens que entrega formaran los terminales del analizador sintáctico. Manejar el fichero del programa fuente, es decir abrirlo, a continuación leer sus caracteres y cerrarlo. Explorar los literales Listar el programa fuente, llegando en algún caso llevar el control exacto de cada carácter leído para señalar el carácter ofensivo en caso de error. Manejar las macros. Sabemos que una macro es la expansión del texto fuente, de una manera independiente.

Reconocimiento de componentes léxicos Exploradores El problema al que se enfrenta un compilador es detectar si una cadena del programa fuente representa o no un nombre de variable aceptable. Además cualquier estructura léxica en un lenguaje de programación termina con un conjunto de símbolos reconocido como fin de la estructura. A estos símbolos llamaremos marcas de fin de cadena. En el caso de nombres de variables, estas marcas podrían ser espacios, punto y coma, retorno de carro, operadores, etc.

Diagrama de transición(1) Exploradores Diagrama de transición(1) Como paso intermedio en la construcción de un analizador léxico, primero se produce un diagnostico de estado estilizado, llamado diagrama de transición.

Diagrama de transición(2) Exploradores A continuación se muestra un diagrama de transición para el componente léxico oprel (operadores de relación). = < 2 Devuelve (oprel,MEI) 1 > 3 Devuelve (oprel,DIF) Otro = > 4 Devuelve (oprel,MEN) Devuelve (oprel,IGU) 5 Devuelve (oprel,MAI) = 7 6 Otro Devuelve (oprel,MAY) 8

Tabla de transición Exploradores   Tabla de transición Exploradores Es un arreglo bidimensional cuyos elementos proporcionan el resumen de un diagrama de transición.    CARÁCTER LEIDO  ESTADO  <  = >  OTRO 1 5 6 error 2 3 4 8 7  

Segunda practica calificada. Siguiente Semana Segunda practica calificada.

Teoría de lenguajes y compiladores Unidad I Analizador lexicográfico Semana 4 Temas Funcionamiento de un analizador lexicográfico. Exploradores