Tema 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

1 downloads 95 Views 170KB Size

Recommend Stories


TEMA 1 LA PREHISTORIA
TEMA 1 LA PREHISTORIA Proceso de hominización: hace 6.000.000 de años, debido al calentamiento de la Tierra que provocó la desaparición de los bosques

TEMA 1. ESTADÍSTICA DESCRIPTIVA
TEMA 1. ESTADÍSTICA DESCRIPTIVA 1.1 Introducción: conceptos básicos 1.2 Tablas estadísticas y representaciones gráficas 1.3 Características de variabl

TEMA 1: Números naturales
TEMA 1: Números naturales 1. ■□□ Copia en tu cuaderno y completa: a) 1 decena = ___unidades b) 1 centena = ___ unidades c) 1 centena = ___decenas d) 1

Story Transcript

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

L ENGUAJE FUENTE L ENGUAJE 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: I I I I I

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

8086

C++

RISC

Pascal

68000

FORTRAN

...

Cobol

...

Ada

...

...

... N lenguajes fuente M lenguajes objeto NxM compiladores

Procesamiento de Lenguajes

Tema 1: Introducción

6 / 12

Código intermedio FRONT END

BACK END

C

8086

C++

RISC

Pascal FORTRAN

68000

Código Intermedio

...

Cobol

...

Ada

...

...

... N lenguajes fuente M lenguajes objeto N front end + M back end

Procesamiento de Lenguajes

Tema 1: Introducción

7 / 12

Código intermedio (mundo real) FRONT END

BACK END

C

8086

C++

Código Intermedio 1

RISC

Pascal

Código Intermedio 2

68000

FORTRAN Cobol Ada

Código Intermedio 3 ...

...

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 2 3 4 5 6 7 8 9

Análisis léxico Análisis sintáctico Análisis semántico Gestión de errores Tabla de símbolos Generación de código intermedio Optimización de código intermedio Generación de código objeto 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 Código Intermedio

Generación Código Objeto BACK END Optimización Código 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 2-3/(4+5*6) 2-3+4 2-3+4-5

suma(2,prod(35,4)) resta(2,div(3,suma(4,prod(5,6)))) suma(resta(2,3),4) 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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.