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

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

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

Transcripción

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

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

3 1. Introducción Especificaciones YACC -d -v y.tab.h y.tab.c y.output y.tab.h: contiene la codificación de los símbolos terminales de la gramática y.tab.h: contiene la rutina yyparse() para el análisis sintáctico y.output: contiene el autómata de reconocimiento sintáctico 3

4 2. Especificaciones Declaraciones (opcional) %% Reglas de la gramática %% Funciones C (opcional) 4

5 Declaraciones %{ Declaraciones C %} %token token_1 token_n %left operadores %start S (No es necesario, ya que por defecto se toma el símbolo no-terminal de la primera regla) 5

6 Reglas N α1 α2 ε M β N : / la opción ε debe ser la primera / α1 α2 ; / finalizador de reglas / M : β ; 6

7 Código en las reglas N A B C M X Y N: A B C { Código C } ; N: X { Código C } Y { Código C } ; 7

8 3. Ambigüedad y conflictos Una gramática ambigua genera conflictos. EJEMPLO EXPR : EXPR + EXPR EXPR * EXPR id Se generan conflictos por la indefinición de PRECEDENCIA y ASOCIATIVIDAD de los operadores 8

9 Conflictos por Precedencia y Asociatividad Precedencia id + id * id ( (id + id) * id ) ( id + (id * id) ) Asociatividad id + id + id ( (id + id) + id ) ( id + (id + id) ) 9

10 Solución de los conflictos (por defecto) Por defecto, YACC soluciona los conflictos de la siguiente forma: shift/reduce shift reduce/reduce escoge la primera regla declarada En cualquier caso, YACC siempre informa de los conflictos solucionados de esta forma. 10

11 Ejemplo (I) STMT : if ( EXPR ) then STMT if ( EXPR ) then STMT else STMT id = EXPR if (a+b) then if (x+y) then a=b else b=c 1. if (a+b) then [ if (x+y) then a=b ] else b=c 2. if (a+b) then [ if (x+y) then a=b else b=c ] Conflicto SHIFT/REDUCE ante el símbolo: else 11

12 Ejemplo (II) Por defecto, YACC resuelve el conflicto a favor del SHIFT, y nos informa de la existencia del conflicto. Es correcta esta solución por defecto? SI, ya que la ambigüedad ha sido resuelta tal como indican los lenguajes de programación, es decir, el ELSE se asocia al IF más interno. Sin embargo, no siempre son correctas las soluciones por defecto. 12

13 Soluciones por defecto no satisfactorias EXPR : EXPR + EXPR EXPR * EXPR id a + b + c (a + (b + c) ) a * b + c (a * (b + c) ) Podemos eliminar la solución por defecto en los conflictos mediante la especificación de la precedencia y asociatividad de los operadores 13

14 Especificando Precedencia y Asociatividad Operadores binarios: precedencia y asociatividad Operadores unarios: solamente la precedencia En la sección de declaraciones del fichero de especificaciones podríamos indicar: %left + - %left * / %nonassoc - (tienen igual precedencia entre ellos) (mayor precedencia que los anteriores) (mayor precedencia que los anteriores) Problema: el - unario y el - binario utilizan el mismo símbolo. La solución pasa por utilizar un símbolo auxiliar. 14

15 Ejemplo (I) %token id %left + - %left * / %nonassoc UMINUS %% EXPR : EXPR + EXPR EXPR - EXPR EXPR * EXPR EXPR / EXPR - EXPR id Símbolo auxiliar - a * b -( a * b) incorrecto 15

16 Ejemplo (II) Cada regla de la gramática tiene la precedencia y asociatividad del último token de la regla, aunque se puede modificar utilizando %prec. Por tanto, el problema del - unario puede quedar resuelto de la siguiente forma: %token id %left + - %left * / %nonassoc UMINUS %% EXPR %% : EXPR + EXPR EXPR - EXPR EXPR * EXPR EXPR / EXPR - EXPR %prec UMINUS id Símbolo auxiliar 16

17 Resumen de resolución de conflictos en YACC 1 Si no especificamos la precedencia y/o asociatividad de un operador, YACC utiliza la solución por defecto. shift/reduce shift reduce/reduce la primera regla declarada 2 Si especificamos la precedencia y/o asociatividad de todos los operadores, YACC utiliza esa información para solucionar los conflictos. Veamos un ejemplo en el que se mezclan ambas situaciones 17

18 Resolución de conflictos: Ejemplo genérico (I) %left + %left * %nonassoc UMINUS %% EXPR : EXPR + EXPR EXPR - EXPR EXPR * EXPR EXPR / EXPR - EXPR %prec UMINUS id %% 18

19 Resolución de conflictos: Ejemplo genérico (II) Expresiones Interpretación -a* b + c [ (- a) * b ] + c -a-b + c - [ a - (b + c) ] - a * b / c (- a) * (b / c) -a-b/ c - [ a - (b / c) ] a - b + c + d a - [ (b + c) +d ] a - b * c / d a - [ b * (c / d) ] a - b / c + d a - [ b / (c + d) ] a - b / c / d a - [ b / (c / d) ] 19

20 4. TRATAMIENTO DE ERRORES Cuando el analizador sintáctico encuentra un error, simplemente hace la siguiente llamada: yyerror ( syntax error ); La rutina yyerror() de la librería es la siguiente: yyerror (s) char * s; { fprintf(stderr, %s\n, s); } 20

21 Modificando yyerror() yyerror (s) char * s; { fprintf(stderr, %s\n, s); fprintf(stderr, Numero de linea %d\n, n_linea); fprintf(stderr, Simbolo terminal %s\n, yytext); } n_linea: variable que controla el número actual de línea. yytext: cadena que almacena el último token reconocido. 21

22 5. Uso con el LEX %token cte %left + - %left * / %nonassoc UMINUS %% EXPR %% : EXPR + EXPR EXPR - EXPR EXPR * EXPR EXPR / EXPR - EXPR %prec UMINUS ( EXPR ) cte main() { yyparse(); } 22

23 Especificación LEX %{ #include y.tab.h /* Fichero de codificación de tokens */ %} %% [ \t\n] ; [0-9]+ { return (cte); }. { return (yytext[0]); } %% Fichero y.tab.h #define cte

24 Comandos para generar el parser $ yacc -d -v file.y se generan: y.tab.h, y.tab.c, y.output $ lex file.l se genera: lex.yy.c $ cc y.tab.c lex.yy.c -ly -ll -o parser $ parser < fichero_fuente 24

25 6. Algunos consejos prácticos 1. Utilizar reglas recursivas por la izquierda siempre que sea posible (favorece el reconocimiento ascendente, ya que los árboles sintácticos crecen hacia la izquierda) 2. Cuidado con los tokens que son palabras claves en el lenguaje C. Véase lo que sucede en la página siguiente: 25

26 Problema con las palabras claves en C LEX #include y.tab.h DESASTRE if { return (if); } else { return (else); } YACC STMT : if ( EXPR ) STMT else STMT Fichero y.tab.h #define if 257 #define else

27 Solución: utilizar otros nombres lógicos LEX #include y.tab.h if { return (if_t); } else { return (else_t); } YACC STMT : if_t ( EXPR ) STMT else_t STMT Fichero y.tab.h #define if_t 257 #define else_t

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

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

Diseño de Compiladores I YACC: Yet Another Compiler-Compiler

Diseño de Compiladores I YACC: Yet Another Compiler-Compiler Diseño de Compiladores I YACC: Yet Another Compiler-Compiler Introducción: Yacc provee una herramienta general para analizar estructuralmente una entrada. El usuario de Yacc prepara una especificación

Más detalles

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

2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina.

2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina. Traductores, Compiladores e Intérpretes 1 Tema 7 Generación de Código En el modelo de análisis y síntesis de un compilador, la etapa inicial traduce un programa fuente a una representación intermedia a

Más detalles

Compiladores: Parsing ascendente

Compiladores: Parsing ascendente Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo

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

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Analizadores sintácticos descendentes: LL(1) Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 Analizadores sintácticos

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

GRAMATICAS LIBRES DEL CONTEXTO

GRAMATICAS LIBRES DEL CONTEXTO GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.

Más detalles

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

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

Más detalles

Hoja técnica sobre yacc 1 y lex 2. Introducción. lex PL, 2014/2015 1

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

Más detalles

Procesadores de lenguaje Tema Análisis sintáctico (Parte II)

Procesadores de lenguaje Tema Análisis sintáctico (Parte II) Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte II) Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Análisis sintáctico ascendente

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

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

Estatutos de Control C# Estatutos de Decisión (Selección)

Estatutos de Control C# Estatutos de Decisión (Selección) SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente

Más detalles

Práctica de constantes, expresiones y operadores. Programación en C 1

Práctica de constantes, expresiones y operadores. Programación en C 1 Práctica de constantes, expresiones y operadores Programación en C 1 Definición de variables (II) Las variables (automáticas) no inicializadas tienen cualquier valor. Una variable (automática) se inicializa

Más detalles

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas El computador puede realizar cálculos además de mostrar datos por pantalla.

Más detalles

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

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

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2008-2009 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Planteamiento del problema En esta práctica se trata de realizar, mediante el

Más detalles

S Qué es el analizador sintáctico?

S Qué es el analizador sintáctico? Traductores, Compiladores e Intérpretes 1 Tema 3. Análisis Sintáctico. Todo lenguaje de programación tiene reglas que describen la estructura sintáctica de programas bien formados. En Pascal, por ejemplo,

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

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

OPERADORES Y EXPRESIONES

OPERADORES Y EXPRESIONES OPERADORES Y EXPRESIONES Una expresión es una combinación de variables, literales y operadores, que representan un valor Operadores aritméticos Operador Función + suma - resta * producto / división % operador

Más detalles

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.

TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. 1.) (HOLUB). Escribir un traductor que reconozca definiciones de C siguiendo el estilo antiguo, tal como: prueba(uno, dos, tres, cuatro,

Más detalles

Gramática abstracta. Gramática abstracta. Forma de escribirlas: Pizquierda : Pderecha <Predicado> atributos o acc. semánticas}

Gramática abstracta. Gramática abstracta. Forma de escribirlas: Pizquierda : Pderecha <Predicado> atributos o acc. semánticas} Gramática abstracta Nos permite enlazar más fácilmente el análisis sintáctico con el semántico se comienza a manejar cuestiones que trabaja el semántico. Denota los aspectos importantes del lenguaje (equivalente

Más detalles

8.1. Introdución. %% [b\ t]+ $ ;

8.1. Introdución. %% [b\ t]+ $ ; 8.1. Introdución El lex es un generador de programas diseñado para el proceso léxico de cadenas de caracteres de input. El programa acepta una especificación, orientada a resolver un problema de alto nivel

Más detalles

Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.

Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar. Agenda BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar. JLEX y JCUP Breve descripción del las herramientas para generar el parser o analizador sintáctico.

Más detalles

LENGUAJE. Tema 2 Elementos de un programa

LENGUAJE. Tema 2 Elementos de un programa LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias

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

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos

Más detalles

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo) . Sobrecarga de operadores. unarios Operador de incremento (prefijo). Devolución de objetos en los métodos. Retorno por referencia Sobrecarga de operadores Los operadores aceptan uno o varios operandos

Más detalles

Elementos léxicos del lenguaje de programación C

Elementos léxicos del lenguaje de programación C Elementos léxicos del lenguaje de programación C Elementos léxicos de los lenguajes de programación (tokens) Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices

Más detalles

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I Table of contents 1 INFORMACIÓN GENERAL...2 2 INTRODUCCIÓN... 2 3 OBJETIVOS GENERALES DE LA ASIGNATURA... 3 4 OBJETIVOS, TEMAS Y SUBTEMAS... 3 5 PLAN TEMÁTICO...6

Más detalles

Integración de JFlex y CUP (analizadores léxico y sintáctico)

Integración de JFlex y CUP (analizadores léxico y sintáctico) Integración de JFlex y CUP (analizadores léxico y sintáctico) Rafael A. Vega Castro Octubre de 2008 Resumen El siguiente artículo trata sobre cómo si se tiene por un lado un generador de analizadores léxicos

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Informática I para Bachillerato

Informática I para Bachillerato CIMAT C++ C/C++ de Datos CIMAT Sesión 15 Una estructura es un grupo de variables las cuales pueden ser de diferentes tipos sostenidas o mantenidas juntas en una sola unidad, a diferencia de los arreglos

Más detalles

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Procesadores de Lenguaje CUP - Constructor of Useful Parsers

Procesadores de Lenguaje CUP - Constructor of Useful Parsers Procesadores de Lenguaje CUP - Constructor of Useful Parsers Departamento de Ciencias de la Computación Universidad de Alcalá CUP CUP (Constructor of Useful Parsers) genera analizadores sintácticos LALR.

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles 2012. Categoría: Teoría de la Computación, Modelos Formales y Compiladores.

41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles 2012. Categoría: Teoría de la Computación, Modelos Formales y Compiladores. 41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles 2012 Categoría: Teoría de la Computación, Modelos Formales y Compiladores. Título: Implementación de un compilador de C- -. Autor:

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

Existen diferentes compuertas lógicas y aquí mencionaremos las básicas pero a la vez quizá las más usadas:

Existen diferentes compuertas lógicas y aquí mencionaremos las básicas pero a la vez quizá las más usadas: Compuertas lógicas Las compuertas lógicas son dispositivos electrónicos utilizados para realizar lógica de conmutación. Son el equivalente a interruptores eléctricos o electromagnéticos. para utilizar

Más detalles

TEMA 3.- El analizador sintáctico

TEMA 3.- El analizador sintáctico PROCESADORES DEL LENGUAJE EL ANALIZADOR SINTÁCTICO - Diap. 1 TEMA 3.- El analizador sintáctico 1. Introducción. 2. Errores sintácticos. 3. Gramáticas independientes del contexto y autómatas con pila. 4.

Más detalles

Expresiones Regulares y Derivadas Formales

Expresiones Regulares y Derivadas Formales y Derivadas Formales Las Derivadas Sucesivas. Universidad de Cantabria Esquema 1 2 3 Derivadas Sucesivas Recordemos que los lenguajes de los prefijos dan información sobre los lenguajes. Derivadas Sucesivas

Más detalles

µ-c: Manual de referencia del lenguaje Micro-C

µ-c: Manual de referencia del lenguaje Micro-C µ-c: Manual de referencia del lenguaje Micro-C Introducción Este manual de referencia describe en detalle el lenguaje Micro-C, para ser implementado como proyecto de los cursos de Compíladores I y II en

Más detalles

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis

Más detalles

Operadores de comparación

Operadores de comparación Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

Introducción a C++ y Code::Blocks

Introducción a C++ y Code::Blocks Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Toda copia en PAPEL es un Documento No Controlado a excepción del original. S U P E RIO R DE MISANTLA Apartado: 7.1 Copia No. Código:PD-SCD-1016 Versión No.: 02 Hoja : 2 de 12 4.- COMPETENCIAS A DESARROLLAR 4.1 Competencias Específicas: Diseña mediante el uso de reglas semánticas

Más detalles

Capítulo 6 Tabla de símbolos

Capítulo 6 Tabla de símbolos Java a tope: Traductores y compiladores con Lex/Yacc, JFlex/Cup y JavaCC Capítulo 6 Tabla de símbolos 6.1 Visión general También llamada «tabla de nombres» o «tabla de identificadores», se trata sencillamente

Más detalles

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS Departamento de Ciencias de la Computación e IA Subprogramas en C Objetivo Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo

Más detalles

Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES.

Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES. Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática CI-2700 TÓPICOS ESPECIALES - COMPILADORES II Ciclo 2014 Profesor: Manuel E. Bermúdez EXAMEN FINAL (NO PARA COMER EN CLASE,

Más detalles

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>} Bloque II. 2. Objetos y acciones elementales Bloque II. 2. Objetos y acciones elementales Objetivos: Familiarizarse con conceptos de entorno, objeto y tipo Entender qué significa que un objeto sea de un

Más detalles

Lenguajes y Gramáticas

Lenguajes y Gramáticas Lenguajes y Gramáticas Teoría de Lenguajes Fernando Naranjo Introduccion Se desarrollan lenguajes de programación basados en el principio de gramática formal. Se crean maquinas cada vez mas sofisticadas

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Texto: Hopcroft, J. E., Motwani, R., Ullman, J.D., Introduction to Automata Theory, Languajes, and Computation. 3rd Edition. Addison Wesley, 2007.

Texto: Hopcroft, J. E., Motwani, R., Ullman, J.D., Introduction to Automata Theory, Languajes, and Computation. 3rd Edition. Addison Wesley, 2007. Universidad de Puerto Rico Recinto de Mayagüez Facultad de Artes y Ciencias DEPARTAMENTO DE CIENCIAS MATEMÁTICAS Programa de Autómata y Lenguajes Formales Curso: Autómata y Lenguajes Formales Codificación:

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: EMPEZAR DE CERO A PROGRAMAR EN lenguaje C Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 7 OPERADORES Y EXPRESIONES 1 OBJETIVOS Conocer los tipos de operadores

Más detalles

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa PROGRAMACIÓN 10. Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 4 ESTRUCTURA SECUENCIAL GENERAL La estructura secuencial

Más detalles

MANUAL DE RUBY (PARTE I) Luis José Sánchez González

MANUAL DE RUBY (PARTE I) Luis José Sánchez González MANUAL DE RUBY (PARTE I) Luis José Sánchez González 1. QUÉ ES RUBY? Ruby es un lenguaje de programación interpretado y orientado a objetos muy potente y al mismo tiempo muy sencillo. Para apreciar la extrema

Más detalles

Tema 4. Operadores y Expresiones

Tema 4. Operadores y Expresiones Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones

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

Carrera: SCC - 0425 4-2-10. Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Carrera: SCC - 0425 4-2-10. Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos. 1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teoría-horas práctica-créditos Programación de sistemas Ingeniería en Sistemas Computacionales SCC - 0425 4-2-10

Más detalles

Flex a la rápida. José Ignacio Medina

Flex a la rápida. José Ignacio Medina Flex a la rápida José Ignacio Medina Octubre, 2008 Este documento se distribuye bajo una licencia Creative Commons bync-sa 2.0. Usted es libre de copiar, distribuir, comunicar y ejecutar públicamente este

Más detalles

Las plantillas permiten definir funciones genéricas.

Las plantillas permiten definir funciones genéricas. Introducción (Genericidad). Plantillas de funciones o funciones genéricas. Sintaxis de plantillas. Ejemplos de declaraciones. A tener en cuenta Un ejemplo de plantilla de funciones: Máximo de un vector.

Más detalles

Programación. Ejercicios Tema 3. Elementos Básicos del Lenguaje C

Programación. Ejercicios Tema 3. Elementos Básicos del Lenguaje C Programación Ejercicios Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero Jose A. Iglesias Martínez Jose Luis Mira 1 SOLUCIONES Segunda sesión:

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

7.4. UTILIDADES DE LAS PILAS

7.4. UTILIDADES DE LAS PILAS 7.4. UTILIDADES DE LAS PILAS o Llamadas a subprogramas o Paso de programas recursivos a iterativos o Un caso especial, quick_sort iterativo. o Equilibrado de símbolos o Tratamiento de expresiones aritméticas

Más detalles

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES. APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación

Más detalles

COMPILADOR DE PSEUDOCÓDIGO COMO HERRAMIENTA PARA EL APRENDIZAJE EN LA CONSTRUCCIÓN DE ALGORITMOS RAFAEL ANIBAL VEGA CASTRO

COMPILADOR DE PSEUDOCÓDIGO COMO HERRAMIENTA PARA EL APRENDIZAJE EN LA CONSTRUCCIÓN DE ALGORITMOS RAFAEL ANIBAL VEGA CASTRO COMPILADOR DE PSEUDOCÓDIGO COMO HERRAMIENTA PARA EL APRENDIZAJE EN LA CONSTRUCCIÓN DE ALGORITMOS RAFAEL ANIBAL VEGA CASTRO UNIVERSIDAD DEL NORTE PROGRAMA DE INGENIERÍA DE SISTEMAS DIVISIÓN DE INGENIERÍAS

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros

Más detalles

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO Autómatas de pila y lenguajes independientes del contexto -1- AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO AUTÓMATAS DE PILA - Son autómatas finitos con una memoria en forma de pila. - Símbolos

Más detalles

INSTITUTO POLITÉCNICO NACIONAL

INSTITUTO POLITÉCNICO NACIONAL INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS DESARROLLO DE UN COMPILADOR PARA PSEUDOCÓDIGO EN LENGUAJE ESPAÑOL T E S I S QUE

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

Práctica 3: Construcción de una mini shell Diseño de Sistemas Operativos U.L.P.G.C.

Práctica 3: Construcción de una mini shell Diseño de Sistemas Operativos U.L.P.G.C. Práctica 3: Construcción de una mini shell David Jesús Horat Flotats Índice Introducción...2 Características principales... 3 Diagrama general de bloques... 5 Distribución de los ficheros...6 Lista de

Más detalles

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS  GONZALO VAZQUEZ VELA INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA " GUIA DE ESTUDIOS DE ANALISIS Y DISEÑO DE ALGORITMOS. 1. Qué es un algoritmo? 2. Qué es un Pseudocódigo?

Más detalles

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B) APRENDERAPROGRAMARCOM FUNCIONES PHP: DECLARACIÓN Y LLAMADAS PARÁMETROS, RETURN EJERCICIOS EJEMPLOS RESUELTOS (CU00827B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero Fecha

Más detalles

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Descripción y Contenido del Curso. Programación C++ Capacity Academy. Descripción y Contenido del Curso Programación C++ Capacity Academy Educación en Tecnología de la Información Online, Efectiva y Garantizada Qué aprenderá si toma este Curso? En este curso aprenderás todo

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;

Más detalles

Sintaxis y Semántica del Lenguaje. Gramáticas

Sintaxis y Semántica del Lenguaje. Gramáticas Gramáticas La tarea de proveer una descripción bien concisa y entendible de un lenguaje de programación es difícil pero esencial para el éxito de un lenguaje. Uno de los problemas en describir un lenguaje

Más detalles

Tema 13: Programas interactivos

Tema 13: Programas interactivos Tema 13: Programas interactivos Informática (2015 16) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 38 Tema 13: Programas

Más detalles

Problemas de Espacios Vectoriales

Problemas de Espacios Vectoriales Problemas de Espacios Vectoriales 1. Qué condiciones tiene que cumplir un súbconjunto no vacío de un espacio vectorial para que sea un subespacio vectorial de este? Pon un ejemplo. Sean E un espacio vectorial

Más detalles

Expresiones regulares, gramáticas regulares

Expresiones regulares, gramáticas regulares Expresiones regulares, gramáticas regulares Los LR en la jerarquía de Chomsky La clasificación de lenguajes en clases de lenguajes se debe a N. Chomsky, quien propuso una jerarquía de lenguajes, donde

Más detalles

Compilación de lenguajes de programación

Compilación de lenguajes de programación Compilación de lenguajes de programación Índice de contenido Compilación de lenguajes de programación...1 Licencia...1 Introducción...1 Fases de un compilador...1 Análisis léxico...2 Tabla de símbolos...2

Más detalles

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) Menú 1. Operadores Matemáticos 2. Operadores relacionales 3. Funciones de Visual Basic 4. Tipos de variables

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

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

Figura 4.1 Clasificación de los lenguajes de bases de datos

Figura 4.1 Clasificación de los lenguajes de bases de datos 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje

Más detalles

Lenguaje C Preprocesador, Compilación y Enlazado.

Lenguaje C Preprocesador, Compilación y Enlazado. Lenguaje C Preprocesador, Compilación y Enlazado. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Directivas de Compilación Las directivas

Más detalles

Procesadores de lenguaje Tema 2 Análisis léxico

Procesadores de lenguaje Tema 2 Análisis léxico Procesadores de lenguaje Tema 2 Análisis léxico Departamento de Ciencias de la Computación Universidad de Alcalá de Henares Resumen del tema Objetivo: comprender la estructura, organización y funcionamiento

Más detalles