Compiladores

Páginas: 75 (18605 palabras) Publicado: 19 de junio de 2013
TEMA 1: INTRODUCCION A LOS COMPILADORES.
1.1- DIAGRAMA DE BLOQUES DE UN COMPILADOR.
Veamos el esquema por bloques de un compilador:

Código Fuente
Código Objeto (P ó C)


┌ৄৄ■(*)
৺৶৶৶৶৶৶■৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶■৶৶৶৶৶৶৶৶৽


┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৎ




┌ৄৄৄৄৄৄড় GESTION DE ERRORES ├ৄৄৄৄৄৄৎ





৒ৄৄৄ┬ৄৄৄৄৄৄৄৄৄৄৄৄ┬ৄৄৄৄ৖


















৷┌ৄৄৄৄৄ০ৄৄৄৄৄ০ৄৄৎ


┌ৄৄৄ০ৄৄৄৄৄ০ৄৄৄৄৎ

৷৆ Preprocesador৆
┌ৄৄৄ০ৄৄৄৄৎ
┌ৄৄৄ০ৄৄৄৄৎ ৆


৷├ৄৄৄৄৄৄৄৄৄৄৄৄৄৄড়



৆ ৆ Generación ৆

৷৆
├ৄ>ৄড় Parser ├ৄ>ৄড় An lis.├ৄ>ড়
de


৷৆
Scanner

৆ (A.S) ৆
৆Sem ntic৆ ৆
Código


৷৆
(A.L)




৆ ৆ Intermedio ৆

৷৆

৒ৄৄৄ┬ৄৄৄৄ৖
৒ৄৄৄৄ┬ৄৄৄ৖ ৆


৷৒ৄৄৄৄৄৄ┬ৄৄৄৄৄৄৄ৖

৒ৄৄৄৄৄৄ┬ৄৄৄৄৄৄৄ৖








৒ৄৄৄৄৄৄৄৄৄৎ


┌ৄৄৄৄৄ৖














┌ৄৄ০ৄৄৄৄৄ০ৄৄৄৄৄৄৄৄৄৄৄৄৄ০ৄৄৄৄৄৄৄ০ৄৄৄৄৎ



Tabla de Símbolos



├ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄড়



Tabla de Tipos



৒ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄ৖








┌ৄৄৄৄৄৄৄৄৄৄৄৎ
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৎ
┌ৄৄৄৄৄৄৄৄৄৄৄৄৎ


৆ Almacenam.৆
৆ Almacenam. ৆





de
৆৆
de


....



৆ Constantes৆

Strings





৒ৄৄৄৄৄৄৄৄৄৄৄ৖
৒ৄৄৄৄৄৄৄৄৄৄৄৄৄ৖
৒ৄৄৄৄৄৄৄৄৄৄৄৄ৖



╚৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶╝
Compilador

En términos generales, un COMPILADOR es una herramienta que
toma un código fuente y lo traduce a uno objeto.
El Compilador consta de dos partes:
- FRONT-END: correspondiente al esquemaanterior.
- BACK-END: paso del Código Objeto al M quina.
El Código Objeto ser
nuestra M quina Virtual.

en nuestro caso el Código M quina de

Construiremos un SIMULADOR para esa M quina y ese Código
Intermedio, de forma que hace las funciones de Hardware:

(*)

৺৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৽



Código 


Objeto ৆


Código
(P ó C) ৒ৄৄ>ৄৄ■
Simulador
■ৄৄ>ৄৄ■ M quina

৷৷



╚৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶৶╝

Ser una MAQUINA P (código P sencillo) o una MAQUINA C (código
C, sublenguaje del C, m s complicado)
Así se asegura la TRANSPORTABILIDAD ( al tener un código
virtual ). Sólo tendremos que cambiar el simulador.
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৎ
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৎ
৆ L. Fuente 1 ├ৄৄৄৄৄৎ
┌ৄৄৄৄৄৄৄৄৄৄৎ
┌ৄৄৄড়
Simulador 1 ৆
৒ৄৄৄৄৄৄৄৄৄৄৄৄৄ৖
৒ৄৄৄৄড় Lenguaje ├ৄৄৄৄ৖৒ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄ৖
┌ৄৄৄৄড়Intermedio├ৄৄৄৄৎ
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৎ

৒ৄৄৄৄৄৄৄৄৄৄ৖

┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৎ
৆ L. Fuente 2 ├ৄৄৄৄৄ৖
৒ৄৄৄড়
Simulador 2 ৆
৒ৄৄৄৄৄৄৄৄৄৄৄৄৄ৖
.
. ৒ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄ৖
.
.
.
.

O sea, el proceso es:
Leng. Fuente -----> Código Intermedio ------> Cód. Ensamblador



Compil. de C
Optimizado
( BACKEND )
Ejemplo: si partimos de C, al usar las herramientas utilizamos
Código C, que es unsubconjunto del C, o una m quina P que
simularemos. Este subconjunto es de tal manera que es muy
similar a los ensambladores actuales. En la M quina C es m s
difícil de generar su código, pero est m s cerca de la
m quina real. La M quina P es m s simple, trabajando sólo
sobre pilas, no sobre registros, y est m s próxima a la
M quina Virtual.
Cada BACKEND debe conocer cada parte de la Mquina donde se
vaya a implementar:
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৎ
৆ Sintaxis del৆
৆ Código P
├ৄৄৄৄৄৎ
৒ৄৄৄৄৄৄৄৄৄৄৄৄৄ৖

┌ৄৄৄৄৄৄৄৄৄৎ
৒ৄৄ>ৄৄড় BACKEND ৆---->
┌ৄৄ>ৄৄড়


৒ৄৄৄৄৄৄৄৄৄ৖
┌ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৎ ৆
৆ Definición de la৆ ৆
৆ Arquitectura de ├ৄ৖
৆ la M quina

৒ৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄৄ৖

Código
Ensamblador

En este caso, no nos ocuparemos de analizar el BACKEND del
Compilador, debido a sucomplejidad al tener que conocer la
arquitectura interna de la m quina.

1.2.- FRONT-END.
Crearemos cada uno de sus elementos, de forma que se
especifique la interrelación entre ellos y la información que
comparten.
Partes del FRONT-END:

a) SCANNER o ANALIZADOR LEXICO.
Trabaja directamente con el código de entrada.
Misión: trocear el código fuente en TOKENS...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS