25
INTERPRETE Un interprete es un programa que lee un programa en un lenguaje y lo traduce a un programa equivalente en otro lenguaje, y además informa al usuario sobre la presencia de errores en el programa de entrada programa programa fuente objeto mensajes de error Aparente complejidad- Tareas básicas interprete

Introduccion

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Introduccion

INTERPRETEUn interprete es un programa que

lee un programa en un lenguaje y

lo traduce a un programa equivalente en otro lenguaje,

y además informa al usuario sobre

la presencia de errores en el programa de entrada

programa programa

fuente objeto

mensajes

de error

Aparente complejidad- Tareas básicas

interprete

Page 2: Introduccion

TEORIA DE SOFTWARE DE SISTEMAS

Un computador digital es una máquina que puede resolver problemas ejecutando ciertas instrucciones.

Un programa es una secuencia de instrucciones.

Los circuitos electrónicos de cada computadora reconocen un conjunto limitado de instrucciones muy simples.

Lenguaje máquina es el conjunto de instrucciones básicas de una computadora

Page 3: Introduccion

TRADUCTORES

Utilizar lenguaje máquina es difícil y tedioso. Solución:

sea L1 el lenguaje máquina y L2 un lenguaje más fácil de utilizar

programa en L2

programa en L1

compilación (compilador)

interpretación (intérprete)

Page 4: Introduccion

MÁQUINAS MULTINIVEL ACTUALES

• La mayoría de las máquinas actuales constan de 6 niveles.

• Los microprogramas son directamente ejecutados por el hardware.

Lenguajes de alto nivel

Lenguaje ensamblador

Sistema operativo

Máquina convencional

Microprogramación

Lógica digital

nivel 5

nivel 4

nivel 3

nivel 2

nivel 1

nivel 0

Traducción (compilador)

Traducción(ensamblador)

Interpretación (sistema operativo)

Interpretación (microprograma)

Ejecutados directamente

Page 5: Introduccion

Nivel 0: nivel de lógica digital Es el hardware de la máquina. El nivel inferior sería el nivel de dispositivo. En este nivel:

Puertas lógicas Circuitos integrados Circuitos combinacionales Circuitos aritméticos Relojes Memorias Microprocesadores Buses

Page 6: Introduccion

Nivel 1: nivel de microprogramación

Existe un programa llamado microprograma.

La función del microprograma es interpretar las instrucciones del nivel 2.

En algunas máquinas no existe el nivel de microprogramación.

Page 7: Introduccion

Nivel 2: nivel de máquina convencional

Cada fabricante publica el “Manual de referencia del lenguaje máquina” para cada uno de los computadores.

Las instrucciones del nivel de máquina las interpreta el microprograma.

En las máquinas en las que no existe el nivel de microprogramación, las instrucciones del nivel de máquina son realizadas directamente por los circuitos electrónicos.

Page 8: Introduccion

Nivel 3: nivel del sistema operativo

La mayoría de las instrucciones de este nivel están también en el nivel 2 pero además tiene un nuevo conjunto de instrucciones, una organización diferente de la memoria, posibilidad de ejecutar 2 o más programas ...

Las nuevas instrucciones las interpreta el sistema operativo.

Las que son idénticas a las del nivel 2 las lleva a cabo el microprograma.

Page 9: Introduccion

Nivel 4: nivel del lenguaje ensamblador

Los niveles 4 y superiores son utilizados por los programadores de aplicaciones.

Los niveles inferiores están diseñados para ejecutar los intérpretes y traductores de los niveles superiores y son escritos por los programadores de sistemas.

El ensamblador es el programa que lleva a cabo la traducción de un programa del nivel 4.

Page 10: Introduccion

Nivel 5: nivel de lenguajes de alto nivel

Los lenguajes de alto nivel son más fáciles de utilizar que los lenguajes de niveles inferiores.

Son utilizados por los programadores de aplicaciones.

Los traductores de programas en lenguaje de alto nivel pueden ser compiladores o intérpretes.

Page 11: Introduccion

Conceptos relacionados

Con algunas técnicas básicas de escritura de compiladores se pueden construir traductores para una gran variedad de lenguajes y máquinas

Arquitectura de Computadoras

Arquitectura de Computadoras

Lenguajes de Programación

Lenguajes de Programación

Teoría de Lenguajes

Teoría de Lenguajes

Teoría de Algoritmos

Teoría de Algoritmos

Ingeniería de Software

Ingeniería de Software

CompiladoresCompiladores

Page 12: Introduccion

CLASIFICACION GENERAL DE COMPILADORES De una pasada o de múltiples pasadas De carga y de ejecución De depuración o de optimización

HISTORIA Experimentación relacionada a traducción de fórmulas 1950: difícil escritura Primer FORTRAN: 18 años Hoy: técnicas sistemáticas, lenguajes de

implementación, entornos de programación y herramientas de software

Page 13: Introduccion

Computadoras Hombre

HISTORIA

Código Máquina

Lenguaje Ensamblador

Código Máquina

Ensamblador

Código Máquina

Lenguaje Ensamblador

Lenguaje de Alto Nivel

CompiladorEnsamblador

Page 14: Introduccion

El Diseño de un compilador surge como resultado de:

Desarrollo de un nuevo lenguaje de programación Adición de extensiones a los ya existentes Explotación de las características del hardware

A futuro:

Extensión para el cómputo paralelo y distribuido Explotación de características multimedia (MMX)

HOY…. Y A FUTURO

Page 15: Introduccion

ENSAMBLADOR

Traducen programas escritos en lenguaje ensamblador a código máquina

Traducen programas escritos en lenguaje de alto nivel a código intermedio o a código máquina

INTERPRETE

No genera código objeto, analiza y ejecuta directamente cada proposición del Programa Fuente (PF)

PREPROCESADOR

Sustituyen macros, incluyen archivos o extensión del lenguaje.

COMPILADOR

TIPOS DE SISTEMAS DE COMPILACIÓN

Page 16: Introduccion

SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE

estructura del programa fuente

programa fuente

programa objeto en lenguaje ensamblador

código de máquina relocalizable

biblioteca

archivos obj.relocal.

código de máquina absoluto

preprocesador

ensamblador

compilador

editor de carga y enlace

Page 17: Introduccion

ANÁLISIS (Etapa Inicial):

Divide al PF en sus elementos componentes y crea una representación intermedia.

Se determinan las operaciones y se registran en una estructura de árbol (ej. árbol sintáctico)

SÍNTESIS (Etapa Final):

Construye el PO deseado a partir de la representación Intermedia (requiere técnicas más especializadas)

PARTES DE LA COMPILACIÓN

Page 18: Introduccion

UN AMBIENTE GENERAL DE COMPILACIÓN

Fuente

Análisis léxicoAnálisis sintácticoAnálisis semántico

Intermedio

Generador de código

Código relocalizable

Enlazador

Objeto

Más: Sistemas de

edición y depuración

Page 19: Introduccion

ANÁLISIS DEL PROGRAMA FUENTE

ANALISIS LINEAL (Léxico- Exploración- Scanner) Se lee el programa como una cadena de izquierda a derecha,

se agrupan y se generan componentes léxicos o tokens (secuencia de caracteres con significado colectivo)

ANALISIS JERARQUICO (Sintáctico- Parser) Los componentes léxicos se agrupan en colecciones

anidadas con un significado colectivo ( frases gramaticales que por lo general se representan mediante

árboles sintácticos)

ANALISIS SEMANTICO Se realizan revisiones para asegurar que los componentes de

un programa se ajustan de un modo significativo

Page 20: Introduccion

EJEMPLO DE ANÁLISIS:

posicion := inicial + velocidad * 60

a ) Componentes léxicos:

1. El identificador posicion

2. El símbolo de asignación :=

3. El identificador inicial

4. El signo de suma: +

5. El identificador velocidad

6. El signo de multiplicación: *

7. El número 60

Los identificadores o nombres reconocidos se organizan en una

tabla de símbolos que se usará en los pasos siguientes

Page 21: Introduccion

FASES DE UN COMPILADOR

PROGRAMA FUENTE

analizador léxico

analizador sintáctico

administrador analizador semántico manejador

de la tabla generador de código intermedio de errores

de símbolos optimizador de código

generador de código

PROGRAMA OBJETO

Cada fase transforma al PF de una representación a otra

Page 22: Introduccion

ESQUEMA DE BLOQUES DE UN COMPILADOR

FUENTE Compilador

ANALISIS Scanner Tabla Parser de símbolos SINTESIS Prep. para la Gen. del código OBJETO Gener. del código

Page 23: Introduccion

ESTRUCTURA FUNCIONAL DE UN COMPILADOR (de una pasada)

SENTENCIA

Fuente Explorador Recono- Generador Objeto

cedor de código

Tabla de

símbolos

Page 24: Introduccion

Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilación, permitiendo detectar más errores

Las fases de Analisis Sintáctico y Semántico manejan la mayoría de los errores

En el Anáilsis Semántico se detectan errores donde la estructura sintáctica es correcta pero no tiene significado la operación

( Por. ej. sumar dos ID , donde uno es el nombre de una matriz y el otro un nombre de procedimiento)

DETECCIÓN E INFORMACIÓN DE ERRORES

Page 25: Introduccion

MODELO LENGUAJE CARACTERISTICAS

Compilado Fortran, COBOL, Sintaxis rigurosa,

C/C++, Pascal velocidad y tamaño

Interpretado Lisp,AWK, BASIC, Desempeño lento.

SQL Actividades no planea-

das. Sintaxis relajadas

Pseudocompilado Java Transportabilidad

absoluta, desempeño

intermedio. Sintaxis

rigurosa

EL LENGUAJE Y LA HERRAMIENTA