Análisis Lexicográfico

Slides:



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

Introducción ¿Qué es un Algoritmo?
Clasificación de los compiladores
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes Análisis Sintáctico III
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Autómata Finito Un autómata finito (AF) es un modelo de computación muy restringido, sin embargo tiene una gran aplicación en reconocimiento de patrones.
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Teoría de Autómatas y Compiladores
PROF. ING. JULIO CESAR CANO RAMIREZ
Analizadores Sintácticos Descendentes Predictivos
Unidad 2. Análisis léxico
Teoría de lenguajes y compiladores
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Funciones en lenguaje C
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.
Tema 6. Conceptos básicos de programación
Teoría de lenguajes y compiladores
Tema 2 Lenguajes Formales.
Programación de sistemas
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
M.C. Meliza Contreras González
Procesadores del Lenguaje
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Teoría de lenguajes y compiladores
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
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
Compiladores (23/04/ :35) Compiladores Tema 3 Análisis Lexicográfico Scanners.
Universidad Nacional de Jujuy Facultad de Ingeniería
ESTRUCTURA DE DATOS ESD-243
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
Compiladores e intérpretes
Análisis Léxico Área Software de Base.
INFORMATICA VII (Programación e implementación de sistemas)
UNIVERSIDAD VALLE DEL MOMBOY FACULTAD DE INGENIERIA ESCUELA DE COMPUTACIÓN CATEDRA: EDUMATICA Br: JENNY CORONADO C.I
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
FUNDAMENTOS DE PROGRAMACIÓN
Términos algoritmo diseñar algoritmo implementar algoritmo
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
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

El proceso de compilación
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
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
Conceptos y Lenguaje Imperativo
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
Unidad 2 Lenguajes, Expresiones Regulares, Autómatas
FUNDAMENTOS DE PROGRAMACIÓN VARIABLES, CONSTANTES Y TIPOS DE DATOS EN C.
Sintaxis y Semántica. S.Takahashi Fases en el proceso de análisis de lenguajes Lexer Parser caracteres tokensrespuesta.
Transcripción de la presentación:

Análisis Lexicográfico Definición Un analizador léxico o lexicográfico es un programa que procesa una cadena de caracteres y produce como salida una secuencia de tokens, mismos que serán procesados por el analizador sintáctico. Cada token es un elemento abstracto que identifica una clase de símbolos y puede tener asociado uno o varios atributos.

Análisis Lexicográfico Ejemplo: Evaluación de funciones f(x)=3.1416*X+sin(X/2)-X@2 1 2 3 4 Nombre Tipo Paridad Direccion

Análisis Lexicográfico Algunos ejemplos de tokens pueden ser: id – que corresponde a la clase de identificadores: ej. n4, peso, ... Atributos: nombre, lexema, tipo, localidad de memoria, … entero – que identifica a un número como entero: ej. 3, 546, … Atributos: valor, lexema, tipo, localidad de memoria, … real –identifica un número real: ej. 3.14, .89, -2.1, 1.3E-2 op – identifica un operador: ej. +, -, *, :=, … Atributos: nombre, lexema, tipo, prioridad, …

Errores lexicográficos famosos Regla de FORTRAN Los espacios en blanco son insignificantes. Ej. var r1 es lo mismo que varr1 Nota: la regla fue motivada por la falta de precisión de las perforadoras de tarjetas.

Errores lexicográficos famosos PL/1 Los comandos del lenguaje no eran palabras reservadas. Ej. IF ELSE THEN=ELSE; ELSE ELSE=THEN

Errores lexicográficos famosos PL/1 (cont.) Declaraciones: DECLARE(ARG1,…,ARGN) No podemos decir si DECLARE es una palabra reservada hasta procesar el “)”. Requiere de un lookahead arbitrário.

Errores lexicográficos famosos Sintaxis de template: Foo<bar> Sintaxis del stream: cin>>var; El conflicto es cuando generamos templates embebidos: Foo<Bar<Bazz>>

Expresiones Regulares Def. Sea S un conjunto finito de símbolos cualquiera: i). F es una Expresión Regular ii).  (la palabra vacía) es una Expresión Regular. iii). Si a S entonces a es una Expresión Regular. iv). Sean u y v dos Expresiones Regulares cualquiera: uv, u + v, y u* son Expresiones Regulares. v). Nada que no este definido por (i)-(iv) es una expresión regular.

Generador de compiladores LEX %% marca el final de una sección La sección de reglas: Cada regla consiste en dos partes: un patrón y una acción, separadas por un espacio en blanco. Lex ejecuta la acción cada vez que reconoce el patrón. Los patrones son expresiones regulares. Ejemplo: [\t ]+ ; /* ignora los espacios en blanco y los tabs */ Los [] indican que cualquiera de los caracteres dentro de los paréntesis cuadrados encaja en el patrón. La acción es simplemente “;” -- no hagas nada. El siguiente ejemplo usa la barra vertical “|”como acción:

Generador de compiladores Ejemplo: reconocedor de palabras %{ Este ejemplo demuestra la forma en que lex reconoce palabras %} %% [\t ]+ /* ignora los espacios en blanco */ ; did | have | go { printf(“%s: es un verbo\n”, yytext); } [a-zA-Z]+ { printf(“%s: no es un verbo\n”, yytext); } .|\n Main() { yylex(); }

Generador de compiladores Como ejecutar Lex > lex ch1-01.1 > cc lex.yy.c –o first -11 Lex traduce la especificación a un programa en C llamado lex.yy.c que se deberá compilar en C.