Tema 1: Introducción

Documentos relacionados
Tema 1: Introducción

Tema 1: Introducción

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

Elementos para el estudio de los compiladores

Tema 1.1. Un lenguaje mínimo y su procesador: Introducción

TEMA 2: Algoritmos y Programas. Fundamentos de Informática (Grados en Ingenierías Industriales)

descripción del argumento identificador tipo longitud condición restricción

Tema 3: Análisis sintáctico descendente. Cómo funciona el analizador sintáctico?

LAS ETAPAS DE LA METODOLOGIA METRICA

TEMA 2: Lenguajes de programación

Lenguajes de Cuarta Generación (4GL)

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria.

Lenguajes de programación

INTRODUCCIÓN A LA PROGRAMACIÓN

Unidad 2. Introducción Lenguajes y Compiladores

Autómatas Finitos y Lenguajes Regulares

Bloque II. Elementos del lenguaje de programación Java

Programación Digital I

Fundamentos de Programación y Bases de Datos

IFCT0610 Administración y Programación en Sistemas de...

Tema 1. Introducción

TEMA V: GENERACIÓN DE CÓDIGO

Compiladores: Introducción

Titulación de Formación Profesional: TÉCNICO SUPERIOR EN ADMINISTRACIÓN DE SISTEMAS INFORMÁTICOS EN RED (Real Decreto1629/2009, de 30 de octubre)

Lenguajes y Compiladores Introducción. Compiladores 1

Prácticas de Lenguajes, Gramáticas y Autómatas

Etapas para la solución de un problema por medio del computador

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

CCU Esri Colombia 2014 Taller Técnico Introducción a CityEngine

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES FUNDAMENTOS DE COMPILADORES

UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

Oracle Database 11g: Programación con PL/SQL Nuevo

Programación Java SE 7

Programación de Ordenadores. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Bloque 1. La sociedad de la información y el ordenador

UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO

José Luis Alonzo Velázquez

Curso de Computación Científica en Clusters

Teoría de Autómatas y Lenguajes Formales. Capítulo 1: Introducción. Teoría de Autómatas y Lenguajes formales es un repaso a la informática teórica.

José Luis Alonzo Velázquez

UNIVERSIDAD DE LAS PALMAS DE GRAN CANARIA

Parte I: Programación en Ada

Informática Básica. Definiciones. Conceptos generales e historia

Todos los estados del país.

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Objetivos y Temario CURSO SQL SERVER 2012

MODELIZACIÓN AUTOMÁTICA DE PROBLEMAS DE REDES DE DISTRIBUCIÓN MEDIANTE TECNOLOGÍA JAVA

Parte I: Programación en un lenguaje orientado a objetos

Nombre de la asignatura : Análisis y Diseño Orientado a Objetos. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-

El Compilador GNU para C: GCC PROGRAMACIÓN I OTOÑO DE 2018 DR. MARIO ROSSAINZ LÓPEZ

ÍNDICE CAPÍTULO I AGRADECIMIENTO DEDICATORIA. Página

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

INTRODUCCIÓN...11 CAPÍTULO 1. ELEMENTOS, ESTRUCTURA Y FUNCIONES DE UN SISTEMA OPERATIVO...13

Conceptos fundamentales de Algoritmos

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

PROGRAMACIÓN BÁSICA ii

Presentación de PLN. Datos de la asignatura. Procesamiento del. Lenguaje Natural. Ingeniero en Informática, plan 2000

PROGRAMA TEMA I.- INTRODUCCIÓN

Organización. Organización. Llenguatges de Programació Curs Gonzalo Besuievsky IMA - UdG. Horario Miércoles de 9:30 a 13:00

Programación de Ordenadores

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Universidad Central Del Este U C E Facultad de Ciencias y Humanidades Escuela de Pedagogía Mención Informática

Oferta de formación del programa ISTRAM /ISPOL.

PROGRAMACIÓN EN C para uc MCS-51

Algoritmos y Diagramas de flujo

Comunicación con la Computadora

Lenguajes. Ciclo de desarrollo. Cód. Máquina Lenguajes alto nivel Lenguaje ensamblador 6-2. Introducción a los microprocesadores IIE FI - UDELAR

Técnico Superior en DESARROLLO DE APLICACIONES WEB (LOE)

Parte I: Elementos del lenguaje Ada

CUERPO SUPERIOR FACULTATIVO OPCION: ANALISTA DE SISTEMAS

Teoría de la Computación

Lenguajes de Programación I

Introducción a los Sistemas Gestores de Bases de Datos

LA MÁQUINA VIRTUAL JAVA (JVM). COMPILADOR E INTÉRPRETE. BYTECODE, CÓDIGO FUENTE Y CÓDIGO MÁQUINA. (CU00611B)

Sintaxis y Semántica del Lenguaje. Gramáticas

METODOLOGÍA COMMONKADS.

Introducción a los ordenadores

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

Algoritmos. Luis Castellanos & Angela Galea marzo de 2012

PROGRAMA TEMA I.- INTRODUCCIÓN

Oracle Database: Programación con PL/SQL

Sistemas Operativos. Iván Bernal, PhD 4. Escuela Politécnica Nacional I.

Overview GeneXus Qué es y para qué sirve GeneXus? Principales características y beneficios.

Tema 1: Algoritmos y programas

Fundamentos de programación. Diagramas de flujo, Diagramas N-S, Pseudocódigo y Java

Introducción a la programación orientada a objetos

Introducción a la programación. El lenguaje de programación C

Error! Marcador no definido. Error! Marcador no definido. Error! Marcador no definido. Error! Marcador no definido.

PROGRAMA TEMA II.- ANÁLISIS LEXICOGRÁFICO DEL ANÁLISIS SINTÁCTICO TEMA V. - ANÁLISIS SINTÁCTICO ASCENDENTE TEMA VI.- TRADUCCIÓN BASADA EN LA SINTAXIS

Prof. María Alejandra Quintero. Informática Año

Evolución del software y su situación actual

3. Origen de los estudios en lingüística de las lenguas de señas Los estudios sobre la LSC 45

Programación de Sistemas. Mtro. en IA José Rafael Rojano Cáceres

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

Introducción. El proceso de traducción

Base de Datos Oracle 10g: Programación con PL/SQL NUEVO

ITIL V3 Entender el enfoque y adoptar las buenas prácticas

Módulo 5: Lenguaje Pascal

LA CESIUS. Dónde estamos?

Transcripció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 es un programa que traduce de un lenguaje fuente (normalmente un lenguaje de programación de alto nivel) a un lenguaje objeto (normalmente código máquina) IMPORTANTE: un compilador es un traductor Un IDE (Integrated Development Environment) no es un compilador, un IDE suele tener un buen editor, y llama al compilador y enlazador, y suele integrar un depurador. Procesamiento de Lenguajes Tema 1: Introducción 2 / 12

Tipos de procesadores de lenguaje LENGUAJE FUENTE LENGUAJE OBJETO traductor/conversor alto alto compilador alto bajo ensamblador medio/bajo bajo preprocesador alto alto intérprete alto medio (*) (*) la mayoría de los intérpretes actuales precompilan el programa fuente y generan un código intermedio Procesamiento de Lenguajes Tema 1: Introducción 3 / 12 Qué vamos a estudiar? Las técnicas y algoritmos que vamos a estudiar se aplican al diseño de compiladores, pero se pueden aplicar en otras tareas que requieran el procesamiento y/o traducción de lenguajes informáticos: Traductores automáticos de lenguajes humanos (ejemplo: internostrum, Apertium,...) Visores de PDF (evince, acroread,...) Navegadores web (Firefox, Chrome,...) Ficheros de configuración (.ini...)... Procesamiento de Lenguajes Tema 1: Introducción 4 / 12

Historia de los compiladores Los primeros compiladores eran humanos: http://eltamiz.com/elcedazo/2009/02/17/historia-de-un-viejo-informatico-elmetodo-de-trabajo-en-proceso-de-datos-en-la-decada-de-los-setenta/ Los primeros compiladores no humanos eran compiladores cruzados (cross-compilers): en una máquina se generaba código para ser ejecutado en otra máquina. Cuando se diseñaba una nueva arquitectura, lo primero que se hacía era diseñar un cross-compiler en una arquitectura conocida, para poder compilar el compilador nativo en la nueva arquitectura. Procesamiento de Lenguajes Tema 1: Introducción 5 / 12 Diseño de compiladores C C++ Pascal FORTRAN Cobol Ada 8086 RISC 68000 N lenguajes fuente M lenguajes objeto NxM compiladores Procesamiento de Lenguajes Tema 1: Introducción 6 / 12

intermedio FRONT END C C++ Pascal FORTRAN Cobol Ada Intermedio BACK END 8086 RISC 68000 N lenguajes fuente M lenguajes objeto N front end + M back end Procesamiento de Lenguajes Tema 1: Introducción 7 / 12 intermedio (mundo real) FRONT END C C++ Pascal FORTRAN Cobol Ada Intermedio 1 Intermedio 2 Intermedio 3 BACK END 8086 RISC 68000 Procesamiento de Lenguajes Tema 1: Introducción 8 / 12

Fases de un compilador Internamente, un compilador se organiza en varias fases o partes que interaccionan entre sí: 1 Análisis léxico 2 Análisis sintáctico 3 Análisis semántico 4 Gestión de errores 5 Tabla de símbolos 6 Generación de código intermedio 7 Optimización de código intermedio 8 Generación de código objeto 9 Optimización de código objeto Procesamiento de Lenguajes Tema 1: Introducción 9 / 12 Estructura estándar de un compilador Gestión errores Tab.Símbolos A. Semántico Programa fuente A. Léxico A. Sintáctico Generación Cód. Intermedio FRONT END Programa Cód.Intermedio Optimización Intermedio BACK END Generación Objeto Optimización Objeto Programa Cód. Objeto Procesamiento de Lenguajes Tema 1: Introducción 10 / 12

Cómo se especifica un traductor/compilador? Especificación léxica: expresiones regulares, AFD, diagramas de transiciones Especificación sintáctica: gramáticas independientes del contexto Especificación semántica: sistema de tipos, restricciones semánticas Especificación de la traducción: gramáticas de atributos, DDS, ETDS Procesamiento de Lenguajes Tema 1: Introducción 11 / 12 Ejemplo de traducción 2+35*4 suma(2,prod(35,4)) 2-3/(4+5*6) resta(2,div(3,suma(4,prod(5,6)))) 2-3+4 suma(resta(2,3),4) 2-3+4-5 resta(suma(resta(2,3),4),5) Hay dos formas de resolver este problema: 1 A mano (difícil) 2 Utilizando técnicas para el diseño de compiladores: análisis léxico, análisis sintáctico, traducción dirigida por la sintaxis (chupao) Procesamiento de Lenguajes Tema 1: Introducción 12 / 12