Processadors de Llenguatge II. Compiladores



Documentos relacionados
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 1.

Procesadores de lenguaje Tema 1: Introducción a los compiladores

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

TEMA 1: INTRODUCCIÓN

GENERACIÓN DE CÓDIGO

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

Desarrollo del software imposible si las tareas tuviesen que expresarse en código máquina. Lenguajes de más alto nivel: comprensibles, manejables y

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

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

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

Arquitectura de Aplicaciones

Introducción a la Informática

Tema 1: Introducción

PROGRAMACIÓN ORIENTADA A OBJETOS

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

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

Introducción a compiladores. Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com

4 o Ingeniería Informática

Procesadores de lenguaje Tema 5 Comprobación de tipos

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Generación de Código Intermedio

Elementos léxicos del lenguaje de programación Java

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS

Typeset by GMNI & FoilTEX

INF 473 Desarrollo de Aplicaciones en

Tema 1. Introducción a JAVA

19. Packages o paquetes

Comunicación con la Computadora

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Índice. Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador?

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

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Lenguajes de programación

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Capitulo III. Diseño del Sistema.

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

9. Objetos y clases Clases

Modulo 1 El lenguaje Java


Procesadores de lenguaje Tema 1 Introducción a los compiladores

Proyecto Unico Interpretador de SetCalc

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

Capítulo 6. ÁRBOLES.

SOLUCIÓN: a) Signo y magnitud:

INTRODUCCIÓN A JAVA. Índice

Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: Fecha de revisión:

Arquitectura de Computadores

INSTITUTO POLITÉCNICO NACIONAL

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Introducción a la Computación

CAPITULO 3 VRML-JAVA-WWW

02 Lenguajes de programación y compiladores

Patrones para persistencia (I) Ingeniería del Software II

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

SISTEMAS OPERATIVOS AVANZADOS

Preliminares. Tipos de variables y Expresiones

Es de aplicación a todas aquellas situaciones en las que se necesita desplegar un objetivo para obtener una visión clara de cómo debe ser alcanzado.

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

La Unidad Procesadora.

Estructura de Bases de datos. Leonardo Víquez Acuña

Almacenamiento virtual de sitios web HOST VIRTUALES

Módulo 9 Sistema matemático y operaciones binarias

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

Práctica 0. Emulador XENON de la computadora CESIUS

Asignaturas antecedentes y subsecuentes

by Tim Tran:

Conectar Flash con Access usando MDM Zinc

Guía Corta: Alcance y Asociaciones. 1. Preliminares: Nombres y Asociaciones

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

1. Descripción y objetivos

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Lenguajes de Programación

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

COMPILADORES Teoría e implementación. Jacinto Ruiz Catalán

Capítulo 1 Introducción a la Computación

Ingeniería de Software Avanzada

Repaso de Conceptos Básicos de Bases de Datos

! Una variable declarada con final no puede volver a ser reinicializada. numero = 2;! ! Para definir constantes

Curso 0 de Informática

TALLER DE CONOCIMIENTOS APRENDICES JORGE LEONARDO MAZA CARLOS DAVID ZAMBRANO JOSE G. RODRIGUEZ PROFESOR RONALD MARTELO

INTRODUCCION. Docente: Ing. Mirko Manrique Ronceros

Pipelining o Segmentación de Instrucciones

EXTENSIÓN DE UML PARA APLICACIONES WEB

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

Uso de excepciones en Java

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32.

Resolución de Problemas

6-REGISTROS DEL 8086 Y DEL 80286

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Modelos y Bases de Datos

Conceptos básicos: 1,2 puntos

Técnica - Diagrama de Flujo de Datos (DFD)

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

8. Sentencia return y métodos

Compilador del lenguaje MOOL que genera código Objective Caml

Transcripción:

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 TRADUCTOR texto lenguaje fuente objeto

Que es un compilador Source program Compiler input Target program output

Que es un interprete Un interprete executa directamente las operaciones en el programa fuente. Source program input INTERPRETER output

Hybrid Compiler Source program Translator Intermediate program input Virtual Machine output Java: Bytecodes Just in time compilers translate bytecodes into ML just before runing IP

Intérpretes vs. compiladores Inicialmente interpretes eran mas comunes hoy en dia, compiladores mas comunes Porque?

Intérpretes vs. compiladores Inicialmente interpretes eran mas comunes mem(programa fuente + interprete) mem(compilador) hoy en dia, compiladores mas comunes Compila una vez, ejecuta muchas veces Ejecucion programa objeto mas rapida Compilador tiene una vision mas global del programa Interprete sin embargo da mejor diagnostico de errores

Tipos de compiladores Ensamblador: lenguaje fuente = ensamblador Compilador con montador: compila modulos independientes y luego los enlaza Autocompilador: escrito en el mismo lenguaje que va a compilar Descompilador: realiza proceso inverso a la compilacion.

Estructura de un compilador

Analisis léxico Analizador léxico = scanner Lee caracteres uno a uno y forma grupos de caracteres con alguna relación entre sí (tokens) Cada token es una secuencia de caracteres tratados como una unica entidad. Los tokens son la entrada para la siguiente etapa del compilador. Dos tipos de tokens: palabras reservadas (p.e. if, while, begin) cadenas no especificas (p.e. identificadores, constantes) Frecuentemente va unido al analizador sintáctico (p.e. como subrutina)

Analisis sintáctico Analizador sintáctico = parser Recibe como entrada los tokens que le pasa el analizador lexico Comprueba si los tokens llegan en order correcto (orden permitido por el lenguaje) La salida es un arbol sintáctico (arbol de parse). Cuando el programa fuente es incorrecto (sintacticamente) el analizador sintactico es el responsable de producir un mensaje de error.

Analisis semántico Analizador semántico es dificil de formalizar Comprueba que lo que el significado de lo que se va leyendo es válido. P.e. determina el tipo de los resultados intermedios, si los operandos son validos, si son compatibles entre si. En caso de los operadores polimórficos (un símbolo con varios significados), el analizador semantico detremina cual es el aplicable. P.e. A := B + C en Pascal

Código intermedio Una empresa que implementa un compilador normalmente implementa mas de uno (p.e. C de GNU). Para evitar implementar M*N compiladores (M fuentes, N objetos), la solución es utilizar un lenguaje intermedio. Asi solo hay que construir M programas que traduzcan al lenguaje intermedio (los front ends) y N que traduzcan del intermedio a cada lenguaje objeto (los back ends). Lenguaje intermedio es suficientemente sencillo para luego generar código de máquina.

Código intermedio WHILE (A>B) AND (A<=2*B-5) DO A:=A+B L1: IF A>B GOTO L2 GOTO L3 L2: T1:=2*B (* nivel mas alto que ensamblador *) T2:=T1-5 (* pero mas sencillo que pascal *) IF A<=T2 GOTO L4 GOTO L3 L4: A:=A+B GOTO L1 L3:

Optimizacion de Codigo Es posible realizar mejoras en al código intermedio y el código objeto. Optimizacion del código intermedio es independiente del lenguaje fuente y lenguaje objeto. Optimizacion del código objeto suele incluir optimizaciones dependiente de la maquina objeto.

Optimizacion de Codigo Fragmento del ejemplo anterior quedaria asi: L1: IF A<=B GOTO L3 T1:=2*B T2:=T1-5 IF A>T2 GOTO L3 A:=A+B GOTO L1 L3:

Optimizacion de Codigo Eliminar expresiones comunes: A:=B+C+D E:=B+C+F Quedaria asi: T1:=B+C A:=T1+D E:=T1+F

Generación de código objeto En esta parte, el código intermedio optimizado es traducido a una secuencia de instrucciones en ensamblador o en codigo de maquina del procesador que nos interese. Por ejemplo: A:=B+C se convertira en: LOAD B ADD C STORE A Existen técnicas para mejorar el codigo objeto (normalmente no óptimo), p.e. utilizar al maximo los registros de acceso rapido en vez de direcciones de memoria.

Tabla de símbolos Un compilador necesita guardar y usar la informacion de los objetos que va encontrando en el texto fuente. P.e. variables, declaraciones de tipos. Esta información se almacena en una estructura de datos interna: tabla de símbolos El compilador debe desarrollar funciones para manipular esta tabla. P.e. insertar, borrar, Accesos a la tabla deben ser rapidos.