Lenguajes de programación

Documentos relacionados
Compiladores e intérpretes Introducción

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

Procesadores de lenguaje Tema 1 Introducción a los compiladores

FASES DE UN COMPILADOR

Compiladores: Introducción

Lenguajes y Compiladores Introducción. Compiladores 1

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

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

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

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

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

Unidad 2. Introducción Lenguajes y Compiladores

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

Elementos para el estudio de los compiladores

Compilación. Jaime Gutiérrez Alfaro Compiladores e Intérpretes. II semestre,

16 Análisis sintáctico I

Diseño de Compiladores I. Estructura General de un Compilador

Un. I. Introducción a la programación de sistemas

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

Lenguajes de Cuarta Generación

Introducción a los compiladores

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Lección 1: Introducción a los compiladores. 1) Introducción 2) Las partes de un compilador. 3) Y los intérpretes?

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Principios de diseño de lenguajes

Pontificia Universidad Católica del Ecuador

Introducción a la programación

Unidad II: Análisis semántico

Lenguajes de Programación

Evolución del software y su situación actual

INTRODUCCIÓN A LOS LENGUAJES

METACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA

Generación de Código Intermedio

Compiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55

Tema: Análisis Léxico

Tema: Traductor ENSAMPOCO a ASM 8086

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

COMPILADORES E INTERPRETES

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Las Etapas de la Compilación

Programación estructurada (Lenguajes de programación)

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

FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos y Programas

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA)

Qué es el análisis semántico?

Tema 5. Soporte lógico de computadoras.

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

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS

Unidad I: Organización del Computador. Ing. Marglorie Colina

Técnicas de Programación

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

Nombre de la asignatura: Lenguajes y Autómatas I. Créditos: Aportación al perfil

Introducción a la programación: Contenido. Introducción

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

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I

4 o Ingeniería Informática

Processadors de Llenguatge II. Compiladores

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

Índice general 7. Presentación 15

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES FUNDAMENTOS DE COMPILADORES

AMBIENTES DE COMPILACION

Herramientas desarrolladas con la teoría de la programación de sistemas.

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

Algoritmos y Lenguajes de Programación

INTRODUCCION A LA PROGRAMACION (C.U.) PROGRAMACION (T.I.G.)

PRÁCTICAS DE PROCESADORES DEL LENGUAJE CURSO 2008/2009

TEMA 1 LENGUAJES DE PROGRAMACIÓN

Tema: Introducción a compiladores y MUSIM/0

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

ALGORITMO. Podemos encontrar muchas definiciones de algoritmo en los textos de programación, todas ellas muy similares:

CUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014

Lenguajes y Compiladores Traducción Dirigida por la Sintaxis

Transcripción:

Introducción Lenguajes de programación Primera generación: lenguajes máquina Los programas se escriben en código binario 000001011010000000000000 Segunda generación: lenguajes simbólicos Cada instrucción de la máquina se representa mediante símbolos ADD AX,P1 Tercera generación: lenguajes de alto nivel Una sola instrucción de este tipo representa usualmente varias instrucciones de la máquina P1 = P2 + P3; Ejemplos: FORTRAN, COBOL, LISP, BASIC, C, C++, APL, PASCAL, SMALLTALK, JAVA, ADA, PROLOG

Procesadores de lenguaje Los lenguajes simbólicos se traducen mediante ensambladores convierten cada instrucción simbólica en la instrucción máquina equivalente Los programas escritos en lenguajes de alto nivel se traducen mediante traductores o procesadores de lenguaje Tres tipos: Compilador Intérprete Compilador-intérprete Compilador Analiza un programa escrito en un lenguaje de alto nivel (programa fuente) y, si es correcto, genera un código equivalente (programa objeto) escrito en otro lenguaje, que puede ser de primera generación (de la máquina), de segunda generación (simbólico), o de tercera generación. El programa objeto puede guardarse y ejecutarse tantas veces como se quiera, sin necesidad de traducirlo de nuevo. Ejemplos: FORTRAN, COBOL, C, C++, PASCAL y ADA.

Notación en T A B C A es el lenguaje fuente B es el lenguaje objeto C es el lenguaje en que está escrito el propio compilador no necesariamente el mismo que el lenguaje fuente o el lenguaje objeto. Intérprete A Analiza un programa escrito en un lenguaje de alto nivel y, si es correcto, lo ejecuta directamente en el lenguaje de la máquina en que se está ejecutando el intérprete. Cada vez que se desea ejecutar el programa, es preciso interpretarlo de nuevo. Ejemplos: LISP, APL, SMALLTALK, JAVA y PROLOG. De algún lenguaje, como BASIC, existen a la vez compiladores e intérpretes. C

Compilador-intérprete Traduce el programa fuente a un formato o lenguaje intermedio, que después se interpreta. A C B B D B es el lenguaje intermedio D es el lenguaje en que está escrito el intérprete JAVA es un ejemplo típico primero se compila a BYTECODE, y posteriormente éste se interpreta mediante una máquina virtual de JAVA, que es un intérprete de BYTECODE. Otros conceptos Compilador cruzado Compilador que traduce un lenguaje fuente a objeto, pero el programa objeto es para un ordenador distinto a aquel en que se compila Autocompilador Compilador escrito en el lenguaje fuente que traduce Metacompilador o compilador de compiladores Programa al que se especifica el lenguaje para el que se quiere un compilador y lo genera

Compilador de una o varias pasadas Pasada Recorrido total de todo el lenguaje fuente con alguna misión específica Compilador de una pasada Todas las fases se realizan durante un paso único C y Pascal permiten compilación de una pasada Compilador de varias pasadas Imponen menos restricciones al lenguaje fuente Primera pasada: léxico y sintáctico Segunda pasada: semántico y optimización a nivel de fuente Tercera pasada: generación de código y optimización a nivel de objeto Estructura de un compilador Programa fuente Analizador morfológico Analizador sintáctico Analizador semántico Optimizador de código Generador de código Programa objeto Tabla de símbolos Gestión de memoria Proceso de errores

Analizador morfológico También llamado analizador léxico, preprocesador o scanner, en inglés. Realiza la primera fase de la compilación. Convierte el programa que va a ser compilado en una serie de unidades más complejas (unidades sintácticas o tokens) Elimina espacios en blanco y comentarios Detecta errores morfológicos Símbolo no permitido Identificador o constante mal construido Usualmente se implementa mediante un autómata finito determinista Analizador morfológico (II) Ejemplo: a[index] = 4+2 Unidades sintácticas a identificador [ corchete izquierdo index identificador ] corchete derecho = asignación 4 número + signo más 2 número

Analizador sintáctico También llamado parser, en inglés. Es el elemento fundamental del procesador, pues lleva el control del proceso e invoca como subrutinas a los restantes elementos del compilador. Realiza el resto de la reducción al axioma de la gramática para comprobar que la instrucción es correcta. Usualmente se implementa mediante un autómata a pila o una construcción equivalente. Ejemplo de asignación de subíndice aditiva identificador identificador número número a [ index ] = 4 + 2

Analizador semántico Comprueba la corrección semántica de la instrucción, por ejemplo, la compatibilidad del tipo de las variables en una. La información como los tipos de datos que se calculan mediante el analizador semántico se llaman atributos y se agregan al árbol sintáctico como anotaciones Los atributos también se pueden introducir en la tabla de símbolos Ejemplo de asignación entero de subíndice entero aditiva identificador identificador número número a [ index ] = 4 + 2 Vector de enteros entero entero entero

Generador y optimizador Generador de código Traduce el programa fuente al lenguaje objeto utilizando toda la información proporcionada por las restantes partes del compilador. Optimizador de código Mejora la eficiencia del programa objeto en ocupación de memoria o en tiempo de ejecución. En un intérprete no existen las fases de generación y optimización de código, que se sustituyen por una fase de ejecución de código. Tabla de símbolos Estructura de datos que mantiene información asociada a los identificadores Tipo Si matriz número de dimensiones Si función número y tipo de argumentos Interactúa con casi todos los componentes AM introduce identificadores Asint, Asem agrega tipos de datos y otra información Generador y Optimizador utilizan la información almacenada para generar el código adecuado