Teoría de Autómatas y Lenguajes Formales LEX BISON Dr. Eric Jeltsch F. Introducción para los laboratorios y actividades relacionadas.
|
|
- María Victoria Rubio Martínez
- hace 8 años
- Vistas:
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 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 detallesLex. 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 detallesPrá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 detallesLEX. 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 detallesTeorí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 detallesPROCESADORES 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 detallesFLEX: 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 detallesPrá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 detallesQué 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 detallesBison. 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 detallesAnalista 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 detalles1. 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 detallesFLEX: 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 detallesPrá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 detalles8- 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 detallesYacc/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 detalles10 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 detallesLex (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 detallesSeminario 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 detallesPrá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 detallesUnidad 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 detallesPrá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 detalles4. (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 detallesFuncionamiento 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 detallesSeminario 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 detallesANÁ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 detallesConstrucció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 detallesTeorí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 detallesGUÍ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 detallesConstrucció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 detallesConstrucció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 detallesYACC. 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 detallesElementos 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 detallesUso 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 detallesUNIDAD 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 detallesTodo 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 detallesANÁ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 detallesProgramació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 detalles12 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 detallesTeorí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 detallesYACC (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 detallesLenguaje 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 detallesIntroducció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 detallesModelos 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 detallesUna 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 detallesDepartamento 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 detallesTEMA 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 detallesConceptos 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 detallesPrá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 detallesSintaxis 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 detallesProgramació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 detallesInformá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 detallesANALIZADOR 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 detallesFLEX: 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 detallesTema 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 detallesYacc/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 detallesDESARROLLO 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 detalles2ª 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 detallesNombre 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 detallesTema 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 detallesUnidad 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 detallesRepaso 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 detallesTipos 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 detallesProgramació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 detallesIntroducció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 detallesFORMATO 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 detallesHERRAMIENTAS 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 detallesPrá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 detallesAnalizador 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 detallesTeorí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 detallesConstrucció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 detallesFundamentos 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 detallesIntroducció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 detallesPrá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 detallesAnalizador 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 detallesTipos 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 detallesCadenas 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 detallesGenerador 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 detallesFundamentos 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 detallesWHILE 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 detallesUNIVERSIDAD 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 detallesTEMA 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 detallesTema 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 detallesSe 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 detallesSentencias 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 detallesPROGRAMACION / 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 detallesTema 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 detallesTEORÍ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 detallesTEMA 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 detallesLenguaje 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 detallesCompiladores: 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 detallesTeorí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