Teoría de Autómatas y Lenguajes Formales LEX BISON Dr. Eric Jeltsch F. Introducción para los laboratorios y actividades relacionadas.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Teoría de Autómatas y Lenguajes Formales LEX BISON Dr. Eric Jeltsch F. Introducción para los laboratorios y actividades relacionadas."

Transcripción

1 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 UNIX. Están asociadas al lenguaje C, aunque flex puede también generar su salida en el lenguaje C++. GNU es software libre: no significa que sea gratis o no (normalmente sí), sino que eres libre para usarlo, modificarlo y distribuirlo, pero bajo ciertas normas, que en este caso, están recogidas básicamente en la GNU General Public License, que deberían conocerlas. Equivalencia de la notación vista en teoría y la de Flex El alfabeto Σ que maneja Flex es el compuesto por los caracteres manejables por el sistema, p.ej., todos los símbolos del código ASCII. En las prácticas trabajaremos con letras (las mayúsculas y las minúsculas son distintos símbolos del alfabeto), números y signos de puntuación. Diseñar un programa con Flex que elimine los caracteres blancos del final de cada línea del texto de entrada y reduzca a un solo blanco cualquier grupo de blancos del interior de cada línea (se entiende por blanco el espacio en blanco y el carácter de tabulación). Escuela Ingeniería en Computación, Universidad de La Serena. Página 1

2 Ejemplos: /* * Reemplazar la cadena "username" desde la entrada standard * por el "login" del usuario. */ % #include <unistd.h> % username printf("%s\n", getlogin()); main() yylex(); int yywrap()return 1; /* encuentra la palabra más larga introducida desde la entrada standard */ % #include <strings.h> int longest = 0; char longword[60]; % [a-za-z]+ if (yyleng > longest) longest = yyleng; strcpy (longword, yytext);. \n ; int main (void) yylex (); printf ("La palabra mas larga es \"%s\", con %d caracteres.\n", longword, longest); return 0; yywrap()return 1; /* reconoce dígitos */ DIGITO [0-9] DIGITO printf("esto es un digito %s \n", yytext); main()yylex(); Escuela Ingeniería en Computación, Universidad de La Serena. Página 2

3 yywrap()return 1; /* reconoce números reales */ DIGITO [0-9] NATURAL DECIMAL DIGITO+ NATURAL?\.NATURAL SIGNO [+-]? EXPONENTE [ee]signonatural MANTISA SIGNO(NATURAL DECIMAL) MANTISAEXPONENTE printf("esto es un número real %s\n", yytext); main()yylex(); yywrap()return 1; %#include <stdio.h> #include <stdlib.h> % DIGITO [0-9] DIGITO+ return atoi(yytext); void main() /* calcula la media de los números introducidos por el teclado */ int val, total=0, n=0; while ((val=yylex())> 0) total += val; n++; if (n>0) printf("la media es %d\n", total/n); yywrap() return 1; /* cifrado de Cesar: reemplaza un caracter con el que le sigue tres */ /* letras después, desplazando la Z (OR z) sobre el inicio del */ /* alfabeto[a-z (OR [a-z]) */ [a-z] char ch = yytext[0]; Escuela Ingeniería en Computación, Universidad de La Serena. Página 3

4 ch += 3; if (ch > 'z') ch -= ('z'+1-'a'); printf ("%c", ch); [A-Z] char ch = yytext[0]; ch += 3; if (ch > 'Z') ch -= ('Z'+1-'A'); printf ("%c", ch); main() yylex(); int yywrap()return 1; /* cifrado de Cesar: reemplaza un caracter con el que le sigue tres */ /* letras después, desplazando la Z (OR z) sobre el inicio del */ /* alfabeto[a-z (OR [a-z]) */ [a-wa-w] printf ("%c", yytext[0]+3); [xyzxyz] printf ("%c", yytext[0]-23); main() yylex(); int yywrap()return 1; /* L2 es el conjunto de palabras en el alfabeto a,..., z */ /* conteniendo un numero par de a's y de b's. */ /* Saca por pantalla las palabras en L2 y reemplaza por */ /* puntos las demás. */ C [c-z]* L2 (C aca bcb (acb bca)(aca bcb)*(acb bca))* L2 ECHO;. printf("."); \n ECHO; main() yylex(); yywrap() return 1; /* En un texto, cuanta el numero de palabras, de frases, calcula */ /* la longitud media de una palabra y el numero medio de palabras */ /* por frase. */ int ContadorPalabras=0, ContadorFrase=0, LongitudPalabra=0; Escuela Ingeniería en Computación, Universidad de La Serena. Página 4

5 [A-Za-z] ContadorPalabras++; LongitudPalabra+= yyleng; [.?!]+ ContadorFrase++;. \n ; main() yylex(); yywrap() printf("numero de palabras: %d\n", ContadorPalabras); if (ContadorPalabras!= 0) printf("longitud media de una palabra: %e\n", LongitudPalabra/(float)ContadorPalabras); printf("numero de frases: %d\n", ContadorFrase); if (ContadorFrase!= 0) printf("numero medio de palabras en una frase: %g\n", ContadorPalabras/(float)ContadorFrase); return(1); /* Supresión de comentarios en un programa Pascal. Las delimitadores */ /* son y (* *). Si los delimitadores aparecen en el interior de */ /* una cadena delimitada por ' ', no se trata de comentarios. */ /* usando condiciones de arranque inclusivas */ %s COM1 COM2 STRING <STRING>' BEGIN 0, ECHO; <STRING>. \n "(*" \ ECHO; <COM1>\ BEGIN 0; <COM1>. \n "(*" \ ; <COM2>"*)" BEGIN 0; <COM2>. \n "(*" \ ; ' BEGIN STRING, ECHO; \ BEGIN COM1; "(*" BEGIN COM2; main() yylex(); yywrap() return 1; /* Lee e interpreta números romanos. */ /* Fijarse, por ejemplo, que si lee un I, no aplica la acción hasta no estar seguro de que el siguiente simbolo no es V o X */ WS [ \t]+ int total=0; I total += 1; IV total += 4; Escuela Ingeniería en Computación, Universidad de La Serena. Página 5

6 V total += 5; IX total += 9; X total += 10; XL total += 40; L total += 50; XC total += 90; C total += 100; CD total += 400; D total += 500; CM total += 900; M total += 1000; WS \n return total; int main (void) int first, second; first = yylex (); second = yylex (); printf ("%d + %d = %d\n", first, second, first+second); return 0; yywrap()return 1; /* Supresion de espacios inutiles en el texto, añadiendo un */ /* espacio despues de los simbolos de puntuación y restableciendo */ /* las mayúsculas olvidadas. */ int ch; /* es identico a poner %s MAYUSCULA */ %START MAYUSCULA <MAYUSCULA>[a-z] printf("%c", yytext[0] + 'A' - 'a'); BEGIN 0; <MAYUSCULA>[^ \t\n] ECHO; BEGIN 0; ^[ \t]+ ; [ \t]+$ ; [ \t]+ printf(" "); [.?!]+ ECHO; BEGIN MAYUSCULA; [.?!]+[a-z] ch = yytext[yyleng-1] + 'A' - 'a'; yytext[yyleng-1] = ' '; printf("%s%c", yytext, ch); [.?!]+[A-Z] ch = yytext[yyleng-1]; yytext[yyleng-1] = ' '; printf("%s%c", yytext, ch); [,;:]+[A-Za-z] printf("%c%c", yytext[0], yytext[1]); Escuela Ingeniería en Computación, Universidad de La Serena. Página 6

7 main (void) yylex(); yywrap()return 1; Lenguajes Regulares. Expresiones simples c reconoce el carácter c. cualquier carácter excepto salto de linea ( nn ) [abc] cualquier carácter del conjunto ( a, b ó c ) [ˆabc] cualquier carácter excepto los del conjunto [a-z] cualquier carácter del rango indicado [ˆa-z] cualquier carácter excepto los del rango "xxxx" reconoce la cadena indicada de forma literal Operadores (de mayor a menor precedencia) R* reconoce 0 ó más repeticiones de R R+ reconoce 1 ó más repeticiones de R R? reconoce 0 ó 1 ocurrencia de R (opcional) Rn reconoce n repeticiones exactas de R Rn,m reconoce de n a m repeticiones de R (R) agrupa expresiones regulares RS reconoce la concatenación de R y S R S reconoce o R o S ˆR reconoce la expr. R si está al inicio de linea R$ reconoce la expr. R si está al final de linea Siendo R y S expr. regulares FLEX. Compilar las dos especificaciones FLEX siguientes y comprobar su funcionamiento. EJEMPLO 1 Cuenta el número de líneas y caracteres que hay en el archivo de entrada. % int num_lineas = 0, num_caracteres = 0; % \n num_lineas++; num_caracteres++;. num_caracteres++; int yywrap() return 1; main() while (yylex()); printf("no. lineas = %d, No. caracteres = %d\n", num_lineas, num_caracteres); Escuela Ingeniería en Computación, Universidad de La Serena. Página 7

8 COMPILACIÓN $ flex prueba1.l $ gcc -o prueba1 lex.yy.c EJEMPLO 2 Genera una copia del archivo de entrada, en la que se han eliminado las líneas en blanco, los espacios al inicio y al final de línea, dejando un único espacio entre palabras. % #include <stdio.h> /* Incluye el protopipo de la funcion putchar() */ % ^\n ; /* Lineas en blanco */ ^" "+\n ; /* Lineas solo con espacios */ ^" "+ ; /* Espacios al principio de la linea */ " "+$ ; /* Espacios al final de la linea */ " "+ putchar(' '); /* Sustituir multiples espacios por uno solo */ COMPILACIÓN $ flex prueba2.l $ gcc -o prueba2 lex.yy.c -lfl 2. Ejercicio práctico. Escribir un fuente Flex que lea un archivo de texto, realice las siguientes acciones y presente los resultados por pantalla. a) Contar el número de secuencias de caracteres escritas completamente en mayúsculas. b) Contar el número de secuencias de caracteres escritas completamente en minúsculas. c) Contar el número de secuencias de caracteres que mezclen mayúsculas y minúsculas. d) Contar el número de números enteros. e) Contar el número de números reales. (1) f) Calcular la suma de todos los números enteros encontrados. (2) g) Calcular la suma de todos los números reales encontrados. (2) BISON. Bison es una herramienta de gran potencia que, en uso conjunto con Flex, permite construir compiladores. En esta introducción se vé una pequeña introducción a Bison, haciendo hincapié en el aspecto que más nos interesa en esta asignatura, que es su capacidad para reconocer palabras que pertenecen al lenguaje generado por una gramática libre de contexto. Recordar la jerarquía de Chomsky para entender la forma que tienen este tipo de gramáticas. Un archivo fuente Bison describe una gramática. El ejecutable correspondiente nos dice si una entrada textual corresponde o no al lenguaje generado por la gramática. Es importante notar la diferencia con Flex: en este Escuela Ingeniería en Computación, Universidad de La Serena. Página 8

9 caso se toma la entrada como una única palabra para la que hay que ver si está o no en el lenguaje que genera la gramática. Un archivo fuente Bison es de la forma: %token α α α... α n %start β γ ; 1 γ 2 ;... γ ; k Donde α α α... α es el alfabeto (conjunto de terminales de la gramática), β es el símbolo n inicial (no terminal de la gramática), y γ γ son las reglas o producciones de la gramática k Los símbolos terminales se denominan en Bison tokens. Cada regla (producción) se escribe de la forma: X : X... X ; (dos puntos en lugar de la flecha, y termina en punto y coma) 1 2 j donde X es una variable (no terminal) y X... X son variables (no terminales) y tokens 1 2 j (terminales). No es necesario declarar las variables de la gramática (conjunto de no terminales de la gramática), ya que todo lo que no sean tokens (que si se declaran) se consideran variables. Ejemplo: Supongamos que queremos generar las palabras del lenguaje formado por las expresiones enteras con paréntesis que utilizan + y * (por ejemplo 4, 4 + 2, (4 + 3) * 5 etc.) : Para ello podríamos crear una gramática muy sencilla: S T T + T T * T T ENTERO ( S ) Que traducida a un fuente básico de Bison sería:: Pero además, necesitaríamos un archivo fuente de Flex (fuente.l) que lea la entrada estándar y genere las ocurrencias de los diferentes tokens de nuestra gramática, es decir: Escuela Ingeniería en Computación, Universidad de La Serena. Página 9

10 Añadimos algunas definiciones de funciones necesarias al fuente de Bison (fuente.y), que quedaría como sigue: y compilamos (ojo con el orden): bison -yd fuente.y (esto genera y.tab.c e y.tab.h) flex fuente.l (esto genera lex.yy.c) gcc y.tab.c lex.yy.c -lfl -L/opt/flex/lib -o ejemplo Nota: cuidado con el nombre que le den a los tokens en Bison. Si los llaman a, b, c etc., se producen colisiones con algunas variables internas de Flex. Es mejor que los llamen de forma algo más complicada como t_a, t_b etc. Escuela Ingeniería en Computación, Universidad de La Serena. Página 10

11 Sugerencia de Actividades o aplicaciones a realizar en el contexto de TALF: 1) El objetivo es entregar una propuesta para verificar la sintaxis, parcialmente, de documentos XML con Flex y Bison. a) ver los aspectos básicos del estándar XML y seguir explorando las posibilidades de Flex y de Bison, no de construir un parser completo y correcto de XML. b) Estudiar la estructura de los documentos XML c) Recordar algunos y estudiar otros, el concepto de XML bien formado. d) Darse ejemplos de documento XML bien formado. e) Recordar algunos y estudiar otros, el concepto de XML válido.(dtd) f) Lea un archivo XML con Flex 2) Utilizar Bison para generar ejecutables que reconozcan los siguientes lenguajes. Esto quiere decir que para las palabras del lenguaje la salida debe ser vacía y para las que no pertenecen al lenguaje parse error. a) L = z a n z a n b m z b m z m, n 0 b) L = a i b j c j d i i,j 1 c) L = 0 m 1 n m > n 0 3) Usar Flex para simular como trabaja un AFD. Bibliografía Escuela Ingeniería en Computación, Universidad de La Serena. Página 11

Generador de analizadores léxicos FLEX

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

Más detalles

Lex. Lex. Ing. Adrian Ulises Mercado Martínez. Enero 30, Ing. Adrian Ulises Mercado Martínez Lex Enero 30, / 27

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

Más detalles

Práctica 3 Introducción al Manejo de Bison

Práctica 3 Introducción al Manejo de Bison Práctica 3 Introducción al Manejo de Bison Tareas 1. Estudia la sección sobre Bison en el documento Intro_Flex_Bison.pdf (página 10 a nal) y descarga el manual de Bison como soporte para consultas (bison.pdf).

Más detalles

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

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.

Más detalles

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 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

Más detalles

PROCESADORES DE LENGUAJES

PROCESADORES DE LENGUAJES 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

Más detalles

FLEX: A FAST LEXICAL ANALYZER GENERATOR

FLEX: A FAST LEXICAL ANALYZER GENERATOR FLEX: A FAST LEXICAL ANALYZER GENERATOR Especificación Léxica Fichero.l flex Programa con la implementación del AFD, código fuente, yy.lex.c yy.lex.c Compilador de C milex (ejecutable) cc yylex.c o milex

Más detalles

Prácticas de Lenguajes, Gramáticas y Autómatas

Prácticas de Lenguajes, Gramáticas y Autómatas Prácticas de Lenguajes, Gramáticas y Autómatas Cuarto cuatrimestre (primavera) de Ingeniería en Informática Curso 2010-2011 http://webdiis.unizar.es/asignaturas/lga Profesor Responsable: Jorge Júlvez Dpto.

Más detalles

Qué es Lex? Busca concordancias de un conjunto de expresiones regulares y un archivo de entrada y ejecuta acciones asociadas.

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

Más detalles

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison

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

Más detalles

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final

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)

Más detalles

1. Funcionamiento de lex

1. Funcionamiento de lex El generador de analizadores léxicos lex. Teoría de Autómatas y lenguajes formales Federico Simmross Wattenberg (fedesim@infor.uva.es) Universidad de Valladolid Una vez visto cómo las expresiones regulares

Más detalles

FLEX: A FAST LEXICAL ANALYZER GENERATOR

FLEX: A FAST LEXICAL ANALYZER GENERATOR FLEX: A FAST LEXICAL ANALYZER GENERATOR Especificación Léxica Fichero.l flex Programa con la implementación del AFD, código fuente, yy.lex.c yy.lex.c Compilador de C milex (ejecutable) Para compilar flex

Más detalles

Práctica No. 4 Programas en Lex

Práctica No. 4 Programas en Lex Práctica No. 4 Programas en Lex Objetivo El objetivo de esta práctica es conocer el programa flex y utilizarlo para crear y compilar algunos ejemplos de programas Lex autónomos. Introducción Podemos definir

Más detalles

8- LEX-Expresiones regulares

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

Más detalles

Yacc/Bison. Introducción

Yacc/Bison. Introducción Yacc/Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo casple Comunicación entre las funcionesmain(), yylex() eyyparse() Formato

Más detalles

10 Introducción a BISON/YACC

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

Más detalles

Lex (flex,... ) Generación de analizador léxico p.1

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

Más detalles

Seminario de introducción a Flex

Seminario de introducción a Flex Seminario de introducción a Flex David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Flex? Flex es un una

Más detalles

Prácticas de Lenguajes, Gramáticas y Autómatas

Prácticas de Lenguajes, Gramáticas y Autómatas Prácticas de Lenguajes, Gramáticas y Autómatas Cuarto cuatrimestre (primavera) de Ingeniería en Informática Curso 2004-2005 http://webdiis.unizar.es/asignaturas/lga Profesor Responsable: Rubén Béjar Hernández

Más detalles

Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas

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

Más detalles

Prácticas de Lenguajes, Gramáticas y Autómatas

Prácticas de Lenguajes, Gramáticas y Autómatas Prácticas de Lenguajes, Gramáticas y Autómatas Prácticas 3 y 4 Cuarto cuatrimestre (primavera) de Ingeniería en Informática Curso 2010-2011 http://webdiis.unizar.es/asignaturas/lga Profesor Responsable:

Más detalles

4. (Junio 2005) Se está diseñando un lenguaje de programación para manejar objetos gráficos. Entre las constantes que tiene que manipular están las

4. (Junio 2005) Se está diseñando un lenguaje de programación para manejar objetos gráficos. Entre las constantes que tiene que manipular están las Universidad Autónoma de Madrid Departamento de Ingeniería Informática 3 er. Curso 2º Cuatrimestre Procesadores de Lenguaje Enunciados sobre análisis morfológico Hoja 1 1. (Junio 2007: test) Cuál de las

Más detalles

Funcionamiento del A.L.

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

Más detalles

Seminario de introducción a Bison

Seminario de introducción a Bison Seminario de introducción a Bison David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Bison? Bison es un una

Más detalles

ANÁLISIS LÉXICO EXPRESIONES REGULARES

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

Más detalles

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. 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

Más detalles

Teoría de la Computación

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: gmiguel@unizar.es Dpto. de Informática e Ingeniería de Sistemas Escuela de

Más detalles

GUÍA BÁSICA DE FLEX Y BISON

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

Más detalles

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. 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

Más detalles

Construcción de una calculadora con Lex/Flex y Yacc/Bison

Construcción de una calculadora con Lex/Flex y Yacc/Bison Construcción de una calculadora con Lex/Flex y Yacc/Bison Índice (i) Marina de la Cruz Alfonso Ortega Descripción de la calculadora Reglas de la gramática Los tokens y sus expresiones regulares para Lex/Flex

Más detalles

YACC. Los símbolos terminales que la gramática empleará. El axioma o símbolo inicial de la gramática. %token. %start

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

Más detalles

Elementos de un programa en C

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

Más detalles

Uso de la herramienta YACC

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

Más detalles

UNIDAD 2 Descripción de un programa

UNIDAD 2 Descripción de un programa Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

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

Más detalles

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

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

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

12 La herramienta LEX

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

Más detalles

Teoría de la Computación

Teoría de la Computación Teoría de la Computación Grado en Ingeniería Informática Prácticas de Laboratorio * Gregorio de Miguel Casado email: gmiguel@unizar.es Elvira Mayordomo Cámara email: elvira@unizar.es Dpto. de Informática

Más detalles

YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator

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

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

Más detalles

Introducción a Flex y Bison

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

Más detalles

Modelos de Computación I. Ingeniería Informática

Modelos de Computación I. Ingeniería Informática Prácticas Pag. 1 Modelos de Computación I Ingeniería Informática Práctica 1 Lex como localizador de expresiones regulares con acciones asociadas Curso 2008-2009 Profesores: Carlos J. Mantas Ruiz Aida Jiménez

Más detalles

Una Herramienta para el Análisis Léxico: Lex

Una Herramienta para el Análisis Léxico: Lex Una Herramienta para el Análisis Léxico: Lex Alejandro Viloria Lanero (aviloria@infor.uva.es) Teoría de Autómatas y Lenguajes Formales Universidad de Valladolid Como hemos ido viendo, el shell de los sistemas

Más detalles

Departamento de Electrónica

Departamento de Electrónica Introducción al Departamento de Electrónica Fundación San Valero Introducción al 1 Introducción al Introducción al 2 Introducción al Introducción al 3 Características del Características del Departamento

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

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:

Más detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

Práctica 4 Análisis LALR para milenguaje y construcción de un traductor de milenguaje

Práctica 4 Análisis LALR para milenguaje y construcción de un traductor de milenguaje Práctica 4 Análisis LALR para milenguaje y construcción de un traductor de milenguaje 1. Objetivos 1. Hacer una introducción práctica a la traducción dirigida por la sintaxis basada en el análisis LALR

Más detalles

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno

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 ->

Más detalles

Programación en Lenguaje C

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

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

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

Más detalles

ANALIZADOR LEXICO LEX

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;

Más detalles

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...

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

Más detalles

Tema 2: Análisis léxico

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

Más detalles

Yacc/Bison. Índice. Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse()

Yacc/Bison. Índice. Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse() Yacc/Bison Índice Marina de la Cruz Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo Flujo de control de las funciones yylex() e yyparse() Formato del fichero de especificación

Más detalles

DESARROLLO DE LA PRÁCTICA DE ANÁLISIS SINTÁCTICO

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.

Más detalles

2ª Convocatoria 2008/2009 (15-IX-2009) 4º Ing. Informática. CPS. Universidad de Zaragoza Tiempo de realización: 3 horas

2ª Convocatoria 2008/2009 (15-IX-2009) 4º Ing. Informática. CPS. Universidad de Zaragoza Tiempo de realización: 3 horas Tiempo de realización: 3 horas Ejercicio 1 (3 puntos): Se ha definido una cierta sintaxis para representar información de unidades temáticas en un fichero de texto. En este ejercicio nos planteamos el

Más detalles

Nombre y apellidos: Grupo (mañana - tarde). Táchese lo que no proceda.

Nombre y apellidos: Grupo (mañana - tarde). Táchese lo que no proceda. PRUEBA T1 Traductores, compiladores e intérpretes Septiembre. Curso 08/09 Nombre y apellidos: Grupo (mañana - tarde). Táchese lo que no proceda. Se desea construir un programa Lex que reconozca los siguientes

Más detalles

Tema 2: Análisis léxico

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 / 21 Fundamentos del análisis

Más detalles

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas Unidad IV Análisis Sintáctico M.C. Juan Carlos Olivares Rojas Agenda 4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores.

Más detalles

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE) Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben

Más detalles

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero Lenguaje C Tipos de variables Departamento de Electrónica Fundación San Valero Tipos de datos, Cinco tipos de datos básicos: Carácter (char): 8 bits -128 a 127. Entero (int): 32 bits -2.147.483.648 a 2.147.483.647.

Más detalles

Programación En Lenguaje C

Programación En Lenguaje C Programación En Lenguaje C Introducción Básica para Primero de Bachillerato TECNOLOGÍA DE LA INFORMACIÓN IES PALAS ATENEA Lenguaje C Estructurado Secuencial De alto Nivel Altamente portable Necesita un

Más detalles

Introducción a Python. Cecilia Manzino

Introducción a Python. Cecilia Manzino Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede

Más detalles

FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS

FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS Para la corrección de la Práctica de Procesadores de Lenguajes, y como se indica en la especificación de la misma (http://dlsiisv.fi.upm.es/procesadores/practica.html),

Más detalles

HERRAMIENTAS YACC Y BISON

HERRAMIENTAS YACC Y BISON HERRAMIENTAS YACC Y BISON INTRODUCCION En la actualidad no es posible pensar en la realización computacional de un procesador de lenguajes, como por ejemplo, compiladores, intérpretes, etc., sin utilizar

Más detalles

Prácticas de Lenguajes, Gramáticas y Autómatas

Prácticas de Lenguajes, Gramáticas y Autómatas Prácticas de Lenguajes, Gramáticas y Autómatas Cuarto cuatrimestre (primavera) de Ingeniería en Informática Curso 2003-2004 http://webdiis.unizar.es/asignaturas/lga Profesor Responsable: Rubén Béjar Hernández

Más detalles

Analizador Léxico en LEX

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:

Más detalles

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C Teoría 8: Segunda Parte Estructuras de Datos y Funciones de Entrada en Lenguaje C Int. a la Computación-Int. a la Programación Fund. De la Informática Primer Cuatrimestre 2018 Lenguaje C Objetos de Datos

Más detalles

Construcción de una calculadora con Flex y Bison. Construcción de una calculadora con Flex y Bison. Índice (I)

Construcción de una calculadora con Flex y Bison. Construcción de una calculadora con Flex y Bison. Índice (I) Construcción de una calculadora con Flex y Bison Índice (I) Marina de la Cruz Alfonso Ortega Descripción de la calculadora Reglas de la gramática Los tokens y sus expresiones regulares para Flex Cómo trabajan

Más detalles

Fundamentos de Programación 2017-I

Fundamentos de Programación 2017-I Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis

Más detalles

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009

Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy. Febrero 2009 Introducción a C++ Algoritmos y Estructuras de datos II Dra. Carmen Mezura Godoy Febrero 2009 Índice Elementos básicos Ejecución de un programa Estructuras de control Ciclos Ejercicios 2 Elementos Básicos

Más detalles

Práctica 4 Manejo Avanzado de Bison

Práctica 4 Manejo Avanzado de Bison Práctica 4 Manejo Avanzado de Bison Tareas 1. Estudia la información sobre trazas en el Capítulo 8 - Depurando Su Analizador del manual de Bison (bison.pdf). 2. Realiza el ejercicio propuesto. 3. Elabora

Más detalles

Analizador Sintáctico RECURSIVO

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

Más detalles

Tipos de Datos en C. Palabras reservadas en C

Tipos de Datos en C. Palabras reservadas en C Tipos de Datos en C Tipo Tamaño de bits Rango char 8-128 a 127 unsigned char 8 0 a 255 signed char 8-128 a 127 int 16 32768 a 32767 unsigned int 16 0 a 65535 signed int 16 Igual que int short int 16 Igual

Más detalles

Cadenas de Caracteres

Cadenas de Caracteres Cadenas de Caracteres Modificaciones: Andrés Arcia Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Cadena de Caracteres

Más detalles

Generador de analizadores sintácticos BISON

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

Más detalles

Fundamentos de Informática 4. Primeros Programas, Primeros Diseños

Fundamentos de Informática 4. Primeros Programas, Primeros Diseños Fundamentos de Informática 4. Primeros Programas, Primeros Diseños Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos 1 Empezando con C 2 Variables 3 Entrada de datos 4 Operadores 5 Condiciones

Más detalles

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F) Bucles en lenguaje C Bucle while y forzar detención con break APRENDERAPROGRAMARCOM WHILE Y DO WHILE BREAK EN LENGUAJE C BUCLES MIENTRAS FORZAR SALIDA O TERMINACIÓN EJEMPLO (CU00534F) Sección: Cursos Categoría:

Más detalles

UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA APUNTES DE CÁTEDRA EL METACOMPILADOR BISON INTERFAZ FLEX - BISON

UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA APUNTES DE CÁTEDRA EL METACOMPILADOR BISON INTERFAZ FLEX - BISON UNIVERSIDAD NACIONAL DE JUJUY FACULTAD DE INGENIERÍA Compiladores APUNTES DE CÁTEDRA EL METACOMPILADOR BISON INTERFAZ FLEX - BISON 1. Qué es BISON? BISON, al igual que FLEX, permite generar programas de

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Tema 1: Introducción

Tema 1: Introducción Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 28 Definición de compilador Un compilador

Más detalles

Se guardan en archivos con extencion c y los cabezales con extension h

Se guardan en archivos con extencion c y los cabezales con extension h Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767

Más detalles

Sentencias iterativas

Sentencias iterativas Sentencias iterativas 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Utilizar adecuadamente la sentencia while para generar la repetición en la ejecución de grupos de sentencias 2. Motivación

Más detalles

PROGRAMACION / Clave: 11214

PROGRAMACION / Clave: 11214 PRACTICA 10. Programas en DevC++ 1.- Programa que imprima las tablas de multiplicar del 1 al 10, se deberá hacer una pausa entre tabla y tabla de multiplicar. 2.- Programa que se repita N cantidad de veces

Más detalles

Tema 1. Introducción

Tema 1. Introducción Departamento de Tecnologías de la Información Tema 1 Introducción Ciencias de la Computación e Inteligencia Artificial Índice 1.1 Conceptos 1.2 Un poco de historia 1.3 Estructura de un compilador 1.4 Teoría

Más detalles

TEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr

TEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Septiembre de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: TEORÍA 1.- Escribir una gramática

Más detalles

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio

Más detalles

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 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

Más detalles

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. 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)

Más detalles

Teoría de la Computación

Teoría de la Computación Teoría de la Computación Grado en Ingeniería Informática Prácticas de Laboratorio * Gregorio de Miguel Casado email: gmiguel@unizar.es Elvira Mayordomo Cámara email: elvira@unizar.es Dpto. de Informática

Más detalles