actividad 1 - (conf). introducción a las técnicas de compilación

Upload: m8

Post on 20-Feb-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    1/67

    COMPILADORES.

    ISUTIC-INFORMATICA15/03/2015

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    2/67

    ASNAY GUIROLA GONZALES

    MASTER EN INFORMATICA APLICADA

    PROFESOR ASISTENTE

    PROGRAMACION

    INTELIGENCIA ARTIFICIAL

    BASE DE DATOS

    PROFESOR

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    3/67

    CONTENIDOS

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    4/67

    Objetivo General : Familiarizar os estudantes

    com os processos,tcnicas e ferramentas queintervm no funcionamento e no projecto de

    compiladores para utilizao em computadores

    digitais modernos

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    5/67

    1. Caracterizar las fases del proceso

    de compilacin a partir de disear

    e implementar un intrprete para

    un lenguaje de poca complejidadde forma manual y usando un

    generador automtico.

    Objetivos Generales. INTRODUC

    CINALASIGNA

    TURAP3

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    6/67

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    7/67

    Bibliografa bsica

    [1] T. Parr, Language Implementation

    Patterns: Create Your Own Domain-Specificand General programming Languages, The

    Pragmatic Bookshelf, 2009.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    8/67

    Bibliografa bsica

    [3] R. Brena,Autmatas y lenguajes. Un enfoque

    de diseo., Universidad Tcnica de Monterrey,

    Mxico, 2003.

    [4] A. Aho, M. Lam, R. Sethi, and J. Ullman,

    Compilers - Principles Techniques and Tools,Addison Wesley, second ed., (2007).

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    9/67

    INTRODUCCIN A LAS TCNICAS DECOMPILACIN

    Conceitos Bsicos de Compilao.Compiladores Versus Interpretadores. AEstrutura de um Compilador

    15/03/2015

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    10/67

    INTRODUCCIN

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    11/67

    INTRODUCCIN

    Lenguaje de programacinLenguaje natural

    Lenguaje de mquina

    Comunicacin

    101001101

    Hola ?

    101001101

    if(c > 0)

    c++;

    while(i>0)

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    12/67

    Compilacin

    INTRODUCCIN

    classProcess{

    stringname;

    voidBegin(){

    01101011

    11001111

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    13/67

    INTRODUCCIN

    Lenguaje

    Conjunto de smbolos y reglas que permiten la comunicacin,es decir, trasmitir una idea, un mensaje.

    Lxico

    Conjunto de palabras que forman parte de un lenguajeespecfico.

    GramticaConjunto de reglas y principios que gobiernan el uso de unlenguaje determinado; as, cada lenguaje tiene su propiagramtica.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    14/67

    INTRODUCCIN

    Sintaxis

    Define las formas en que se combinan las palabras para laformacion de frases.

    Semntica

    Significado, sentido o interpretacin de un determinado

    elemento, smbolo, palabra, lenguaje o representacinformal.

    Lenguaje de programacinConjunto de smbolos y reglas sintcticas y semnticas quepermiten la comunicacin con un ordenador.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    15/67

    INTRODUCCIN

    Lenguaje de mquina

    Conjunto de intrucciones y datos, expresados enformato binario, que son ejecutados por el CPU

    de un ordenador.

    Lenguaje de bajo nivel

    Similar al lenguaje de mquina con pequeasmodificaciones nemotcnicas que facilitan suuso, por ejemplo el lenguaje ensamblador.

    Lenguaje de mquina10110000 01100001

    Lenguaje ensambladorMOV AL, #61h

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    16/67

    INTRODUCCIN

    Lenguaje de alto nivel

    Lenguaje que permite la comunicacin con un computadormediante smbolos convencionales cercanos a un lenguajenatural.

    Ejemplos

    Pascal Java C++

    C # Ruby Python

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    17/67

    INTRODUCCIN

    Objetivos

    Caracterizar los conceptos de traductor,

    compilador e intrprete.

    Caracterizar la estructura de un compilador,

    as como cada una de las fases del proceso de

    compilacin.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    18/67

    SUMARIO

    Introduccin.1.

    Compiladores y Traductores.2.

    Estructura de un compilador.3.

    Conclusiones.4.

    Bibliografa.5.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    19/67

    COMPILADORES Y TRADUCTORES

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    20/67

    COMPILADORESYTRADU

    CTORES

    Traductor

    Un traductor es un programa que toma como

    entrada un programa escrito en un lenguaje deprogramacin (lenguaje fuente) y produce comosalida un programa en otro lenguaje (lenguajeobjeto).

    Cdigofuente

    Cdigoobjeto

    Traductor

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    21/67

    COMPILADORESYTRADU

    CTORES

    Compilador

    Un compilador es un programa que permitetraducir el cdigo fuente (lenguaje de alto nivel)

    a otro lenguaje de nivel inferior(tpicamente lenguaje mquina).

    Cdigofuente

    Compilador

    Lenguajede

    mquina

    Compilacin Ejecucin

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    22/67

    COMPILADORESYTRADU

    CTORES

    Intrprete

    Un intrprete es un programa que toma elcdigo fuente, lo analiza y lo ejecutadirectamente.

    Cdigo

    fuente

    IntrpreteEjecucin

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    23/67

    Cdigo

    fuente

    Traductor

    Compilador

    (MquinaVirtual deJAVA)

    Bytescodesalida

    Compilador Hbrido

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    24/67

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    25/67

    ESTRUCTURA DE UN COMPILADOR

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    26/67

    ESTRUCTURADEUN

    COMPILADO

    R

    Cdigofuente

    Generacin deCdigo Intermedio

    Optimizacin deCdigo Intermedio

    Generacin deCdigo Objeto

    Cdigo

    Objeto

    AnlisisLxico

    AnlisisSintctico

    Anlisis

    Semntico

    Tokens

    rbol Sintctico

    Cdigo Intermedio

    Cdigo Intermedio Optimizado

    T

    ABLADESM

    BOLOS

    G

    ESTINDEERRORES

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    27/67

    COMPILADORESYTRADU

    CTORES

    Analizador Lxico (Scanner)

    Recibe como entrada una secuencia de smboloso caracteres.Devuelve como salida una secuencia deentidades sintcticas simples denominadastokens o lexemas.

    Token

    Scanner Parser

    NextToken

    TABLA DE SMBOLOS

    Cdigofuente

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    28/67

    Las categoras de tokens pueden variar de

    un lenguaje a otro, pero en general sedistinguen las siguientes:

    palabras reservadas

    identificadores

    constantes numricas y literales

    operadores demilitadores

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    29/67

    COMPILAD

    ORESYTRADU

    CTORES

    Estructura de un Token

    Tipo del token: Representa una categorasintctica.Info: Proporciona informacin relacionada con

    el token.

    Token Lexema

    id total

    num 60

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    30/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    V

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    31/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    A

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    32/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    L

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    33/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    O

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    34/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    R

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    35/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    1

    Tabla de smbolos

    1

    2

    34

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    36/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    VALOR1

    Tabla de smbolos

    1

    2

    3 id4

    < id, 3 >

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    37/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    =

    < id, 3 >Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    38/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    =

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    39/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    V

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    40/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    A

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    41/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    L

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    42/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    O

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    43/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    R

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    44/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    2

    < id, 3 >< op_as, = >

    Tabla de smbolos

    1

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    45/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    VALOR2

    Tabla de smbolos

    1 id

    2

    3 id4

    < id, 3 >< op_as, = >

    < id, 1 >

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    46/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    +

    < id, 3 >< op_as, = >

    < id, 1 >

    Tabla de smbolos

    1 id

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    47/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    +

    < id, 3 >< op_as, = >

    < id, 1 >

    < op_ar, +>

    Tabla de smbolos

    1 id

    2

    3 id4

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    48/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    1

    Tabla de smbolos

    1 id

    2

    3 id4 const

    < id, 3 >< op_as, = >

    < id, 1 >

    < op_ar, + >< const, 4 >

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    49/67

    V A L O R 1 = V A L O R 2 + 1 ;

    COMPILAD

    ORESYTRADU

    CTORES

    ;

    < id, 3 >< op_as, = >

    < id, 1 >

    < op_ar, + >< const, 4 >< delim, ;>

    Tabla de smbolos

    1 id

    2

    3 id4 const

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    50/67

    COMPILAD

    ORESYTRADU

    CTORES

    Tabla de smbolos

    Es una estructura de datos que posee unaentrada para cada identificador o constantedefinido o utilizado en el programa fuente y susatributos.

    Tabla de smbolos

    1 valor2 id float2

    3 valor1 id float

    4 1 const int

    float valor2, valor1;

    //valor1 = valor2 + 1;

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    51/67

    Anlisis lxico

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    52/67

    Anlisis lxico

    Token

    Scanner Parser

    NextToken

    TABLA DE SMBOLOS

    Cdigo

    fuente

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    53/67

    COMPILAD

    ORESYTRADUCTORES

    Anlisis sintctico (Parser)

    Recibe como entrada la secuencia de tokensgenerada por el scanner.Devuelve como salida si la secuencia de tokens eso no correcta de acuerdo a la definicin sintcticadel lenguaje.[ Agrupa los tokens en una estructura en forma derbol, denominada rbol sintctico. ]

    CReglas sintcticas

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    54/67

    COMPILAD

    ORESYTRADUCTORES

    Reglas sintcticas

    exp exp + expexp exp * exp

    exp idexp const

    valor2 + valor3 * 1 valor2 +* valor3

    Scanner Scanner

    Parser Parser

    ExpresinCorrecta!!!

    ExpresinIncorrecta!!!

    C

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    55/67

    COMPILAD

    ORESYTRADUCTORES

    valor1 = valor2 + valor3 * 1

    *

    +

    =

    id1

    id2

    id3 1

    CAnlisis semntico

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    56/67

    COMPILAD

    ORESYTRADUCTORES

    valor1 = valor2 + valor3 * 1

    *

    +

    =

    id1

    id2

    id3

    1

    Anlisis semntico

    Analiza la estructura jerrquica construida por elparser, para tratar de encontrar errores

    semnticos y preparar la generacin de cdigo.

    EntAReal

    C

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    57/67

    COMPILAD

    ORESYTRADUCTORES

    Generacin de cdigo intermedio

    El cdigo intermedio debe tener dos caractersticasmuy importantes: ser fcil de producir y fcil detraducir al programa objeto.Se genera a partir de la informacin obtenidadurante el anlisis semntico.

    Representaciones de cdigo intermedio

    MSIL Java Bytecode

    Notacin de cudruplos Notacin polaca Traduccin Sintctica Directa.

    CCdigo de 3s direcciones.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    58/67

    COMPILAD

    ORESYTRADUCTORES

    g

    *

    +

    =

    id1

    id2

    id3

    1

    intToFloat

    (1) temp1 = EntToReal(const4)

    (2) temp2 = id3 * temp1

    (4) id1 = temp3

    (3) temp3 = id2 + temp2

    CO ti i i d l di I t di

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    59/67

    COMPILAD

    ORESYTRADUCTORES

    Optimizacin del cdigo Intermedio

    La fase de optimizacin se efecta con el objetivode mejorar la eficiencia del cdigo intermedio.

    Cdigo intermedio Cdigo Optimizado

    (1) temp1 = EntToReal(7)(2) temp2 = id3 * temp1

    (3) temp3 = id2 + temp2

    (4) id1 = temp3

    temp2 = id3 * 7.0

    id1 = id2 + temp2

    CG i d di bj t

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    60/67

    COMPILAD

    ORESYTRADUCTORES

    Generacin de cdigo objeto

    La fase final de un compilador es la de generacin

    del cdigo objeto, consistente en cdigo mquina o

    cdigo ensamblador.

    Cdigo Optimizado Cdigo Objeto

    temp2 = id3 * 7.0

    id1 = id2 + temp2

    MOVF id3, R2MULF #7.0, R2MOVF id2, R1

    ADDF R2, R1MOVF R1, id1

    C

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    61/67

    COMPILAD

    ORESYTRADUCTORESTipos de errores

    Lxicos Sintcticos

    Semnticos Lgicos

    Gestin e informacin de errores

    Es el encargado de informar al usuario los errores que sepresentan en cualquiera de las componentes.

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    62/67

    lexicolgicos (Ejemplo: escribir mal un

    nmero, un smbolo no permitido, etc.)

    sintcticos (Ejemplo: expresin aritmtica con

    parntesis no balanceados)

    semnticos (Ejemplo: aplicar un operador a

    un operando incompatible)

    lgicos o de programacin (Ejemplo: ciclo

    infinito)

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    63/67

    CONCLUSIONES

    C

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    64/67

    CONCLUSIONES

    Se presentaron dos clasificaciones de lenguajes de

    programacin de acuerdo a su complejidad.

    Se estudiaron los conceptos de Interprete,

    Compilador y Traductor y se mostr una clasificacin

    de los Leguajes por el tipo de estrategia de ejecucin.

    Se estudiaron, de forma general, cada una de las

    fases del proceso de compilacin

    Orientacin del Estudio independiente:

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    65/67

    Estudiar los epgrafes 1.1, 1.2 y 1.3 del libro

    Compilers Principles, techniques, and Tools, A.

    V. Aho, J. Ullman.

    Leer el artculo The difference betweencompilers and interpreters

    p

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    66/67

    BIBLIOGRAFA

    B

  • 7/24/2019 Actividad 1 - (Conf). Introduccin a Las Tcnicas de Compilacin

    67/67

    BIBLIOGRA

    FA

    Bibliografa

    Compilers Principles, techniques, and Tools, A. V. Aho, J.

    Ullman. Epigrafes 1.1, 1.2 y 1.3.

    The difference between compilers and interpreters,Terence Parr.