Tema: Tabla de Símbolos

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

Download "Tema: Tabla de Símbolos"

Transcripción

1 Compiladores. Guía 6 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Tabla de Símbolos Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador sintáctico de manera que se pueda manejar varios tipos de datos en un compilador, tomando como ejemplo base el compilador del lenguaje MUSIM/3. Objetivos Específicos Conocer la estructura de una tabla de símbolos y un ejemplo de su implementación. Aplicar los conceptos de tabla de símbolos y su combinación con el analizador sintáctico para el manejo de tipos de datos. Material y Equipo Guía de Laboratorio Nº 6. Computadora con programa Dev C++. Archivos de recurso o AnalizadorLexico.cpp o AnalizadorSintacticoEBNF.cpp Introducción Teórica Tabla de Símbolos La tabla de símbolos es la componente del compilador que se encarga de todos los aspectos dependientes del contexto relacionados con las restricciones impuestas a loa nombres que puedan aparecer en los programas (nombres de variables, constantes, funciones, palabras reservadas, ). Estas restricciones obligan a llevar la cuenta, durante todo el proceso de compilación de los nombres utilizados (junto con toda la información relevante que se deduzca de la definición del lenguaje de programación), para poder realizar las

2 2 Compiladores. Guía 6 comprobaciones y poder realizar las comprobaciones e imponer las restricciones necesarias. Por otro lado, una preocupación muy importante en el diseño de algoritmos para la solución de problemas computables es obtener el mejor rendimiento posible. Para ello, es esencial la elección concreta de estructuras de datos. El tiempo que necesitan los algoritmos para procesar sus entradas suele depender del tamaño de estas y difiere de unas estructuras de datos a otras. La tabla de símbolos es una estructura de datos que contiene toda la información relativa a cada identificador que aparece en el programa fuente. Los identificadores pueden ser de variables, tipos de datos, funciones, procedimientos, etc... Evidentemente cada lenguaje de programación tiene unas características propias que se reflejan en la tabla de símbolos. Cada elemento de la estructura de datos que compone la tabla de símbolos está formado al menos por el identificador y sus atributos. Los atributos son la información relativa de cada identificador. Los atributos habituales son: Especificación del identificador: variable, tipo de datos, función, procedimiento, etc... Tipo: en el caso de variables será el identificador de tipo (real, entero, carácter, cadena de caracteres, o un tipo definido previamente). En el caso de las funciones puede ser el tipo devuelto por la función. Los procedimientos se pueden marcar como funciones que no devuelven nada (void). Dimensión o tamaño. Puede utilizarse el tamaño total que ocupa una variable en bytes, o las dimensiones. Así en el caso de variables simples se coloca la dimensión cero, para los arrays la dimensión del array, en el caso de estructuras (struct) o registros (record) el número de campos o miembros, en el caso de funciones o procedimientos se puede almacenar el número de parámetros, etc... Dirección de comienzo para generar el código objeto. En el código máquina no hay nombre de identificadores, tan sólo direcciones de memoria para datos (static, stack, y heap) o para código (usadas por los procedimientos y funciones). Listas de información adicional. Contienen información de tamaño variable, por ejemplo: los tipos de los campos

3 Compiladores. Guía 6 3 o miembros de las estructuras o registros, los tipos de los parámetros de estructuras o uniones. Los atributos pueden variar de unos lenguajes a otros, debido a las características propias de cada lenguaje y a la metodología de desarrollo del traductor. La tabla de símbolos se crea por cooperación del análisis léxico y el análisis sintáctico. El análisis léxico proporciona la lista de los identificadores, y el análisis sintáctico permite rellenar los atributos correspondientes a cada identificador. El analizador semántico también puede rellenar algún atributo. El analizador semántico y el generador de código obtienen de la tabla de símbolos la información necesaria para realizar su tarea. Las operaciones fundamentales que se realizan en la tabla de símbolos son la inserción y búsqueda de información. En algunos lenguajes de programación también se realizan las operaciones set y reset que activan y desactivan los identificadores locales respectivamente. Dada la cantidad de veces que se accede a la tabla de símbolos es necesario que la estructura de datos que alberga la información, y los algoritmos de acceso sean optimizados al máximo. En general se utilizan métodos hash para el manejo de las tablas de símbolos. Las tablas de símbolos constituyen el recipiente donde se almacena toda la información relativa al programa fuente en tiempo de compilación y por tanto se destruyen una vez finalizada la traducción. Tan sólo hay una excepción en el caso de que se activen opciones de depuración (debugging), en ese caso los compiladores graban en fichero la tabla de símbolos para poder dar información de los identificadores usados en el programa fuente en tiempo de ejecución. Los fabricantes de compiladores incluyen para esos casos información de la tabla de símbolos que emplean. Procedimiento MUSIM/3 La primera versión de este lenguaje es el MUSIM/0, luego surgió el MUSIM/1. Se denominan MUSIM1/x las variantes que de MUSIM que profundicen en aspectos léxicos, las MUSIM/2x son las versiones que avancen en aspectos sintácticos, MUSIM/3x los que añaden aspectos semánticos.

4 4 Compiladores. Guía 6 Gramática MUSIM/3 <Programa> ::= MAIN "{" <Bloque> "}" <Bloque> ::= <Declaraciones> <Sentencias> <Declaraciones> ::= <Declara> ; <Otra_declara> <Otra_declara> ::= <Declara> ; <Otra_declara> <Vacio> <Declara> ::= <Tipo> <Variable> <Tipo> ::= INTEGER FLOAT CHAR <Sentencias> ::= <Instruccion> <Otra_instruccion> <Otra_instruccion> ::= ; <Instruccion> <Otra_instruccion> <Vacio> <Instruccion> ::= <Asignacion> <Lectura> <Escritura> <Asignacion> ::= <Variable> = <Expresion> <Expresion> ::= <Termino> <Mas_terminos> <Mas_terminos> ::= + <Termino> <Mas_terminos> - <Termino> <Mas_terminos> <Vacio> <Termino> ::= <Factor> <Mas_factores> * <Factor> <Mas_factores> / <Factor> <Mas_factores> <Mas_factores> ::= <Vacio> <Factor> ::= <Primario> <Exp> <Exp> ::= ^ <Factor> <Vacio> <Primario> ::= - <Primario> <Elemento> <Elemento> ::= ( <Expresion> ) <Variable> <Constante> <Lectura> ::= READ <Variable> <Escritura> ::= WRITE <Variable> <Variable> ::= letra_minuscula <Constante> ::= entera real caracter <Vacio> ::= Un ejemplo de un programa con MUSIM/3 es: M{ I a; I b; F c; F d; R a; R b; c=a+b; d=a-b; W c; W d; }. Donde M=Main

5 Compiladores. Guía 6 5 I=Integer F=Float C=Char R=Read W=Write Y los identificadores están formados de una sola letra. Tomando en cuenta, las consideraciones anteriores acerca del lenguaje MUSIM/3, se implementará la tabla de símbolos correspondiente al compilador de este lenguaje. Esta se conforma de dos clases, la primera es la clase Simbolo, que construye cada token que se almacena en la tabla con un id y además el tipo de datos al que pertenece. A continuación se presenta el código correspondiente a la tabla de símbolos de MUSIM/3. Simbolo.h #ifndef Simbolo_H #define Simbolo_H #include<iostream> #include<cstring> using namespace std; class Simbolo { char tipo; char id; public: Simbolo(void); ~Simbolo(void); char hashcode(void){return id;}; bool equals(simbolo o){return o.id==id;}; char tostring(); }; char Simbolo::toString(){ char cad[50]=""; strcpy(cad, reinterpret_cast<const char *>(id)); strcat(cad,":"); strcat(cad,reinterpret_cast<const char *>(tipo)); return *cad; } #endif TablaDeSimbolos.h #ifndef TablaDeSimbolos_H #define TablaDeSimbolos _H #include <iostream> #include <cstring>

6 6 Compiladores. Guía 6 #include <map> #include "Simbolo.h" using namespace std; class TablaDeSimbolos { //static Hashtable tabla=new Hashtable(); map<char,simbolo> tabla; public: static Simbolo getsimbolo(char id); static void addsimbolo(simbolo newsimbolo); } static void TablaDeSimbolos::addSimbolo(Simbolo newsimbolo){ tabla[newsimbolo->hashcode]=newsimbolo; } static Simbolo TablaDeSimbolos::getSimbolo(char id){ return (Simbolo)tabla.find(id); } #endif Análisis de resultados Integre la tabla de símbolos con el analizador sintáctico y analizador léxico de MUSIM/3 proporcionado en los recursos, utilice la definición sintáctica EBNF de la introducción teórica para referencias. Investigación complementaria Compilar un proyecto en C++, que integre el analizador léxico, analizador sintáctico, y tabla de símbolos, de manera que pueda leer de manera exitosa el programa de MUSIM codificado en el ejemplo presentado en esta guía (Presente capturas de pantalla y archivos que respalden al correcta ejecución). Responda: Mencione las pasadas de un AST para implementar un compilador e intérprete del lenguaje. Bibliografía Construcción de Compiladores. Principios y practica, Kenneth C. Louden.

7 Compiladores. Guía 6 7 Compiladores. Principios técnicas y Herramientas. Sethi Ullman. Pearson Education.

8 8 Compiladores. Guía 6 Guía 6: Tabla de Símbolos Hoja de cotejo: 6 Alumno: Máquina No: Docente: GL: Fecha: EVALUACION % Nota CONOCIMIENTO Del 20 al 30% Conocimie nto deficient e de los fundament os teóricos Conocimiento y explicación incompleta de los fundamentos teóricos Conocimiento completo y explicación clara de los fundamentos teóricos APLICACIÓN DEL CONOCIMIENTO Del 40% al 60% ACTITUD Del 15% al 30% No tiene actitud proactiva. Actitud propositiva y con propuestas no aplicables al contenido de la guía. Tiene actitud proactiva y sus propuestas son concretas. TOTAL 100%

Tema: Análisis Semántico

Tema: Análisis Semántico Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador

Más detalles

Tema: Análisis Sintáctico

Tema: Análisis Sintáctico Compiladores. Guía 6 1 Tema: Análisis Sintáctico Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis

Más detalles

Tema: Análisis Sintáctico

Tema: Análisis Sintáctico Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis

Más detalles

Tema: Análisis Léxico

Tema: Análisis Léxico Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Léxico Contenido En esta guía se dará a conocer la manera en que un compilador realiza el análisis

Más detalles

Tema: Traductor ENSAMPOCO a ASM 8086

Tema: Traductor ENSAMPOCO a ASM 8086 Compiladores. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Traductor ENSAMPOCO a ASM 8086 Contenido En esta práctica se desarrollará un traductor de lenguaje ENSAMPOCO/3

Más detalles

TABLA DE SÍMBOLOS. Evidentemente cada lenguaje de programación tiene unas características propias que se reflejan en la tabla de símbolos.

TABLA DE SÍMBOLOS. Evidentemente cada lenguaje de programación tiene unas características propias que se reflejan en la tabla de símbolos. TABLA DE SÍMBOLOS La tabla de símbolos es una estructura de datos que contiene toda la información relativa a cada identificador que aparece en el programa fuente. Los identificadores pueden ser de variables,

Más detalles

Tema: Autómatas de Estado Finitos

Tema: Autómatas de Estado Finitos Compiladores. Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Autómatas de Estado Finitos Contenido En esta guía se aborda la aplicación de los autómatas en el campo de

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Comprender que es ligadura e identificar sus tipos.

Más detalles

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo. Programación II. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Funciones Virtuales y Polimorfismo. Objetivos Específicos Comprender que es ligadura e identificar

Más detalles

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Tema: Análisis Sintáctico LR

Tema: Análisis Sintáctico LR Compiladores. Guía 4 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico LR Contenido En esta guía se abordarán los conceptos pertenecientes al componente de

Más detalles

Análisis semántico. Análisis semántico. Índice (I)

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

Más detalles

Tema: Generación de analizadores con YACC

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

Más detalles

Tema: Maquina de Turing

Tema: Maquina de Turing 1 Tema: Maquina de Turing Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Contenido En esta guía recordaremos algunos conceptos acerca de la máquina de Turing, se implementará en C++

Más detalles

Tema: Plantillas en C++.

Tema: Plantillas en C++. Programación II. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Plantillas en C++. Objetivos Específicos Conocer los tipos de plantillas Utilizar las plantillas de

Más detalles

Tema 5 Tabla de Símbolos

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.

Más detalles

Tema: Tipos Abstractos de Datos (TAD s) en C#.

Tema: Tipos Abstractos de Datos (TAD s) en C#. Programación II. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C#. Objetivos Comprender el concepto Tipo Abstracto de Datos

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Tema: Análisis Sintáctico LR

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

Más detalles

Tema: Punteros a Objetos. Puntero this.

Tema: Punteros a Objetos. Puntero this. Programación II. Guía 6 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Punteros a Objetos. Puntero this. Objetivos Manejar objetos por medio de punteros. Utilizar el puntero

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO COMPILADORES 1764 7 o 09 Asignatura Clave Semestre Créditos Ingeniería Eléctrica Ingeniería en Computación Ingeniería

Más detalles

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 2. Lenguaje de programación y ejecución de un programa Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 2. Lenguaje de programación y ejecución de un programa 1 Léxico, sintaxis y semántica de un lenguaje #include #include

Más detalles

Introducción a c++ Introducción a la programación EIS Informática III

Introducción a c++ Introducción a la programación EIS Informática III Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas

Más detalles

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

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

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones.

Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Programación II. Guía 8 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Sobrecarga de Operadores Unarios. Sobrecarga de Funciones. Objetivos Diferenciar sobrecarga de operadores

Más detalles

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO:

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA: Ciencias y Sistemas ÁREA

Más detalles

Práctica 01 - Preprocesamiento básico para un código fuente en lenguaje C Compiladores - Profr. Edgardo Adrián Franco Martínez

Práctica 01 - Preprocesamiento básico para un código fuente en lenguaje C Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Introducción Análisis léxico Funciones del analizador léxico Preprocesamiento básico de un código fuente de C Manejo de búferes 3 Introducción Para la construcción de todo traductor, compilador

Más detalles

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE:

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA:

Más detalles

Tema: Introducción a compiladores y MUSIM/0

Tema: Introducción a compiladores y MUSIM/0 Compiladores. Guía 1 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Introducción a compiladores y MUSIM/0 Contenido En esta guía se presenta una breve introducción a los conceptos

Más detalles

Horas teóricas: Horas practicas: Área de conocimiento a la que pertenece

Horas teóricas: Horas practicas: Área de conocimiento a la que pertenece PROGRAMA DE ESTUDIOS Área de formación a la que pertenece: TRADUCTORES DE ALTO NIVEL CARRERA LT Sustantiva Profesional Horas teóricas: Horas practicas: 2 2 Créditos: 6 Clave: F0353 Área de conocimiento

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores 18:55 1 2 Temas Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores Objetivo Que el estudiante logre conocer, comprender y manejar conceptos y técnicas

Más detalles

Tema: Genéricos en C#.

Tema: Genéricos en C#. Programación II. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Genéricos en C#. Objetivos Conocer genéricos en C#. Utilizar los genéricos en C# para la resolución

Más detalles

Compiladores e Intérpretes Análisis Semántico IV

Compiladores e Intérpretes Análisis Semántico IV 1 Compiladores e Intérpretes Análisis Semántico IV Sebastian Gottifredi 2018 Repaso 2 Repaso El análisis semántico es el encargado validar y entender el significado del programa Para esto el analizador

Más detalles

Tema: Tipos Abstractos de Datos (TAD s) en C++.

Tema: Tipos Abstractos de Datos (TAD s) en C++. Programación II. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Tipos Abstractos de Datos (TAD s) en C++. Objetivos Específicos Explicar el concepto "Tipo Abstracto

Más detalles

Tema: Introducción a Compiladores y al Lenguaje Micro C

Tema: Introducción a Compiladores y al Lenguaje Micro C Compiladores. Guía 1 1 Tema: Introducción a Compiladores y al Lenguaje Micro C Contenido En esta guía se presenta una breve introducción a los conceptos básicos que se utilizan en el ámbito de los compiladores

Más detalles

Tema: Punteros: Puntero this en C#.

Tema: Punteros: Puntero this en C#. Programación II. Guía No.11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Punteros: Puntero this en C#. Objetivos Conocer el manejo de los punteros en C#. Utilizar el puntero

Más detalles

DOMINIOS COGNITIVOS (Objetos de estudio, temas y subtemas)

DOMINIOS COGNITIVOS (Objetos de estudio, temas y subtemas) UNIVERSIDAD AUTÓNOMA DE CHIHUAHUA Clave: Clave: FACULTAD DE INGENIERÍA DES: Ingeniería Programa(s) Educativo(s): Ingeniería en Ciencias de la Computación Tipo de materia: Obligatoria Clave de la materia:

Más detalles

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

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

Más detalles

Tema: Lenguaje ensamblador embebido

Tema: Lenguaje ensamblador embebido Compiladores. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Lenguaje ensamblador embebido Contenido En esta guía se presenta una breve introducción a las estructuras

Más detalles

Tema: Análisis de código intermedio

Tema: Análisis de código intermedio Compiladores. Guía 8 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis de código intermedio Contenido En esta guía se abordarán los conceptos pertenecientes al componente

Más detalles

Compiladores: Introducción

Compiladores: Introducción Compiladores: Introducción Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. (galvarez@puj.edu.co) Basado en [Aho, 2007, chp. 1] Qué es un COMPILADOR?

Más detalles

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

Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno 1.1. Gramática Léxica 1.1.1. Elementos Léxicos Sintaxis de C Ing. Jose Maria Sola Dr. Oscar Ricardo Bruno ->

Más detalles

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el lenguaje

Más detalles

Introducción a los compiladores

Introducción a los compiladores Introducción a los compiladores William Cruz-Santos wdelacruzd@uaemex.mx Ingeniería en Computación Universidad Autónoma del Estado de México Unidad de Competencia I 2 de octubre de 2015 William Cruz-Santos

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

Yacc/Bison. Introducción

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

Más detalles

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

Bison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero

Más detalles

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST- REQUISITO:

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST- REQUISITO: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA:

Más detalles

05 Análisis léxico I Compiladores - Profr. Edgardo Adrián Franco Martínez

05 Análisis léxico I Compiladores - Profr. Edgardo Adrián Franco Martínez 2 Contenido Introducción Análisis léxico Funciones del analizador léxico Tokens y lexemas Palabras reservadas Estrategias de recuperación de errores léxicos Manejo de búferes 3 Introducción Para la construcción

Más detalles

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 Organización de NOMBRE CURSO: Lenguajes y SECCIÓN: A Compiladores 1 ESCUELA:

Más detalles

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa

Programación 1 Tema 2. Lenguaje de programación y ejecución de un programa Programación 1 Tema 2 Lenguaje de programación y ejecución de un programa Índice Lenguaje de programación Símbolos Sintaxis Semántica Computador Ejecución de un programa Sistema operativo, entorno de programación

Más detalles

Introducción al Diseño de Compiladores. Año

Introducción al Diseño de Compiladores. Año Introducción al Diseño de Compiladores Año 2003 1 BIBLIOGRAFÍA [AHO] Compilers. Principles, Techniques, and Tools Aho, Sethi; Adisson-Wesley 1986 [TEU] Compiladores: Conceptos fundamentales. Teufel ; Addison

Más detalles

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación CODIGO: 796 CREDITOS: 3 ESCUELA: Ciencias

Más detalles

Tema 5. Análisis semántico

Tema 5. Análisis semántico Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas

Más detalles

CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO!

CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO! CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO! AUTORÍA MARÍA CATALÁ CARBONERO TEMÁTICA PROGRAMACIÓN ETAPA CICLO MEDIO Y SUPERIOR DE INFORMÁTICA Resumen A la hora de realizar un programa en cualquier

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.

Más detalles

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de

Más detalles

Programa Educativo: Licenciatura en Ciencias PROGRAMA DE ESTUDIO. Obligatoria Programa elaborado por:

Programa Educativo: Licenciatura en Ciencias PROGRAMA DE ESTUDIO. Obligatoria Programa elaborado por: Programa Educativo: Licenciatura en Ciencias PROGRAMA DE ESTUDIO Computacionales Área a la que pertenece : Sustantiva Profesional Horas teóricas: 2 Horas prácticas: 4 Total de Horas: 6 COMPILADORES Total

Más detalles

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

COMPILADORES. Tema 4. Análisis semántico

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 dtorres@mixteco.utm.mx Contenido 1. Funcionalidad del

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: Generación de código intermedio

Tema: Generación de código intermedio Compiladores. Guía 10 1 Tema: Generación de código intermedio Objetivos Específicos Conocer las características y principal función de un generador de código. Analizar el funcionamiento, entrada y salida

Más detalles

2. Problema de Algoritmia (5 puntos - 15 minutos)

2. Problema de Algoritmia (5 puntos - 15 minutos) APELLIDOS NOMBRE Nº Mat. UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA Y DISEÑO INDSUTRIAL Departamento de Ingeniería Eléctrica, Electrónica, Automática y Física Aplicada 2.

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 3

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 3 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 3 Contenidos: 1. Funciones y clases genéricas 2. Excepciones 3. Asertos 4. El puntero this 5. Redefinición

Más detalles

Tema: Arreglos de Objetos en C++.

Tema: Arreglos de Objetos en C++. Programación II. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Arreglos de Objetos en C++. Objetivos Específicos Describir la implementación de arreglos de Objetos.

Más detalles

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

Más detalles

TEORÍA DE AUTÓMATAS Y LENGUAJES

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

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

Nombre de la Unidad de Aprendizaje. Clave de la UA Modalidad de la UA Tipo de UA Valor de créditos Área de formación

Nombre de la Unidad de Aprendizaje. Clave de la UA Modalidad de la UA Tipo de UA Valor de créditos Área de formación Misión del Centro Universitario Somos un centro que forma parte de la Red Universitaria de la Universidad de Guadalajara. Como institución de educación superior pública asumimos el compromiso social de

Más detalles

FLEX: A FAST LEXICAL ANALYZER GENERATOR

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

Más detalles

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

Pontificia Universidad Católica del Ecuador

Pontificia Universidad Católica del Ecuador 1. DATOS INFORMATIVOS: MATERIA O MÓDULO: COMPILADORES E INTERPRETES CÓDIGO: 10730 CARRERA: NIVEL: SISTEMAS QUINTO No. CRÉDITOS: 4 CRÉDITOS TEORÍA: 4 CRÉDITOS PRÁCTICA: - SEMESTRE / AÑO ACADÉMICO: 2 / 2010

Más detalles

Tema: INTÉRPRETE ENSAMPOCO/3

Tema: INTÉRPRETE ENSAMPOCO/3 Compiladores. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: INTÉRPRETE ENSAMPOCO/3 Contenido En esta práctica se desarrollará un intérprete de lenguaje ENSAMPOCO/3

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

Más detalles

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación CODIGO: 796 CREDITOS: 3 ESCUELA: PRE REQUISITOS:

Más detalles

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores. 1 Compiladores / Guía VII / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología JavaCC Parte I Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En la presente

Más detalles

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Procesadores de lenguaje Tema 1 Introducción a los compiladores Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 6 de septiembre de 2016 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación. Capitulo 3 Introducción a las aplicaciones de C# Resumen: Item using System; espacios de nombres: Las palabras clave estilo de mayúsculas/minúsculas Pascal public class Bienvenido1 Definición Es una directiva

Más detalles

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España.

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España. Estructura de Datos y de la Información Tema 1: Gestión dinámica de la memoria Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir brevemente el concepto de programación dinámica. Interpretar un algoritmo

Más detalles

Nombre de la Unidad de Aprendizaje. Clave de la UA Modalidad de la UA Tipo de UA Valor de créditos Área de formación

Nombre de la Unidad de Aprendizaje. Clave de la UA Modalidad de la UA Tipo de UA Valor de créditos Área de formación Misión del Centro Universitario Somos un centro que forma parte de la Red Universitaria de la Universidad de Guadalajara. Como institución de educación superior pública asumimos el compromiso social de

Más detalles

Introducción a la Programación

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

Más detalles

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación

NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Laboratorio de Lenguajes Formales y de Programación CODIGO: 796 CREDITOS: 3 ESCUELA: Ciencias

Más detalles

Apuntes de Clases (continuación)

Apuntes de Clases (continuación) Apuntes de Clases (continuación) Plantillas: Según va aumentando la complejidad de nuestros programas y sobre todo, de los problemas a los que nos enfrentamos, descubrimos que tenemos que repetir una y

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1 Contenidos: 1. Características generales de C++ 2. Entrada/salida estándar 3. Variables y tipos de datos

Más detalles

Teoría de Autómatas y Lenguajes Formales Práctica 4

Teoría de Autómatas y Lenguajes Formales Práctica 4 Departamento de Tecnologías de la Información Área de Ciencias de la Computación e Inteligencia Artificial Teoría de Autómatas y Lenguajes Formales Práctica 4 1.- OBJETIVOS El objetivo de esta práctica

Más detalles

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 5. Instrucciones simples y estructuradas Programación 1 Tema 5 Instrucciones simples y estructuradas Índice Instrucciones simples Instrucciones estructuradas 2 Instrucción ::= 3 Instrucciones.

Más detalles

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++

LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++ LABORATORIO #1 INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C++ C++ es un lenguaje de programación diseñado por Bjarne Stroustrup a partir de 1979. La intención de su creación fue ampliar al exitoso lenguaje

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Generación de código intermedio Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA

Más detalles

FACULTAD POLITÉCNICA DIRECCIÓN ACADÉMICA PROGRAMA DE ESTUDIO I. IDENTIFICACIÓN Carrera : Ingeniería de Sistemas CARGA HORARIA (Horas reloj) Asignatura : Compiladores Carga Horaria Semestral 64 Semestre

Más detalles