Anda di halaman 1dari 4

Horarios

Lunes, Martes y Jueves 16:30 a 18:00

Bibliografa:
Modern compiler implementation in C, Andrew Appel Modern compiler implementation in Java, Andrew Appel Compilers: Principles, Techniques and Tools. Aho, Ullman, Compilers: Principles, Tools. Aho, Ullman, Sethi
Ser material de apoyo, no se seguirn textualmente

Previaturas
En el Plan '87 - Programacin III - Taller III - Teora I En el Plan '97 - Programacin 3 y 4 (exmen) Taller de Programacin Teora de Lenguajes (exmen)

Otros materiales:
Transparencias del curso Manuales, artculos, repartidos que se irn indicando Pgina Web

Ganancia del Curso


Primer parte: curso terico con evaluacin final eliminatoria. parte: Prof. Ana Erosa

Segunda parte: Obligatorio Construccin de un traductor. parte: Prof. Juan Jos Cabezas

Diseo de Compiladores

Diseo de Compiladores

Porqu estudiar tecnologa en compiladores? Introduccin


Materiales de lectura: Apuntes en Kiosco del CEI Aho: captulos 1 y 2. Aho: Oportunidad para entender los Lenguajes de Programacin y las Arquitecturas de las computadoras existentes Hablar inteligentemente de diseo de lenguajes Presentar tcnicas y herramientas de Ingeniera de Software ampliamente usadas

Objetivos del curso :



Diseo de Compiladores

Estudiar la teora en la construccin de compiladores Aplicar la teora a la prctica, mostrando como se construyen Usar herramientas como Yacc (Cup, Bisson) y Lex (Flex, Jlex) Cup, Bisson) Flex, Jlex)
Diseo de Compiladores

Programas relacionados con Compiladores


L Pascal
traductor

Programas relacionados con Compiladores


Linkers / loaders Preprocesadores Debuggers Profilers Manejadores de proyectos ( RCS de Unix, SourceSafe de VB) Unix,
cdigo de mquina

L cdigo assembler cdigo de mquina .ps

compilador

cdigo assembler texto

ensamblador formateador de texto

scheme

front-end front-

rbol de parser
intrprete

back-end back-

Diseo de Compiladores

Diseo de Compiladores

Pgina 1

Un poco de historia .......


1940s Von Neumann Lenguajes de mquina: secuencia de cdigo de mquina que mquina: ejecutaran los cmputos deseados: C7 06 0000 0002 Lenguajes assemblers: MOV X, 2 assemblers: Lenguaje ms matemtico, independiente de la mquina en matemtico, particular: Surge de 1954 a 1957 FORTRAN - Primer Compilador - Poco nfasis en diseo del leng. leng. - Foco en eficiencia de cdigo generado - Revolucion la programacin de computadores Jerarqua de Chomsky: clasificacin de los lenguajes segn las Chomsky: gramticas - simplific construccin de compiladores
Diseo de Compiladores

Fases de un compilador optimizador


descripcin del lenguaje fuente

fuente

analizador lexicgrafico

tokens

analizador sintctico

parse tree

generador de RI

RI RI

optimizador de cdigo

RI mejorada

generador de cdigo

cdigo optimizaciones assembler peephole

cdigo cdigo assembler assembler mejorado mejorado

Diseo de Compiladores

Fases de un compilador optimizador


descripcin del lenguaje fuente Manejador de errores

Fases de un compilador optimizador


Manejador de errores analizador lexicgrafico

fuente

analizador lexicgrafico

tokens

analizador sintctico

parse tree

generador de RI

fuente

tokens

analizador sintctico

parse tree

generador de RI

RI RI

optimizador de cdigo

RI mejorada

generador de cdigo

cdigo optimizaciones assembler peephole

RI RI

optimizador de cdigo

RI mejorada

generador de cdigo

cdigo optimizaciones assembler peephole

cdigo cdigo assembler assembler mejorado mejorado

Manejador de Tabla de Smbolos

cdigo cdigo assembler assembler mejorado mejorado

Diseo de Compiladores

Diseo de Compiladores

Fases de un compilador optimizador


Descripcin del lenguaje fuente Manejador de errores

Anlisis Lexicogrfico (scanning)


............. IF ID EQ INT,3 THEN ID ASSIGN INT,45 ELSE ID ASSIGN FLOAT 22.5 .
(tokens) tokens) (programa fuente)

fuente

analizador lexicgrafico

tokens

analizador sintctico

parse tree

generador de RI

if a = 3 then x:= 45 else x:= 22.5

RI RI

optimizador de cdigo

RI mejorada

generador de cdigo

cdigo optimizaciones assembler peephole

Manejador de Tabla de Smbolos Descripcin del lenguaje objeto

cdigo cdigo assembler assembler mejorado mejorado

Tcnica: expresiones regurales Herramienta: Lex

a x
(Tabla de Smbolos)

Diseo de Compiladores

Diseo de Compiladores

Pgina 2

Anlisis Sintctico (parsing)


IF_THEN_ELSE

Generacin de Cdigo Intermedio


IF_THEN_ELSE ASSIGN INT 45 EXPR_BIN ASSIGN ASSIGN ID X (rbol de parser) parser) INT 45 T1 = a if T1 = 3 goto THEN1 goto ELSE1 THEN1: T2 = 45 X = T2 goto ENDIF1 ELSE1: T3 = 22.5 X = T3 ENDIF: . (cdigo intermedio)

............. IF ID EQ INT 3 THEN ID ASSIGN INT 45 ELSE ID ASSIGN FLOAT 22.5


(tokens) tokens)

EXPR_BIN

ASSIGN ID X

(rbol de parser) parser)

Valida la legalidad de los tokens - Realiza chequeos semnticos gramticas independientes del contexto parsers LR, LL traduccin dirigida por la sintaxis Herramienta: Yacc
Diseo de Compiladores

Tcnicas: Tcnicas:

Tcnicas: traduccin dirigida por la sintaxis Herramienta: Yacc

Diseo de Compiladores

Optimizacin de Cdigo
if ( a > b + c ) then n=b+c else n=a
(representacin intermedia)

Optimizacin de Cdigo
T1 = a T2 = b T3 = c T4 = T2 + T3 if ( T1 > T4 ) goto THEN1 goto ELSE1 THEN1: T5 = b T6 = c T7 = T5 + T6 n = T7 goto ENDIF1 ELSE1: T8 = a n = T8 goto ENDIF1 T1 = a T2 = b T3 = c T4 = T2 + T3 if ( T1 > T4 ) goto THEN1 goto ELSE1 THEN1: n = T4 goto ENDIF1 ELSE1: n = T1 goto ENDIF1

subexpresin (b+c) se calcula una nica vez (representacin intermedia mejorada) (eliminacin de subexpresiones en comn )

Tcnicas: Anlisis de flujo de Datos


Diseo de Compiladores Diseo de Compiladores

Optimizacin de Cdigo
T1 = a T2 = b T3 = c T4 = T2 + T3 if ( T1 > T4 ) goto THEN1 goto ELSE1 THEN1: n = T4 goto ENDIF1 ELSE1: n = T1 goto ENDIF1 T1 = a T2 = b T3 = c T4 = T2 + T3 if ( T1 <= T4 ) goto ELSE1 n = T4 goto ENDIF1 ELSE1: n = T1 goto ENDIF1

Generacin de Cdigo
z=(x*y+3)/z T1 = x T2 = y T3 = T1 * T2 T4 = 3 T5 = T3 + T4 T6 = x T7 = T5 / T6 z = T7
(cdigo intermedio) (expresin)

movel _x,d0 movel _y,d1 mulsl d0,d1 moveq #3,d2 addl d1,d2 divsl d0,d2 movel d2,_z
(cdigo assembler) assembler)

Tcnicas: gramticas de atributos - pattern matching Herramientas: Twig


Diseo de Compiladores Diseo de Compiladores

Pgina 3

Otras definiciones
Anlisis y Sntesis
Anlisis - se realiza chequeo sintctico y semntico y se produce la RI Sntesis - a partir de la RI, se produce el lenguaje objeto

Front End y Back End


Front End - fases dependientes del lenguaje fuente Back End - fases dependientes del lenguaje objeto

Diseo de Compiladores

Pgina 4

Anda mungkin juga menyukai