Elementos para el estudio de los compiladores
|
|
- Carla Toledo Arroyo
- hace 6 años
- Vistas:
Transcripción
1 Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
2 1 Objetivo 2 Historia 3 Traductor Tipo de Traductores Compilador Intérprete Máquina Virtual 4 Sistema de procesamiento de lenguaje 5 Fases de compilación 6 División de un compilador en etapas y módulos 7 Diagramas T Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
3 Objetivo 1 Objetivo Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
4 Objetivo Objetivo El alumno describirá las etapas del proceso de compilación, sin importar el tipo de traductor del que se trate. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
5 Historia 2 Historia Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
6 Historia Historia 1940 Primeras computadoras Programación en código máquina Primeros ensambladores El proceso de ensamblado se vuelve automático 1950 John Backus dirige en IBM un proyecto de lenguaje algebraico Primer compilador de FORTRAN Primer compilador de FORTRAN para IBM modelo 704 Noam Chomsky publica sus estudios sobre la estructura de los lenguajes formales. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
7 Historia finales de 1950 Bauer dirige un proyecto de lenguaje formal (Universidad Munich) Se crea un cómitre con la Association for Computing Machinery, en el que participa Backus. Se define IAL(International Algebraic Language) IAL recibe el nombre de ALGOL 58 Definido en notación BNF (Backus-Naur Form) Declaración de variables Estructura modular Funciones recursivas Paso de parámetros por valor o por nombre Precursor de Pascal, Ada y Modula. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
8 Historia 1960 Primeras técnicas de desarrollo de compiladores Strong y otros dividen las fase de compilación en dos etapas: front-end y back-end y promueven la creación de UNCOL, lenguaje intermedio universal Rabin y Scott proponen el uso de AFD s para el análisis léxico Primer analizador sintáctico descendente recursivo Durante la década se estudian las gramáticas LL Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
9 Historia Década de 1970 Se estudian las gramáticas LR Se definen los métodos de análisis ascendente SLR y LARL Se crean muchas herramientas para ayuda de diseño de compiladores. Aparecen lex y yacc Surgen flex y bison Generación de código Se usaba la gestión de memoria estática. Se desarrolla la pila como forma de gestionar la memoria. El uso de la memoria dinámica genera el uso del montículo(heap) como zona de memoria dinámica. Surgen problemas con respecto a las perdidas de referencia o la recolección de basura. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
10 Historia Últimos años Optimización de código Máquinas virtuales y auge de los lenguajes interpretados. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
11 Traductor 3 Traductor Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
12 Traductor Traductor Un traductor es el software que se encarga de llevar un proceso de traducción de un lenguaje de entrada (lenguaje fuente) a otro de salida o destino (lenguaje objeto) Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
13 Traductor Tipo de Traductores Maquina Virtual Traductor Ensamblador Interprete Compilador Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
14 Traductor Tipo de Traductores Elementos del estudio de los compiladores Lenguaje Ensamblador Ensamblador Código Máquina Ensamblador Es un traductor para el lenguaje ensamblador de una computadora en particular. Lenguaje ensamblador Es un lenguaje de programación de bajo nivel, que representa las instrucciones binarias de una computadora en particular mediante mnemónicos. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
15 Traductor Compilador Elementos del estudio de los compiladores Compilador Programa Fuente Compilador Programa Objeto Compilador Es el programa que realiza el análisis y síntesis de un programa fuente a un programa objeto(no necesariamente programas de bajo nivel). Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
16 Traductor Compilador Elementos del estudio de los compiladores Tipos de compiladores Compilador Cruzado Es aquel compilador que se ejecuta en una arquitectura distinta de la que genera el código objeto. Compilador Source to source Es un compilador que recibe como entrada un archivo escrito en lenguaje de alto nivel y como salida genera un programa escrito en un lenguaje de alto nivel distinto al de entrada. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
17 Traductor Intérprete Elementos del estudio de los compiladores Programa Fuente Intérprete Salidas Entradas Intérprete Un intérprete es un traductor que no genera como salida código fuente, en lugar de ello las instrucciones de código fuente son ejecutadas directamente y la salida son los resultados de ejecutar el programa. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
18 Traductor Máquina Virtual Elementos del estudio de los compiladores Programa Fuente Compilador Programa intermedio Entradas Intérprete Salidas Máquina Virtual Es un tipo de traductor que se construye a base de un compilador y un intérprete, en este caso el compilador genera un programa que será ejecutado por el intérprete. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
19 Sistema de procesamiento de lenguaje 4 Sistema de procesamiento de lenguaje Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
20 Sistema de procesamiento de lenguaje Procesador de lenguaje Programa Fuente Preprocesador Programa fuente con código de bibliotecas Compilador Programa objeto en lenguaje ensamblador Ensamblador Código máquina relocalizable Enlazador/Cargador Archivos objeto de Biblioteca Código máquina ejecutable Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
21 Sistema de procesamiento de lenguaje Elementos del estudio de los compiladores Preprocesador 1 Programa separado del compilador que es invocado antes de la traducción real 2 Elimina los comentarios. 3 Incluye los archivos de las bibliotecas. 4 Sustituye las macros. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
22 Sistema de procesamiento de lenguaje Elementos del estudio de los compiladores Enlazadores 1 Recopila el código ensamblado en archivos separados a un solo archivo objeto. 2 Conecta el código objeto con el código de las bibliotecas. 3 Conecta el código objeto con los recursos administrados por el sistema operativo. Cargadores 1 Sustituye las localidades de memoria relativa a una referencia inmediata. 2 Las direcciones nuevos son de memoria absoluta. 3 La carga del programa ser realiza en conjunto con el enlazado del programa fuente. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
23 Fases de compilación 5 Fases de compilación Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
24 Fases de compilación Elementos del estudio de los compiladores Programa Fuente Análisis Léxico Tokens Análisis Sintáctico Árbol Sintáctico Análisis Semántico Árbol Sintáctico Anotado Generación de Código Intermedio Tabla de Símbolos Código Intermedio Optimización de Código Intermedio Tabla de Tipos Código Intermedio Generación de código Objeto Manejador de errores Código Objeto Optimización de Código Objeto Código Objeto Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
25 Fases de compilación Estructuras de Símbolos y tipos Tabla de Símbolos 1 Estructura de datos que mantiene la información asociada con los identificadores: funciones, variables, constantes. 2 Interactúa con todas las fases del compilador. 3 Las operaciones de inserción, eliminación y búsqueda, necesitan ser eficientes, es decir operaciones de tiempo constante. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
26 Fases de compilación Elemenntos para el estudio de los compiladores Estructuras de Símbolos y tipos Tabla de Literales o cadenas 1 Estructura de datos que almacena la información acerca de las constantes y las cadenas. 2 Interactúa con todas las fases del compilador. 3 Ayuda a reducir el tamaño de un programa al almacenar las constantes y las cadenas que se utilizan con mayor frecuencia. Se debe impedir la eliminación de los datos de la tabla. 4 Es necesaria para que el compilador genere direcciones simbólicas para cada cadena o literal Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
27 Fases de compilación Elemenbtos para el estudio de los compiladores Estructuras de Símbolos y tipos Tabla de Tipos 1 Estructura de datos que mantiene la información asociada con los tipos nativos del lenguaje de programación, así como los tipos de datos generados por el usuario: arreglos, clases, estructuras. 2 Interactúa con todas las fases del compilador. 3 Las operaciones de inserción, búsqueda y eliminación también deben ser eficientes debido a su gran uso en el proceso de compilación. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
28 Fases de compilación Análisis Léxico 1 Primera fase de un compilador. 2 Se encarga de separar el código fuente en tokens. 3 Un token es una tupla formada por < clase léxica, un valor de token> Diagrama Tokens Programa Fuente Análisis Léxico Análisis Sintáctico next token Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
29 Fases de compilación Programa Fuente en C posicion = inicial + velocidad*60; Ejemplo Los tokens que salen del análisis léxico son: 1 <id, 1>, el número indica la posición en la tabla de símbolos. 2 <op, => 3 <id, 2> 4 <op, +> 5 <id, 3> 6 <op, *> 7 <num, 60> 8 <signo, ;> Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
30 Fases de compilación Análisis Sintáctico 1 Segunda fase de compilación. 2 Utiliza los tokens para construir una estructura de datos llamada árbol sintáctico. 3 Las reglas de construcción de árbol sintáctico están definidas por una GLC. 4 Si el árbol sintáctico se puede construir, la cadena de entrada pertenece al lenguaje en caso contrario la cadena no pertenece. Diagrama Tokens Análisis Léxico Análisis Sintáctico Árbol Sintáctico next token Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
31 Fases de compilación Ejemplo = id1 + id2 * id3 60 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
32 Fases de compilación Análisis Semántico El Análisis Semántico es la fase encargada de revisar la coherencia del programa fuente, es decir; recolecta el tipo de las variables, verifica el tipo de operandos en una operación, valida que las variables se hayan declarado antes de usarse, esta información y mucha mas se debe guardar en los nodos del árbol sintáctico. Diagrama Análisis Sintáctico Árbol Sintáctico Análisis Semántico Árbol Sintáctico con anotaciones Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
33 Fases de compilación Ejemplo = id1, float + id2,float * id3,float 60, int Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
34 Fases de compilación Generación de código Intermedio Esta fase de compilación se encarga de convertir el árbol sintáctico con la información adicional que agrego el análisis semántico en código intermedio. El código intermedio es una representación mas próxima al código máquina, pero sigue siendo independiente de la arquitectura final. Diagrama Árbol Sintáctico con anotaciones Análisis Semántico Generación de codigo iitermedio Código Intermedio Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
35 Fases de compilación Ejemplo t1 = inttofloat(60) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
36 Fases de compilación Optimización de Código Intermedio En esta fase se aplican varios algoritmos de optimización al código intermedio generado en la fase anterior para obtener código intermedio con mayor eficiencia. Ejemplo t1 = id3 * 60.0 id1 = id2 + t1 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
37 Fases de compilación Generación de Código Objeto Esta es la última fase de compilación que se encarga de convertir el código intermedio en código objeto, que por lo general es código en lenguaje ensamblador. Ejemplo LDF R2, id3 MULF R2, R2, #60.0 LDF R1, id2 ADDF R1, R1, R2 STF id1, R1 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
38 Fases de compilación Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
39 División de un compilador en etapas y módulos 6 División de un compilador en etapas y módulos Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
40 División de un compilador en etapas y módulos Etapas de un compilador La etapa de Análisis se encarga de revisar que toda la estructura del programa sea correcta y se pueda traducir al código objetivo. La etapa de Síntesis se encargar de transformar el árbol sintáctico en código objeto. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
41 División de un compilador en etapas y módulos El proceso de compilación consta de dos etapas: Análisis y Síntesis Programa Fuente Análisis Léxico Tokens Análisis Sintáctico Árbol Sintáctico Análisis Semántico Árbol Sintáctico Anotado Generación de Código Intermedio Código Intermedio Optimización de Código Intermedio Código Intermedio Generación de Código Objeto Código Objeto Optimización de Código Objeto Código Objeto Tabla de Símbolos Tabla de Tipos Manejador de errores Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
42 División de un compilador en etapas y módulos Clasificación de las fases de compilación en front-end y back-end Programa Fuente Análisis Léxico Tokens Análisis Sintáctico Árbol Sintáctico Análisis Semántico Árbol Sintáctico Anotado Generación de Código Intermedio Tabla de Símbolos Código Intermedio Optimización de Código Intermedio Tabla de Tipos Código Intermedio Generación de código Objeto Manejador de errores Código Objeto Optimización de Código Objeto Código Objeto Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
43 División de un compilador en etapas y módulos Front-end y Back-end Un compilador también puede dividirse en dos módulos funcionales: Front-end y Back-end El Front-end revisa la estructura del programa fuente y genera el código objeto que es la entrada para cualquier back-end que traduzca ese código intermedio en código de máquina. El Back-end este modulo traduce el código objeto en código máquina lo que se pueden tener varios back-end para un mismo código intermedio que lo transforme en distintos códigos de máquina. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
44 Diagramas T 7 Diagramas T Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
45 Diagramas T Un compilador escrito en lenguaje H que traduce lenguaje S a lenguaje T. Si se tienen dos compiladores que se ejecutan en la misma máquina H, uno de los que traduce lenguaje A al lenguaje B mientras que el otro traduce el lenguaje B al C; dejando que la salida del primero sea la entrada al segundo. Entonces podemos combinarlos dejando que la salida del primero sea la entrada al segundo. El resultado es un compilador de A a C en máquina H. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
46 Diagramas T Podemos utilizar un compilador de la máquina H a la máquina K para traducir el lenguaje de implementación de otro compilador de H a K. Esto se expresa de la siguiente manera. Utilizando un compilador existente para el lenguaje B en la máquina H para traducir un compilador de lenguaje A a H escrito en B, puede verse como sigue. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
47 Diagramas T Ahora el compilador de lenguaje B se ejecuta en una máquina diferente, lo cual resulta en un compilador cruzado para A y puede describirse de la siguiente manera: Arranque de un compilador Es común escribir un compilador en el mismo lenguaje que está por compilarse Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
48 Diagramas T El proceso de construcción consta se dos fases. Se puede escribir un compilador rápido e impreciso en lenguaje ensamblador o algún otro lenguaje de alto nivel, traduciendo solamente las características que en realidad sean utilizadas en el compilador.(fase 1) Este compilador puede ser ineficiente pero una vez en ejecución se utiliza para compilar el compilador eficiente y preciso para producir la versión final.(fase 2) Después del arranque automático se tiene un compilador tanto en código fuente como en código ejecutable. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
49 Diagramas T FASE 1 FASE 2 Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
50 Diagramas T La ventaja de este proceso es que cualquier mejoramiento al código fuente del compilador puede ser transferido inmediatamente a un compilador que este trabajando, aplicando el mismo proceso Otra ventaja es que transportar ahora el compilador a una nueva computadora anfitrión solamente requiere que la etapa final del código fuente vuelva a escribirse para generar código para la nueva máquina. Se compila utilizando el compilador antiguo para producir un compilador cruzado y el compilador es nuevamente recompilado mediante uno cruzado para una versión de trabajo para una nueva máquina. Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
51 Diagramas T Ing. Adrian Ulises Mercado Martínez Enero 30, / 51
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 detallesUnidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas
Unidad I Introducción a la programación de Sistemas M.C. Juan Carlos Olivares Rojas Agenda 1.1 Qué es y que estudia la programación de sistemas? 1.2 Herramientas desarrolladas con la teoría de programación
Más detallesTema 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 detallesPROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal
Más detallesDiseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA
Diseño de compiladores Gestión de la memoria / Generación de código ORGANIZACIÓN DE MEMORIA Organización de memoria Depende del tipo de lenguaje (declarativos, imperativos), del compilador y del sistema
Más detallesMétodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Más detallesTema 2 Conceptos básicos de programación. Fundamentos de Informática
Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis
Más detallesPROGRAMA 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 detallesProcesadores de Lenguaje
Procesadores de Lenguaje Bootstrapping de Compiladores y Diagramas en T Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2012 Qué es un compilador?
Más detallesUnidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesUnidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas
Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico
Más detallesQué es un programa informático?
Qué es un programa informático? Un programa informático es una serie de comandos ejecutados por el equipo. Sin embargo, el equipo sólo es capaz de procesar elementos binarios, es decir, una serie de 0s
Más detallesTEMA 3: El proceso de compilación, del código fuente al código máquina
TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado
Más detallesToda 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 detallesTema V Generación de Código
Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.
Más detallesLas Etapas de la Compilación
Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos
Más detallesTEORÍ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 detallesProcesadores 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 detallesTema 8 Gestión de la memoria en tiempo de ejecución.
Traductores, Compiladores e Intérpretes 1 Tema 8 Gestión de la memoria en tiempo de ejecución. S Organización de la memoria en tiempo de ejecución. Cuando un programa se ejecuta sobre un sistema operativo
Más detallesINDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación
INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.
Más detallesTema 7. Generación de código
Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión
Más detalles1. Computadores y programación
1. Computadores y programación Informática y computadora (RAE) Informática (Ciencia de la computación) Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático de la
Más detallesProgramación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Más detallesComputadora y Sistema Operativo
Computadora y Sistema Operativo Según la RAE (Real Academia de la lengua española), una computadora es una máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos
Más detallesUn. VI. Generador de código intermedio.
Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes
Más detallesSistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Más detalles2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.
Modulo 1. Introducción a los lenguajes de programación La solución de problemas mediante en uso de un computador nos lleva a desarrollar programas o aplicaciones, la construcción de estos programas debe
Más detallesTema 6 Organización y gestión de la memoria
Departamento de Tecnologías de la Información Tema 6 Organización y gestión de la memoria Ciencias de la Computación e Inteligencia Artificial Índice 6.1 Organización de la memoria en tiempo de ejecución
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo Qué es una computadora? Una computadora es una máquina digital y sincrónica con capacidad de cálculo numérico y lógico controlada
Más detallesAnalista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
Más detallesC1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid
C1 INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid Índice 1. Lenguajes de Programación 1. Definición. 2. Niveles
Más detallesTécnicas de Programación
Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia
Más detallesINICIACIÓN A LA PROGRAMACIÓN 1ª parte
TEMA 4 INICIACIÓN A LA PROGRAMACIÓN 1ª parte Qué es la programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. En la actualidad,
Más detallesConstrucción de tablas de análisis sintáctico LL(1)
Construcción de tablas de análisis sintáctico LL(1) Universidad de Costa Rica Escuela de Ciencias de la Computación e Informática Diego Centeno Gerardo Cortés Juan Diego Alfaro Resumen. A la medida en
Más detallesINTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Más detallesEnteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.
LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado
Más detallesTema 1: Introducción
Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 12 Definición de compilador Un compilador
Más detallesTabla de Símbolos. Programación II Margarita Álvarez
Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados
Más detallesIntroducción a la programación
Introducción a la programación Conceptos Básicos El objetivo fundamental de éste curso es enseñar a resolver problemas mediante una computadora. El programador de computadoras es antes que nada una persona
Más detallesProgramación de Sistemas. Unidad 1. Programación de Sistemas y Arquitectura de una Computadora
Programación de Sistemas Unidad 1. Programación de Sistemas y Arquitectura de una Computadora Programación de Sistemas Arquitectura de una Computadora Componentes de un Sistema de Cómputo Un sistema está
Más detallesUniversidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación
Universidad Autónoma Metropolitana Unidad Azcapotzalco División de Ciencias Básicas e Ingeniería Licenciatura en Ingeniería en Computación Propuesta de Proyecto Terminal Clasificación de servicios web
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Más detallesProcessadors de Llenguatge II. Compiladores
Processadors de Llenguatge II Compiladores Que es un compilador Un traductor es cualquier programa que toma un texto escrito en un lengiaje y da como salida en otro lenguaje(llamado objeto) texto lenguaje
Más detallesFundamentos de Programación 2017-I
Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis
Más detallesUnidad I: Organización del Computador. Ing. Marglorie Colina
Unidad I: Organización del Computador Ing. Marglorie Colina Arquitectura del Computador Atributos de un sistema que son visibles a un programador (Conjunto de Instrucciones, Cantidad de bits para representar
Más detallesLEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
Más detallesJavaCC 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 detallesTEMA 1: INTRODUCCIÓN
1 DISEÑO Y DESARROLLO DE COMPILADORES TEMA 1: INTRODUCCIÓN Qué es un Compilador? Un compilador no es más que un traductor, es decir, un programa que nos permite pasar información de un lenguaje a otro.
Más detalles2.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 detallesProcesadores de Lenguaje
Procesadores de Lenguaje Repaso TALF Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 La Jerarquía de Chomsky Cuatro niveles de lenguajes formales
Más detallesTema II: Metodología para la construcción de programas
Tema II: Metodología para la construcción de programas Semestre: A-2012 Profesora: Nelly García Mora Agenda 1. Definición 2. Análisis E P S 3. Construcción de Algoritmos 4. Diagramas de Flujo 5. Codificación
Más detallesIntroducción a compiladores. Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com
Introducción a compiladores Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com Introducción a compiladores Definición de compilador Historia de los compiladores
Más detallesOPTIMIZACIÓN DE CÓDIGO
OPTIMIZACIÓN DE CÓDIGO INTRODUCCION La finalidad de la optimización de código es producir un código objeto lo más eficiente posible. En algunos casos también se realiza una optimización del código intermedio.
Más detallesUNIDAD 1 Introducción a los Algoritmos y Estructuras de Datos. 1.1 Definición de Algoritmo
UNIDAD 1 Introducción a los Algoritmos y Estructuras de Datos 1.1 Definición de Algoritmo Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.
Más detallesAPUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Más detallesTodo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Más detallesPrincipios 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 detallesTema 1: Introducción
Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 12 Definición de compilador Un compilador
Más detallesEstructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Más detallesMODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.
MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.
Más detallesFundamentos de programación JAVA
Pág. N. 1 Fundamentos de programación JAVA Familia: Editorial: Autor: Computación e informática Macro Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-238-7 N. de páginas: 296 Edición: 2. a 2014 Medida:
Más detallesDesde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Más detallesConstruyendo Programas más Complejos
Arquitectura de Ordenadores Construcciones de Alto Nivel en Ensamblador Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Construyendo Programas más
Más detallesLenguajes de programación Última modificación 2008/10
Lenguajes de programación Última modificación 2008/10 La Torre de Babel (1563) - Pieter Brueghel el Viejo 2008 Güimi (http://guimi.net) Esta obra está bajo una licencia "Reconocimiento-Compartir bajo la
Más detallesFUNCIONAMIENTO DEL ORDENADOR
FUNCIONAMIENTO DEL ORDENADOR COMPUTACIÓN E INFORMÁTICA Datos de entrada Dispositivos de Entrada ORDENADOR PROGRAMA Datos de salida Dispositivos de Salida LOS ORDENADORES FUNCIONAN CON PROGRAMAS Los ordenadores
Más detallesCICLOS DEL PROCESADOR
UNIDAD DE CONTROL CICLOS DEL PROCESADOR Qué es un ciclo de búsqueda? Para qué sirve estudiar los ciclos de instrucción de una CPU? Para comprender el funcionamiento de la ejecución de instrucciones del
Más detallesSISTEMAS. UNIDAD VI Parte A ADMINISTRACION DE MEMORIA ING. AGUILERA SERGIO OMAR
SISTEMAS OPERATIVOS UNIDAD VI Parte A ADMINISTRACION DE MEMORIA ING. AGUILERA SERGIO OMAR ESTRUCTURA DE MEMORIA CENTRAL Bus de Direcciones CPU v MMU n Bus de Datos Bus de Control 1 (r,w) m 2 n -1 palabras
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación
Más detallesGuí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 detallesModelos de Desarrollo de Programas Y Programación Concurrente Clase N 3
PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia
Más detallesPrincipios de Programación en Java
Programa: Curso - Taller Principios de Programación en Java Fechas: 20, 21, 22, 23 y 24 de junio, 2016 de 16:00 a 19:00 hrs Lugar: Preparatoria Vespertina No 1. Centro de Cómputo Instructor del Curso:
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesAlgoritmos 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 detallesESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES
Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Programa 1. Introducción. 2. Desarrollo de programas. 3. Sintaxis de un lenguaje ensamblador.
Más detallesIntroducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones
Introducción a la Computación Capítulo 10 Repertorio de instrucciones: Características y Funciones Que es un set de instrucciones? La colección completa de instrucciones que interpreta una CPU Código máquina
Más detalles41 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 detallesLa última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.
Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la
Más detallesCompiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz
Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)
Más detallesFundamentos de Programación Visual Basic
Pág. N. 1 Fundamentos de Programación Visual Basic Familia: Editorial: Tecnología de información y computación Macro Autor: Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-236-3 N. de páginas: 280
Más detallesGENERACIÓN DE CÓDIGO INTERMEDIO
INTRODUCCION GENERACIÓN DE CÓDIGO INTERMEDIO Esta fase del compilador no es en realidad una parte separada del compilador, la mayoría de los compiladores generan código como parte del proceso de análisis
Más detallesPruebas de escritorio
Pruebas de escritorio Es un proceso que consiste en hacer seguimiento a un algoritmo recorriendo sus líneas simulando el funcionamiento del procesador del computador. Ejemplo: Realizar un algoritmo que
Más detallesUnidad I: Análisis semántico
Unidad I: Análisis semántico 1.1 Arboles de expresiones Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos. Los datos se almacenan en una estructura con forma de árbol.
Más detallesDescripció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 detallesUNIDAD 1. COMPONENTES DEL COMPUTADOR
UNIDAD 1. COMPONENTES DEL COMPUTADOR OBJETIVO Nº 1.1: DEFINICIÓN DE COMPUTADOR: Es un dispositivo electrónico compuesto básicamente de un procesador, una memoria y los dispositivos de entrada/salida (E/S).
Más detallesCurso 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 detallesProgramación Avanzada
Programación Avanzada Instructivo de Compilación 1 1 Índice 1 ÍNDICE... 2 2 INTRODUCCIÓN... 3 3 HERRAMIENTAS... 3 3.1 SINTAXIS DE LOS COMANDOS GCC Y G++... 3 3.2 OTRAS HERRAMIENTAS:... 4 3.3 EJEMPLOS:...
Más detallesINDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)
INDICE Capitulo 1. Qué es un computador? 1.1. Introducción 1 1.2. El computador como dispositivo electrónico 2 1.3. Cómo se procesa la información? 3 1.4.Diagrama de bloques de un computador 1.4.1. Información
Más detallesAgradecimientos. 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 detallesP L A N I F I C A C I O N
P L A N I F I C A C I O N ESTABLECIMIENTO: INSTITUTO SUPERIOR JUJUY CARRERA: TECNICATURA SUPERIOR EN INFORMATICA CON ORIENTACION EN SISTEMAS DE INFORMACION ASIGNATURA: HS. CATEDRA: MODALIDAD: PROFESOR:
Más detallesCarrera: 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 detallesCapítulo 5: Traducción Dirigida por Sintaxis
Capítulo 5: Traducción Dirigida por Sintaxis Javier Carvajal Universidad de Costa Rica, Escuela de Ciencias de la Computación e Informática, San José, Costa Rica, francisco.carvajal@ecci.ucr.ac.cr and
Más detallesAlgoritmos y Lenguajes de Programación
Introducción y horario Algoritmos y Lenguajes de Programación 543242-2 mariomedina@udec.cl Código: 543242-2 Carrera: Ing. Civil Electrónica Clases 7 de Marzo a 28 de Junio Horario clases Martes, 9:10 a
Más detallesTEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA
TEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA 2.1 Deición de Algoritmo Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un problema en un tiempo ito. Solución(problema) ALGORITMO(Solución(problema))
Más detallesTema 3. Análisis sintáctico descendente
Departamento de Tecnologías de la Información Tema 3 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 3.1 Características del análisis sintáctico 3.2 Gramáticas libres de
Más detallesSERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE
Código: F004-P006- GFPI Nº 23 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE Programa de Formación: Técnico en programación de software Código:228120 Versión: 102 Nombre del Proyecto: SISTEMA DE INFORMACIÓN
Más detallesProgramación con C Intermedio
Programa de Capacitación en Cómputo Semestre 2016-2 Programación con C Intermedio Instructor: P. I. Gutiérrez Chávez Cristóbal INFORMACIÓN GENERAL El lenguaje C es un lenguaje de programación estructurada
Más detallesLenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados
Lenguajes de Programación Nombres, Ambitos y Ligados Juan Zamora O. Semestre II - 2013 Nombres, Ambitos y Ligados Aspectos semánticos fundamentales de las variables. Conceptos a revisar: Abstracción Nombres
Más detallesTema: Tabla de Símbolos
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
Más detallesColección de Tesis Digitales Universidad de las Américas Puebla. Romero Martínez, Modesto
1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto El procesamiento de consultas en un sistema multibase de datos es la pieza mas importante para la operación del
Más detalles