PROCESADORES DE LENGUAJES
|
|
|
- Eduardo Valverde San Martín
- hace 8 años
- Vistas:
Transcripción
1 PROCESADORES DE LENGUAJES Análisis léxico con Prof. Dr. Nicolás Luis Fernández García Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 1 / 36
2 Contenido del tema 1 Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 2 / 36
3 Características de la generación automática Los componentes léxicos se denotan mediante expresiones regulares. El generador léxico crea automáticamente el código a partir de las expresiones regulares. Generadores léxicos: lex, flex, pclex, jlex,... Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 3 / 36
4 COMPONENTES LÉXICOS Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 4 / 36
5 COMPONENTES LÉXICOS EXPRESIONES REGULARES Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 5 / 36
6 COMPONENTES LÉXICOS EXPRESIONES REGULARES AFN Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 6 / 36
7 COMPONENTES LÉXICOS EXPRESIONES REGULARES AFN AFD Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 7 / 36
8 COMPONENTES LÉXICOS EXPRESIONES REGULARES AFN AFD ANALIZADOR LÉXICO Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 8 / 36
9 COMPONENTES LÉXICOS EXPRESIONES REGULARES AFN LEX AFD ANALIZADOR LÉXICO Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 9 / 36
10 LEX Creado por M. E. Lesk y E. Schmidt (Bell Laboratories). Genera analizadores léxicos para C, Fortran, Raftor. Hay versiones para Unix, Linux, DOS, etc. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 10 / 36
11 Funcionamiento de LEX nombre.l lex.yy.c Expresiones regulares LEX yylex() fichero de lex Analizador léxico Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 11 / 36
12 Funcionamiento de LEX Unix > lex nombre.l > cc -g lex.yy.c -ll -o nombre.exe Linux > flex nombre.l > gcc -g lex.yy.c -lfl -o nombre.exe Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 12 / 36
13 Ejecución >./nombre.exe Redirigiendo la entrada y la salida >./nombre.exe < fichero entrada >./nombre.exe < fichero entrada > fichero salida Usando argumentos desde la ĺınea de comandos >./nombre.exe fichero entrada >./nombre.exe fichero entrada fichero salida Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 13 / 36
14 Estructura del fichero de LEX declaraciones (opcional) % % reglas de traducción de las expresiones regulares % % funciones auxiliares (opcional) Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 14 / 36
15 LEX: expresiones regulares Símbolos especiales: + : disyunción + ( ): agrupación de expresiones regulares + *: repetición de un patrón cero o más veces. + +: repetición de un patrón una o más veces. +?: el patrón puede aparecer cero o una vez. + : delimitadores de cadenas +.: cualquier carácter distinto del salto de ĺınea (\n). + \n: salto de ĺınea + $ : carácter de final de ĺınea + [ ]: delimitadores de clases de caracteres + ˆ : inicio de ĺınea y complementario de una clase. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 15 / 36
16 LEX: expresiones regulares Nota Si se antepone la barra \ delante de un símbolo especial entonces sólo se representa a sí mismo: \. sólo representa el punto. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 16 / 36
17 Ejemplo (LEX: expresiones regulares 1 / 3) Expresión regular Significado a b a, b [ab] a, b ab ab ab+ ab, abb, abbb, (ab)+ ab, abab, ababab, ab* a, ab, abb, (ab)* ɛ, ab, abab, ab{1,3} ab, abb, abbb Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 17 / 36
18 Ejemplo (LEX: expresiones regulares 2 / 3) Expresión regular Significado [a-z] a, b, c,, z [a \-z] a,, z [-az], a, z [az-] a, z, [a-za-z] a, b,, z, A, B,, Z [a-za-z0-9] a, b,, z, A, B,, Z, 0, 1,, 9 [a-za-z0-9]* cero o más veces a, b, c,, 9 [a-za-z0-9]+ una o más veces a, b, c,, 9 Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 18 / 36
19 Ejemplo (LEX: expresiones regulares 3 / 3) Expresión regular Significado [ \t \n] espacio en blanco, tabulador y salto de ĺınea [ˆ ab] cualquier carácter distinto de a o b [a ˆ b] a, acento circunflejo, b a/b a sólo si va seguido de b a$ a si va seguido del carácter \n a/ \n a si va seguido del carácter \n ˆ abc abc si está escrito al principio de la ĺınea [\40-\176] caracteres ASCII imprimibles desde octal 40 (espacio) hasta octal 176 (tilde ) Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 19 / 36
20 LEX: Zona de declaraciones (opcional) Código extendido de lenguaje C delimitado por %{ y } % + Ficheros de cabecera. + Macros. + Prototipos de funciones. + Variables globales + Etc. Directivas de lex: %a, %n %o, %p,... Declaración de definiciones regulares. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 20 / 36
21 LEX: Zona de declaraciones (opcional) Directivas de lex (tablas internas): + %x ESTADO: permite activar reglas condicionales (véase el ejemplo del comentario). + %a número: cambia el número de transiciones empaquetadas. + %n número: cambia el número de transiciones. + %e número: cambia el número de nodos. + %p número: cambia el número de posiciones. + Etc Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 21 / 36
22 Ejemplo (Definiciones regulares 1/2) numero [0-9] letra [a-za-z] identificador {letra}({letra} {numero})* Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 22 / 36
23 Ejemplo (Definiciones regulares 2/2) La definición regular identificador definida como {letra}({letra} {numero}) es transformada en [a za Z]([a za Z] [0 9]) Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 23 / 36
24 LEX: Zona de reglas de traducción expresión regular sentencia de lenguaje C expresión regular { sentencias de lenguaje C } Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 24 / 36
25 Ejemplo (: zona de reglas) % % [ \t] { ; } /* saltar los espacios y los tabuladores */ {numero}+\.? {numero}*\.{numero}+ { sscanf(yytext," %lf",&yylval.val); return NUMBER; } \n {lineno++; return FIN;}. {return yytext[0];} /* Devuelve cualquier otro carácter */ Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 25 / 36
26 LEX: resolución de ambigüedades Si una secuencia de caracteres se puede emparejar con varias expresiones regulares, 1 tiene preferencia la expresión regular que denote la cadena de caracteres de mayor longitud. 2 si la longitud de la cadena es igual, tiene preferencia la que aparezca en primer lugar. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 26 / 36
27 Ejemplo (: resolución de la ambigüedad de if) % % if { return IF; } {identificador} { Symbol *s; if ((s=lookup(yytext)) == 0) s = install (yytext, INDEFINIDA, 0.0); yylval.sym = s; return s->tipo == INDEFINIDA? VAR : s->tipo; } Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 27 / 36
28 LEX: comandos especiales ECHO: imprime por pantalla el texto reconocido. BEGIN: cambia a un estado definido por el programador (véase el ejemplo del comentario). REJECT: rechaza el texto reconocido para que pueda ser procesado por otra regla (véase el ejemplo de pink). Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 28 / 36
29 Ejemplo (ECHO) Imprime por pantalla todos los caracteres % %. \n % % ECHO; Equivalencia % %. \n % % printf(" %s",yytext"); Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 29 / 36
30 LEX: Zona de funciones auxiliares (opcional) Código de funciones auxiliares utilizadas por las reglas de traducción También se pueden incluir + Ficheros de cabecera. + Macros. + Prototipos de funciones. + Declaración de variables globales + Etc. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 30 / 36
31 LEX: variables globales predefinidas yytext: cadena que contiene el texto reconocido (tipo: char *) yyleng: longitud de yytext (tipo: int) yyin: Puntero al fichero de entrada Tipo: FILE * Valor por defecto: stdin, el teclado yyout: Puntero al fichero de salida Tipo: FILE * Valor por defecto: stdout, la pantalla Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 31 / 36
32 LEX: funciones predefinidas yylex(): contiene el analizador léxico generado por flex o lex yymore(): indica a lex que añada el siguiente componente léxico al componente léxico actual (véase el ejemplo hiper). yywrap(): se ejecuta cuando el analizar léxico encuentra el fin de fichero: Si devuelve 0, el analizador léxico continúa explorando. Si devuelve 1 (valor por defecto), el analizador léxico devuelve un componente léxico nulo para indicar el fin del fichero. Esta función puede ser redefinida por el programador. yyless(n): retiene los primeros n caracteres de yytext y devuelve el resto al dispositivo de lectura. Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 32 / 36
33 Ejemplo (: zona de declaraciones 1/3) %{ #include "macros.h" #include "hoc3.h" #include "y.tab.h" extern char *progname; extern int lineno; %} /* definiciones regulares */ numero [0-9] letra [a-za-z] identificador {letra}({letra} {numero})* Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 33 / 36
34 Ejemplo (: zona de reglas 2/3) % % [ \t] { ; } /* saltar los espacios y los tabuladores */ {numero}+\.? {numero}*\.{numero}+ { sscanf(yytext," %lf",&yylval.val); return NUMBER; } {identificador} ; {return FIN ;} \n {lineno++; return FIN;} { Symbol *s; if ((s=lookup(yytext)) == 0) s = install (yytext, INDEFINIDA, 0.0); yylval.sym = s; return s->tipo == INDEFINIDA? VAR : s->tipo; }. {return yytext[0];} /* Devuelve cualquier otro carácter */ Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 34 / 36
35 Ejemplo (: zona de funciones auxiliares 3/3) /***** Zona de funciones auxiliares *****/ extern FILE *yyin, *yyout; main(int cantidad, char *palabras[]) { switch(cantidad) { case 2: yyin=fopen(palabras[1], r ); break; case 3: yyin=fopen(palabras[1], r ); yyout=fopen(palabras[2], w ); } yylex(); } Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 35 / 36
36 PROCESADORES DE LENGUAJES Análisis léxico con Prof. Dr. Nicolás Luis Fernández García Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba Universidad de Córdoba: Escuela Politécnica Superior Ingeniería Informática 36 / 36
Lex. Lex. Ing. Adrian Ulises Mercado Martínez. Enero 30, Ing. Adrian Ulises Mercado Martínez Lex Enero 30, / 27
Lex Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Lex Enero 30, 2015 1 / 27 1 Lex 2 Compilar con lex 3 Estructura de un programa en lex 4 Expresiones Regulares
Generador de analizadores léxicos FLEX
Generador de analizadores léxicos FLEX Procesadores de Lenguajes 4 o Informática PL curso 2008-2009 (CCIA) CCIA Octubre 2008 PL 0809 (CCIA) Introducción a FLEX Octubre-2008 1 / 12 Uso de FLEX FLEX: traduce
LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
1. Funcionamiento de lex
El generador de analizadores léxicos lex. Teoría de Autómatas y lenguajes formales Federico Simmross Wattenberg ([email protected]) Universidad de Valladolid Una vez visto cómo las expresiones regulares
Qué es Lex? Busca concordancias de un conjunto de expresiones regulares y un archivo de entrada y ejecuta acciones asociadas.
Introducción a Flex Qué es lex? Es un programa que genera analizadores léxicos (también conocido como scanners en inglés). Usualmente se usa junto a Yacc Originalmente escrito por Eric Schmidt and Mike
Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas. Práctica 1: Introducción al Analizador Léxico FLEX
Teoría de Autómatas y Lenguajes Formales, IS17 Ingeniería Técnica en Informática de Sistemas Práctica 1: Introducción al Analizador Léxico FLEX Enunciado: El objetivo de esta práctica consiste en aprender
Lex (flex,... ) Generación de analizador léxico p.1
Generación de analizador léxico Lex (flex... ) Generación de analizador léxico p.1 Expresiones regulares tipo grep Expresiones simples (un sólo carácter): carácter carácter. cualquier carácter (excepto
Seminario de introducción a Flex
Seminario de introducción a Flex David Portolés Rodríguez [email protected] Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una
Construcción de un analizador léxico para ALFA con Flex. Construcción de un analizador léxico para ALFA con Flex. Índice (I)
Construcción de un analizador léxico para ALFA con Flex Índice (I) Marina de la Cruz Alfonso Ortega Funciones del analizador léxico/morfológico Construcción de un analizador léxico/morfológico Funcionamiento
Construcción de un analizador léxico para ASPLE con Lex/Flex. Construcción de un analizador léxico para ASPLE con Lex/Flex
Construcción de un analizador léxico para ASPLE con Lex/Flex Índice (i) Marina de la Cruz AlfonsoOrtega Funciones del analizador léxico/morfológico Construcción de un analizador léxico/morfológico Funcionamiento
Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas
Unidad III Análisis Léxico M.C. Juan Carlos Olivares Rojas Agenda 3.1 Introducción a los Autómatas finitos y expresiones regulares. 3.2 Analizador de léxico. 3.3 Manejo de localidades temporales de memoria
Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
8- LEX-Expresiones regulares
8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Funcionamiento del A.L.
ANALIZADOR LEXICO 1 Funcionamiento del A.L. Programa fuente Analizador léxico Componente léxico Obtén el siguiente componente léxico Analizador sintáctico Tabla de símbolos 2 Maneja el fichero del programa
GUÍA BÁSICA DE FLEX Y BISON
GUÍA BÁSICA DE FLEX Y BISON PRÁCTICAS COMPILADORES 4º INGENIERÍA INFORMÁTICA / 1º MÁSTER EN INFORMÁTICA Curso 2011/2012 LEX/FLEX: GENERADOR DE ANALIZADORES LÉXICOS 1. Introducción Lex es una de las herramientas
12 La herramienta LEX
2 Contenido La herramienta Lex Esquema de un fuente en Lex Zona de definiciones Zona de reglas Zona de rutinas del usuario Archivo de salida (lex.yy.c) Copilar un fuente de Lex Opciones estándar Depuración
Teoría de Autómatas y Lenguajes Formales LEX BISON Dr. Eric Jeltsch F. Introducción para los laboratorios y actividades relacionadas.
Introducción para los laboratorios y actividades relacionadas. Flex y Bison son las herramientas desarrolladas en el proyecto GNU (Free Software Foundation) equivalentes a lex y yacc en el sistema operativo
UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS LÉXICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007
UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS LÉXICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis léxico?
Laboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
Una Herramienta para el Análisis Léxico: Lex
Una Herramienta para el Análisis Léxico: Lex Alejandro Viloria Lanero ([email protected]) Teoría de Autómatas y Lenguajes Formales Universidad de Valladolid Como hemos ido viendo, el shell de los sistemas
DESARROLLO DE LA PRÁCTICA DE ANÁLISIS SINTÁCTICO
1/5 DESARROLLO DE LA PRÁCTICA DE ANÁLISIS SINTÁCTICO CREACIÓN DEL FICHERO ALFA.Y 1. En la sección de definiciones, se incorporan los siguientes elementos: #include para utilizar la función fprintf.
ANÁLISIS LÉXICO EXPRESIONES REGULARES
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison
Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero
10 Introducción a BISON/YACC
10 Introducción a BISON/YACC Objetivos: Construir un analizador sintáctico haciendo uso de la herramienta Bison Recursos: Maquina virtual Linux distribución Bodhi LXterminal, Flex, Bison Introducción GNU
Flex a la rápida. José Ignacio Medina
Flex a la rápida José Ignacio Medina Octubre, 2008 Este documento se distribuye bajo una licencia Creative Commons bync-sa 2.0. Usted es libre de copiar, distribuir, comunicar y ejecutar públicamente este
Tema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis
ANALIZADOR LEXICO LEX
ANALIZADOR LEXICO LEX Un analizador lexico también es conocido como escáner; pues su funcionalidad es la de analizar el lexema de las palabras o cadenas de caracteres sobre un patrón definido. Es decir;
PHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Tema 3.- Predicados y sentencias condicionales
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator
YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator 1 INDICE 1. Introducción 2. Especificaciones 3. Ambigüedad y conflictos 4. Tratamiento de errores 5. Uso con el LEX 6. Algunos consejos prácticos
Generador de analizadores sintácticos BISON
Generador de analizadores sintácticos BISON PROCESADORES DE LENGUAJES 4 o Informática http://ccia.ei.uvigo.es/docencia/pl noviembre-2008 2008 ccia PL 1. Introducción Traduce la especificación de una gramática
Tema 2.- Expresiones y funciones
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Programación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Teoría de la Computación
Teoría de la Computación Grado en Ingeniería Informática Prácticas de Laboratorio Profesor: Gregorio de Miguel Casado * email: [email protected] Dpto. de Informática e Ingeniería de Sistemas Escuela de
ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa
ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades
PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009
PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009 PRÁCTICA 2: ANALIZADOR SINTÁCTICO Y TABLA DE SÍMBOLOS. Objetivo de la Práctica Esta práctica tiene como primer objetivo la codificación de un analizador
Tema 2. Análisis lexicográfico
Traductores, Compiladores e Intérpretes 1 Tema 2. Análisis lexicográfico Este capítulo estudia la primera fase de un compilador, es decir su análisis lexicográfico, o más concisamente análisis léxico.
MANEJO DE EXPRESIONES REGULARES
Procesadores de lenguajes Ejercicios del Tema 2 MANEJO DE EXPRESIONES REGULARES Ejercicio 2. Escriba expresiones regulares para los siguientes lenguajes: a) Comentarios que comiencen por
Introducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora
Introducción a los generadores de analizadores léxicos y sintácticos FLEX y BISON: Implementación de una pequeña calculadora Objetivo Con la ayuda de FLEX, el generador automático de analizadores léxicos,
Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno
1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->
8.1. Introdución. %% [b\ t]+ $ ;
8.1. Introdución El lex es un generador de programas diseñado para el proceso léxico de cadenas de caracteres de input. El programa acepta una especificación, orientada a resolver un problema de alto nivel
CAPITULO 4: ENTRADA Y SALIDA DE DATOS.
CAPITULO 4: ENTRADA Y SALIDA DE DATOS. 1. INTRODUCCIÓN. Hemos visto que el lenguaje C va acompañado de una colección de funciones de biblioteca que incluye un cierto número de funciones de entrada/salida.
UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA APUNTES DE CÁTEDRA EL METACOMPILADOR FLEX
UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA Compiladores APUNTES DE CÁTEDRA EL METACOMPILADOR FLEX 1. Qué es y qué hace FLEX? La característica más destacable de las herramientas que vamos a utilizar
UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO JFLEX LENGUAJES FORMALES Y AUTÓMATAS CURSO 2005/2006
UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO JFLEX LENGUAJES FORMALES Y AUTÓMATAS CURSO 2005/2006 Qué es el análisis léxico? El análisis
FLEX: Un generador de analizadores léxicos. AT&T Lex (más común en UNIX) MKS Lex (MS-Dos) Flex Abraxas Lex Posix Lex ScanGen JLex...
Como hemos visto, el paso de una expresión regular a un AF se puede hacer de manera automatizada Existen varias herramientas que relizan dicho trabajo Generadores de analizadores léxicos AT&T Lex (más
Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones
Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos
Analizador Sintáctico RECURSIVO
Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 Analizador Sintáctico RECURSIVO ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN
Escribir la expresión regular de un número entero que no acepte que el primer dígito sea cero salvo el número 0. Solución: 0 [1-9][0-9]*
Procesadores de lenguaje Ejercicios del Tema 2 Ejercicio 2.1 Sean L = {a, aa, b} y M = {ab, b }. Describe LM y M 3 por enumercaión LM = { aab, ab, aaab, bab, bb } M 3 = { ababab, ababb, abbab, abbb, babab,
Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani
Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:
Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.
Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el
Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:
09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,
Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa
Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa 1 Léxico, sintaxis y semántica de un lenguaje #include #include
JLex. JLex. Instalación JLex. Generación y Ejecución del Analizador Léxico. Lex en Java
JLex Lex en Java JLex es un analizador Lexico en Java. JLex Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá JLex fue desarrollado por Elliot Berk (Princeton
En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
YACC. Los símbolos terminales que la gramática empleará. El axioma o símbolo inicial de la gramática. %token. %start
YACC Yacc (Yet Another Compiler Compiler) es un programa que permite construir analizadores gramaticales en C a partir de una gramática libre al contexto. Junto con Lex permite construir rápidamente las
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
Lenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
Analizador Léxico en LEX
Compiladores 1 Argueta Cortes Jairo I. Universidad Nacional Autónoma de México Facultad de Ingeniería Compiladores Grupo 1 en LEX ALUMNOS: ARGUETA CORTES JAIRO I. MENDOZA GAYTAN JOSE TRINIDAD PROFESORA:
Introducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
LENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX
PROCESADORES DE LENGUAJE Ingeniería Informática Especialidad de Computación Tercer curso Segundo cuatrimestre Departamento de Informática y Análisis Numérico Escuela Politécnica Superior de Córdoba Universidad
Manual de referencia del lenguaje Micro-C
Manual de referencia del lenguaje Micro-C Profesor: Egdares Futch H. Introducción Una parte importante de los cursos de (Ingeniería de Lenguajes de Programación) se centra en la experiencia de escribir
Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Tema 5 Tabla de Símbolos
Traductores, Compiladores e Intérpretes 1 Tema 5 También se la llama tabla de nombres o tabla de identificadores y tiene dos funciones principales: - Efectuar chequeos semánticos. - Generación de código.
Algoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Uso de la herramienta YACC
1 Compiladores / Guía VI / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología Uso de la herramienta YACC Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF
ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un
Flex, versión 2.5. Un generador de analizadores léxicos rápidos. Edición 2.5, Abril 1995. Vern Paxson
Flex, versión 2.5 Un generador de analizadores léxicos rápidos. Edición 2.5, Abril 1995 Vern Paxson Copyright c 1990 The Regents of the University of California. All rights reserved. This code is derived
Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Léxico Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análisis Léxico Programa Lenguaje Fuente Análisis Léxico (Token, Lexema)
Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, técnicas y herramientas, Tema 3, páginas: 85-158.
Tema 2 Análisis Léxico Bibliografía: Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, técnicas y herramientas, Tema 3, páginas: 85-158. Louden, K.C. (1997), Compiler Construction: Principles
Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006
Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Objetivos Conocer los elementos que conforman un programa en C 1. Elementos léxicos de un Programa Cuando el programa
INTRODUCCIÓN AL LENGUAJE C
INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática EUP ULPGC Jose Torres 1 de 36 Historia de C Precursores: muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken Thompson, 1970) C fue diseñado
Tema: Autómatas de Estado Finitos
Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Autómatas de Estado Finitos Contenido En esta guía se aborda la aplicación de los autómatas en el campo de
Tema 5. Entrada y Salida
Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros
Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis léxico Formalización y desarrollo Javier Vélez Reyes [email protected]
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática
Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2013-2014. 1º Grado en Informática Práctica 2: Memoria dinámica y Bibliotecas Objetivos Practicar conceptos
Introducción a Flex y Bison
Prácticas de Lenguajes, Gramáticas y Autómatas, cuarto cuatrimestre (primavera) de Ingeniería en Informática http://webdiis.unizar.es/asignaturas/lga Profesor Responsable: Rubén Béjar Hernández Dpto. Informática
Hoja técnica sobre yacc 1 y lex 2. Introducción. lex PL, 2014/2015 1
PL, 2014/2015 1 Introducción Hoja técnica sobre yacc 1 y lex 2 Los programas yacc y lex son herramientas de gran utilidad para un diseñador de compiladores. Muchos compiladores se han construido utilizando
Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación
1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos
Examen de Procesadores de Lenguaje
Apellidos: Nombre: Dni: Examen de Procesadores de Lenguaje Junio de 2007 (2 horas y 45 minutos) Instrucciones Entrega esta hoja, rellenada con tus datos, junto a tu examen cuando lo entregues. Ten en cuenta
Analizador De léxico. V A R i : I N T E G E R ; \n...
UNIDAD III Analisis de Lexico 3.1 Analizador de Lexico La tarea del análisis de léxico es reconocer símbolos en un flujo de caracteres y presentarlos en una representación mas util para el análisis sintáctico.
Curso de Java Introducción a la Programación I
Curso de Java Introducción a la Programación I Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Sintaxis Java 2 Salida de datos 3 Entrada de datos Índice 1 Sintaxis Java
Tema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
SSL Guia de Ejercicios
1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3.
Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
