Yacc/Bison. Introducción
|
|
|
- Samuel Vargas Miranda
- hace 7 años
- Vistas:
Transcripción
1 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 del fichero de especificación de Yacc/Bison Estructura del fichero Sección de definiciones Yacc/Bison Sección de reglas Sección de funciones de usuario Prácticas de compiladores Introducción Yacc es un generador de analizadores sintácticos LALR(1). Bison es la versión GNU de Yacc. Es totalmente compatible con Yacc. Mejora algunas de las prestaciones de Yacc. Habitualmente Yacc/Bison se utiliza junto con con Lex/Flex. Lex/Flex genera un analizador léxico:yylex() Yacc/Bison genera un analizador sintáctico:yyparse() Prácticas de compiladores
2 Uso de Yacc/Bison con Lex/Flex (I) Construcción del programa objetivocasple (i) *.l Especificación Lex/Flex Especificación Yacc/Bison *.y Lex/Flex Yacc/Bison lex.yy.c y.tab.c yylex( ) yyparse( ) Funciones de usuario *.c gcc Librerías del sistema libl.a / libfl.a liby.a casple VER DESCRIPCIÓN DEL DIAGRAMA EN LA PÁGINA Prácticas de compiladores SIGUIENTE 3 Uso de Yacc/Bison con Lex/Flex (II) Construcción del programa objetivocasple (ii) Lex/Flex construye la funciónyylex() de análisis morfológico a partir del fichero de especificación correspondiente. El fichero donde se ubica la funciónyylex() se llamalex.yy.c. Yacc/Bison construye la funciónyyparse() de análisis sintáctico a partir del fichero de especificación correspondiente. La funciónyyparse() se ubica en el fichero y.tab.c. Las funciones de usuario incluyen funciones de soporte como por ejemplo funciones para generar código, funciones invocadas por Lex y Yacc como por ejemployywrap() oyyerror(), y también la función principal que invoca al analizador sintáctico para realizar la compilación. Todas estás funciones se pueden organizar en varios ficheros. Las librerías del sistema proporcionan versiones sencillas de las funciones que son invocadas por Lex y Yacc así como una versión mínima de la función principal que invoca al analizador léxico o al sintáctico. Si el usuario proporciona estas funciones, no es necesario utilizar las librerías. Dependiendo del sistema operativo, las librerías existen o no, por lo tanto para facilitar la portabilidad del código, es recomendable que el usuario aporte sus propias versiones de las funciones. Para obtener el programa objetivocasple, se compilan y enlazan los ficheros descritos anteriormente. Prácticas de compiladores
3 Uso de Yacc/Bison con Lex/Flex (III) Comunicación entre las funcionesmain(),yylex() eyyparse() (i) main( ) Analizar entrada 0 si análisis OK 1 en otro caso yyparse( ) Solicitud del siguiente token Uso en las acciones yylval Nº del token, 0 si es EOF Valor del token yylex( ) Leer caracteres Fichero de entrada VER DESCRIPCIÓN DEL DIAGRAMA EN LA PÁGINA SIGUIENTE Prácticas de compiladores Uso de Yacc/Bison con Lex/Flex (IV) Comunicación entre las funcionesmain(),yylex() eyyparse() (ii) La funciónmain() invoca a la función de análisis sintácticoyyparse() que devuelve un 0 si termina el análisis con éxito, es decir, si la entrada es sintácticamente correcta. En caso contrario devuelve un 1. La funciónyyparse() solicita a la funciónyylex() los tokens de la entrada y comprueba si forman una construcción válida de acuerdo a las reglas de la gramática descritas en el fichero de especificación correspondiente. Cuando detecta un error sintáctico, es decir, recibe un token que no espera, invoca a la funciónyyerror() y termina el proceso de análisis devolviendo un 1. La funciónyylex() lee el fichero de entrada para identificar los tokens descritos en el fichero de especificación correspondiente. Cada vez que la funciónyylex() devuelve un token al analizador sintáctico, si el token tiene un valor asociado, yylex() guarda ese valor en la variableyylval antes de terminar. Por ejemplo, un identificador de una variable, además de tener un número de token que lo identifica y distingue de otros tipos de tokens, también tiene asociado como valor o atributo, el lexema del identificador. Sin embargo, un paréntesis no tiene asociado ningún valor o atributo. La funciónyyparse() utiliza el valor de la variable yylval en las acciones de las reglas de la gramática. Prácticas de compiladores
4 Formato del fichero de especificación de Yacc/Bison (I) Estructura del fichero Un fichero de especificación de Yacc/Bison tiene tres secciones separadas por líneas que contienen el separador %%. sección de definiciones %{ %} /* delimitadores de código C */ %% sección de reglas %% sección de funciones de usuario Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (II) Sección de definiciones Yacc/Bison (i) En esta sección se puede incorporar bloques de código C que se copiará literalmente en el fichero de salida, definir el tipo de la variable yylval, los símbolos (terminales y no terminales) de la gramática, el axioma de la gramática, y la asociatividad y precedencia de los operadores. Bloque de código C Este bloque contiene: definiciones de macros declaraciones de variables declaraciones de funciones directivas #include... que se van a utilizar en las acciones de las reglas gramaticales. El contenido de esta sección se copia literalmente al principio del fichero y.tab.c que genera Yacc/Bison. Prácticas de compiladores
5 Formato del fichero de especificación de Yacc/Bison (III) Declaración %union Sección de definiciones Yacc/Bison (ii) Por defecto, la variable yylval mediante la cual Lex/Flex le pasa a Yacc/Bison los valores semánticos de los tokens es de tipo int. Pero habitualmente, los valores semánticos de los tokens son de distintos tipos. Por ejemplo, un token de tipo identificador tiene un valor semático de tipochar*, mientras que un token de tipo constante numérica entera tiene un valor semántico de tipo int. Con la declaración %union se define indirectamente una estructuraunion de C con un campo para cada tipo de valor semántico. Por ejemplo, si los tipos de valores semánticos sonint ychar* se utiliza la siguiente declaración : %union { char* cadena int numero } Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (IV) Sección de definiciones Yacc/Bison (iii) Declaración %token (i) Se utiliza para definir los simbolos no terminales (tokens) de la gramática. La forma más sencilla es: %token NOMBRE_TOKEN Una forma más completa es: %token <campo_union> NOMBRE_TOKEN Ejemplo: %token IF %token THEN... %token <cadena> ID %token <numero> NUM Desde Lex/Flex, los tokens cualificados se devolverán haciendo, por ejemplo: [A-Z]+ { yylval.identificador = yytext return ID } [0-9]+ { yylval.numero = atoi(yytext) return NUM } Prácticas de compiladores
6 Formato del fichero de especificación de Yacc/Bison (V) Declaración %token (ii) Sección de definiciones Yacc/Bison (iv) Por convenio, los nombres de los tokens se ponen en mayúsculas. Se pueden agrupar varios tokens en una linea si tienen el mismo tipo. Los tokens de un único carácter no es necesario declararlos, porque están declarados implícitamente en Ycc/Bison. Desde Lex/Flex, este tipo de tokens se devolverán haciendo, por ejemplo: + {return + } ( {return ( } {return } El número 0 está reservado para el fin de fichero. Lex/Flex hará lo siguiente: <<EOF>> {return 0 } Cuando se compila el fichero de especificación *.y se utiliza la opción -d, que fuerza a que Yacc/Bison genere el fichero y.tab.h que contiene las definiciones de los tokens. Si este fichero se incluye en la especificación de Lex/Flex, se consigue que Yacc/Bison y Lex/Flex compartan las definiciones de tokens. Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (VI) Sección de definiciones Yacc/Bison (v) Ejemplo de fichero y.tab.h ejemplo.y %{ %} %union { char* cadena int numero } %token IF %token THEN %token ELSE %token <cadena> ID %token <numero> NUM %% %% Yacc/Bison -d y.tab.c y.tab.h typedef union { char* cadena int numero }YYSTYPE extern YYSTYPE yylval #define IF 257 #define THEN 258 #define ELSE 259 #define ID 260 #define NUM 261 ejemplo.l #include y.tab.h Prácticas de compiladores
7 Formato del fichero de especificación de Yacc/Bison (VII) Sección de definiciones Yacc/Bison (vi) Declaración %type Se utiliza cuando se ha hecho la declaración %union para especificar múltiples tipos de valores. Permite declarar el tipo de los símbolos no terminales. Lo no terminales a los que no se les asigna ningún valor a través de $$ no es necesario declararlos (ver sección de reglas de la gramática) La declaración es de la forma %type <campo_union> nombre_no_terminal Por convenio, los nombres de los no terminales se ponen en minúsculas. Se pueden agrupar varios no terminales en una linea si tienen el mismo tipo. Declaración %start Declara el axioma de la gramática. Si se omite la declaración, se asume que el axioma de la gramática es el primer no terminal de la sección de reglas de la gramática. La declaración es de la forma %start axioma Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (VIII) Declaraciones %left y %right Sección de definiciones Yacc/Bison (vii) Permiten declarar la asociatividad de los operadores de la gramática. La declaración %left especifica asociativiadad por la izquierda. La declaración %right especifica asociativiadad por la derecha. La precedencia de los operadores queda establecida por el orden de aparición de las declaraciones de asociatividad en el fichero de especificación, siendo de menor precedencia en operador que antes se declara. Por ejemplo, las declaraciones: %left + - %left * / establecen que los cuatro operadores son asociativos por la izquierda, que + y - son de la misma precedencia, pero de menor que * y /. Prácticas de compiladores
8 Formato del fichero de especificación de Yacc/Bison (IX) Sección de reglas (i) Es la sección más importante del fichero de especificación. Contiene las reglas de la gramática escritas en un formato concreto y opcionalmente con acciones asociadas a las reglas. Formato de las reglas: simbolonoterminal: simb1 simb2 simbm [acción] si varias reglas tienen la misma parte izquierda se pueden agrupar simbolonoterminal: partederecha1 [acción1] partederecha2 [acción2] por claridad, se comentan las reglas lambda: simbolonoterminal: /* vacío */ [acción1] partederecha2 [acción2] Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (X) Sección de reglas (ii) Ejemplo de especificación de reglas (sin acciones): Descripción BNF del lenguaje <declaration> ::= <mode> <idlist> Ejemplo.y declaration: mode idlist <mode> ::= bool int ref <mode> mode: BOOL INT REF mode <procedures> ::= <procedure><procedures>... procedures:... procedure procedures /* vacío */ Prácticas de compiladores
9 Formato del fichero de especificación de Yacc/Bison (XI) Sección de reglas (iii) Las acciones de las reglas: las acciones son un conjunto de instrucciones C encerradas entre llaves, y que se ejecutan cada vez que se reconoce una instancia de la regla. Normalmente se sitúan al final de la regla, aunque también se admiten en otras posiciones de la regla. La mayoría de las acciones trabajan con los valores semánticos de los símbolos de la parte derecha, accediendo a ellos mediante pseudo-variables del tipo $N, donde N representa la posición del símbolo. El valor semántico del símbolo no terminal de la parte izquierda de la regla se referencia con $$. El tipo del valor semántico de un símbolo es el que se le haya asociado mediante una declaración %token (terminales) o %type (no terminales). La acción por defecto es: Ejemplo: $$ = $1 exp:... exp + exp {$$ = $1 + $3} Prácticas de compiladores Formato del fichero de especificación de Yacc/Bison (XII) Sección de funciones de usuario En esta sección se ubican todas las funciones de soporte: Funciones diseñadas por el usuario para ser utilizadas en las sección de reglas. Funciónyyerror() Cuandoyyparse() detecta un error sintáctico, es decir, recibe un token que no espera, invoca a la funciónyyerror(). Esta función tiene que ser proporcionada por el usuario, y se puede incorporar en esta sección del fichero de especificacióncalc.y (en Linux se puede no proporcionar ya que la proporciona la librería de Yacc/Bison). El prototipo de la función es: void yyerror(char* s) El único parámetro de la función es el mensaje del error sintáctico ocurrido. La versión mínima de esta función muestra por pantalla el mensaje que recibe como parámetro. El contenido de esta sección se copia literalmente en el fichero de salida. En aplicaciones grandes, es más conveniente agrupar todas las funciones de soporte en un fichero o conjunto de ficheros, en lugar de incluirlas en esta sección. Prácticas de compiladores
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
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
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
Seminario de introducción a Bison
Seminario de introducción a Bison 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 Bison? Bison es un una
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
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.
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
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
ANÁLISIS SINTÁCTICO II GENERADOR DE ANALIZADORES SINTÁCTICOS ASCENDENTES
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
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
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
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
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
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
Análisis semántico. Análisis semántico. Índice (I)
Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección
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.
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
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
Tema: Generación de analizadores con YACC
Compiladores. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Generación de analizadores con YACC Contenido En esta guía se expondrá la forma de generar el analizador
1. Acciones en Yacc. %{ #include <stdio.h> yyerror (char *s) { fprintf (stderr, %s\n, s) ; } %} %% : S \n {printf ( Correcto\n );} ; : ( S ) S
El generador de analizadores sintácticos Yacc III Teoría de autómatas y lenguajes formales Alma María Pisabarro Marrón ([email protected]) Universidad de Valladolid 1. Acciones en Yacc Las acciones en
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
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
Prácticas Compiladores YACC Este material no es obligatorio para la práctica. Grupos de Kostadin Koruchev.
Prácticas Compiladores YACC Este material no es obligatorio para la práctica. Grupos de Kostadin Koruchev. A quien se refiere: A los alumnos que por una u otra razón no han podido asistir en clase. Esto
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
Diseño de Compiladores I. Estructura General de un Compilador
Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce
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
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
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
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
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
LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison
13048- LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2011-2012 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Se trata de realizar, mediante el generador de analizadores léxicos FLEX
Funciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
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
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,
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).
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
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
INTRODUCCIÓN AL PROCESO DE COMPILACIÓN
INTRODUCCIÓN AL PROCESO DE COMPILACIÓN El programa que se debe compilar es una secuencia de caracteres que termina con un centinela. CONCEPTOS BÁSICOS Un compilador es un complejo programa que lee un programa
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
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
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)
Generación de analizador sintáctico ascendente Yacc (bison,... ) Generación de analizador sintáctico ascendente v1.1 c 2005 José Fortes Gálvez p.
Generación de analizador sintáctico ascendente Yacc (bison, ) Generación de analizador sintáctico ascendente v11 c 2005 José Fortes Gálvez p1 Reconocedor de avance-reducción Planteamiento clásico, originado
Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas
Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático v1.2 c 2005 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado
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,
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
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
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
CAPITULO 6: FUNCIONES
CAPITULO 6: FUNCIONES 1. INTRODUCCIÓN Un problema de programación en C se resuelve descomponiéndolo en varias partes. Cada una de estas partes se puede asociar a una función que resuelva su fracción correspondiente
COMPILADORES. Tema 4. Análisis semántico
COMPILADORES Tema 4. Análisis semántico Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected] Contenido 1. Funcionalidad del
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.
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
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
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
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
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
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
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
Tema: Análisis Sintáctico LR
Compiladores. Guía 7 1 Tema: Análisis Sintáctico LR Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En esta guía se abordarán los conceptos pertenecientes al componente de
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
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)
FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )
FUNCIONES Las funciones son el medio básico de que se vale C para construir programas. Un Programa es, básicamente, una colección de funciones entre las que se incluye una especial llamada main(), la función
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
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
Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion
UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto
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
Temas. Objetivo. Analizador Sintáctico: funciones y tipos. Analizador Sintáctico Descendente. Analizador Sintáctico Ascendente
10:44 1 10:44 2 Temas Analizador Sintáctico: funciones y tipos Analizador Sintáctico Descendente Analizador Sintáctico Ascendente Generador de Analizadores Sintácticos - Yacc Objetivo Que el estudiante
Tema 5: Traducción dirigida por la sintaxis
Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis
Estructuración del programa en partes más pequeñas y sencillas
Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías
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
Procesamiento de Lenguajes (PL) Curso 2015/2016. Práctica 5: traductor a código m2r
Procesamiento de Lenguajes (PL) Curso 2015/2016 Práctica 5: traductor a código m2r Fecha y método de entrega La práctica debe realizarse de forma individual o por parejas 1, y debe entregarse a través
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
Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo
Agenda Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Analizador sintáctico Bottom-Up 1-1 1-2 Introducción Los sistemas de implementación
TEORÍA DE AUTÓMATAS Y LENGUAJES
2010/2011 INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Enunciado de prácticas Lex y Yacc Enunciado de la práctica El objetivo de la práctica de esta asignatura
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
CUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014
CUP Diseño de compiladores CUP Cup es un generador de analizadores sintácticos LALR Recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java Manual oficial:
