Grupo 1 Proceso de Lenguajes i

download Grupo 1 Proceso de Lenguajes i

of 22

Transcript of Grupo 1 Proceso de Lenguajes i

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    1/22

    TEMA: CONCEPTOS FUNDAMENTALES

    INTEGRANTES: ROCIO JIMENEZ

    LIZ SOSA

    Ingeniera en Informtica

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    2/22

    Los compiladores son programas de computadora que traducen de unlenguaje a otro. Un compilador toma como su entrada un programaescrito en lenguaje fuente y produce un programa equivalente escrito enlenguaje objeto.

    Generalmente al lenguaje fuente se le asocia como lenguaje de alto

    nivel, mientras al lenguaje objeto se le conoce como cdigo objeto(cdigo de maquina) escrito especficamente para una maquina objeto. Alo largo del proceso de traduccin el compilador debe informar lapresencia de errores en el lenguaje fuente.

    Disear y desarrollar un compilador, no es tarea fcil, y quizs pocos

    profesionales de la computacin se vean involucrados en esta tarea.

    No obstante, los compiladores se utilizan en casi todas las formas de lacomputacin y cualquiera involucrado en esta rea debera conocer laorganizacin y el funcionamiento bsico de un compilador.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    3/22

    Utilizacin de un compilador

    En las primeras pocas de la informtica, el software de los

    compiladores era considerado como uno de los ms complejosexistentes.

    Los primeros compiladores se realizaron programndolosdirectamente en lenguaje mquina o en ensamblador. Una vezque se dispone de un compilador, se pueden escribir nuevas

    versiones del compilador (u otros compiladores distintos) en ellenguaje que compila ese compilador.

    Actualmente existen herramientas que facilitan la tarea deescribir compiladores intrpretes informticos. Estas

    herramientas permiten generar el esqueleto del analizadorsintctico a partir de una definicin formal del lenguaje departida, especificada normalmente mediante una gramticaformal y barata, dejando nicamente al programador delcompilador la tarea de programar las acciones semnticas

    asociadas.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    4/22

    Anlisis:Se trata de la comprobacin de la correccin delprograma fuente, e incluye las fases correspondientes alAnlisis lxico(que consiste en la descomposicin delprograma fuente en componentes lxicos), Anlisissintctico (agrupacin de los componentes lxicos en frases

    gramaticales ) y Anlisis semntico(comprobacin de lavalidez semntica de las sentencias aceptadas en la fase deAnlisis Sintctico).

    Para poder realizar esta interpretacin es necesario contar

    con sistemas de traduccin que son conocidos bajo losnombres de Compiladores, Intrpretes o Ensambladores,entre otros sistemas de traduccin, que son los encargadosde llevar estos lenguajes hacia un Sistema Binario de ceros yunos.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    5/22

    Se traduce las instrucciones en un lenguaje de alto nivel ainstrucciones que la computadora puede interpretar y ejecutar.

    Muchas herramientas de software que manipulan programasfuente realizan primero algn tipo de anlisis.

    Algunos ejemplos de tales herramientas son:

    o Editores de estructuras:un editor de estructuras toma comoentrada una secuencia de rdenes para construir un programafuente.

    El editor de estructuras no slo realiza las funciones de creacin ymodificacin de textos de un editor de textos ordinario, sino que

    tambin analiza el texto del programa imponiendo al programafuente una estructura jerrquica apropiada.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    6/22

    o Verificadores estticos:Un verificador esttico lee unprograma, lo analiza e intenta descubrir errorespotenciales sin ejecutar el programa.

    La parte del anlisis es similar a la que se encuentra en loscompiladores de optimacin. As un verificador estticopuede detectar si hay partes de un programa que nunca sepodrn ejecutar o si cierta variable se usa antes de ser

    definida.

    o Intrpretes:En lugar de producir un programa objetocomo resultado de una traduccin, un intrprete realizalas operaciones que implica el programa fuente.

    Para una proposicin de asignacin, por ejemplo, unintrprete podra construir un rbol, y despus efectuar lasoperaciones de los nodos conforme as "recorre" el rbol.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    7/22

    Las fases de un compilador son: Anlisis Lxico:Esta fase se encarga de verificar si

    todas las cadenas pertenecen o no al lenguaje. Es decirrealiza un anlisis smbolo por smbolo indicando eltokens por cada uno de los elementos reconocidos o elerror en caso de no reconocer. Este anlisis no logra

    detectar muchos errores por su caracterstica.Ejemplo:

    Total=valor*5

    Luego del anlisis lxico:

    Id = id * nm.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    8/22

    Anlisis Sintctico:En esta fase se analiza la estructura de lasexpresiones en base a gramticas. Aqu ya se puede determinaruna estructura por ejemplo una expresin matemtica mal

    formada. El anlisis que se realiza es jerrquico es decir enbase a rboles de derivacin que se obtienen de las mismasgramticas.

    Ejemplo: position:=initial + rate*60

    http://faustol.files.wordpress.com/2007/04/windowslivewriterfasesdeuncompilador-f443image03.png
  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    9/22

    Anlisis Semntico:Este anlisis es ms difcil deformalizar, determina el tipo de los resultadosintermedios, comprobar que los argumentos que tienen

    un operador pertenecen al conjunto de operadoresposible, y si son compatibles entre s.

    http://faustol.files.wordpress.com/2007/04/windowslivewriterfasesdeuncompilador-f443image07.pnghttp://faustol.files.wordpress.com/2007/04/windowslivewriterfasesdeuncompilador-f443image05.png
  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    10/22

    Generacin de Cdigo Intermedio:El cdigo intermedio es

    una representacin en base a elementos de 3 y 4 direcciones.

    Lo que nos permite llegar a la fase de optimizacin de cdigo.

    a=b+c

    1: + b c T1

    2: = a T1

    Optimizacin de Cdigo:Consiste en realizar una mejora en

    el cdigo intermedio, para reducir el nmero de lneas y hacer

    que la ejecucin sea ms rpida

    a=b+c

    1: + b c a

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    11/22

    Generacin de Cdigo:Llegamos a la generacin de cdigo

    ensamblador o cdigo mquina del procesador que nos

    interese por ejemplo:

    a:=b+c

    LOAD B

    ADD C

    STORE A

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    12/22

    Un compilador opera en fases, de las cuales transforma el

    programa fuente de una representacin en otra. Dentro delas tres primeras fases, que forman la mayor parte deanlisis de un compilador se analiza la administracin, elmanejo de errores y la fase de anlisis.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    13/22

    Administracin de tabla de smbolos: es la funcinesencial de un compilador registrando los identificadoresutilizados en el programa fuente y reunir informacin sobre

    los distintos atributos de cada identificador. Estos atributospueden proporcionar informacin sobre la memoria asignadaa un identificador.

    Deteccin e informacin de errores: en cada una de las

    fases se puede encontrar errores, sin embargo, despus dedetectar el error, se debe tratar de alguna forma ese error,para poder continuar con la compilacin.

    Las fases de anlisis sintctico y semntico por lo general

    manejan una gran proporcin de los errores detectables porel compilador. La fase lxica detecta los errores donde loscaracteres restantes de la entrada no forman ningncomponente lxico del lenguaje.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    14/22

    Los errores donde la cadena de componentes lxicos violalas reglas de estructura del lenguaje que son determinadospor la fase del anlisis sintctico. Durante el anlisis

    semntico el compilador intenta detectar construccionesque tengan la estructura sintctica correcta, pero que notenga significado para la operacin implicada.

    La fase de anlisis: conforme avanza la traduccin, la

    representacin interna del programa fuente que tiene elcompilador se modifica.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    15/22

    Compiladores cruzados: generan cdigo para un sistemadistinto del que estn funcionando.

    Compiladores optimizadores: realizan cambios en el cdigopara mejorar su eficiencia, pero manteniendo lafuncionalidad del programa original.

    Compiladores de una sola pasada: generan el cdigomquina a partir de una nica lectura del cdigo fuente.

    Compiladores de varias pasadas: necesitan leer el cdigofuente varias veces antes de poder producir el cdigo

    mquina. Compiladores JIT (Just In Time): forman parte de un

    intrprete y compilan partes del cdigo segn se necesitan.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    16/22

    Se muestran algunas herramientas disponibles que puedenutilizarse para la realizacin del proyecto de compiladores.Todas las herramientas aqu expuestas funcionan bajo Windows.

    BISON

    COCO/R

    FLEX

    LEX

    SDGLL1

    TS 2006

    TS

    TS-OO

    YACC

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    17/22

    Se han creado algunas herramientas generales para eldiseo automtico de componentes especficos de

    compilador.Estas herramientas utilizan lenguajes especializados paraespecificar e implantar el componente, y pueden utilizaralgoritmos bastante complejos.

    Las herramientas ms efectivas son las que ocultan losdetalles del algoritmo de generacin y producencomponentes que se pueden integrar con facilidad al restodel compilador.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    18/22

    La siguiente es una lista de algunas herramientastiles para la construccin de compiladores:

    Generadores de analizadores sintcticos: Estosgeneradores producen analizadores sintcticos,normalmente a partir de una entrada fundamentada enuna gramtica independiente del contexto.

    En los primeros compiladores, el anlisis sintcticoconsuma no solo gran parte del tiempo de ejecucin delcompilador, sino gran parte del esfuerzo intelectual deescribirlo. Esta fase se considera ahora una de las msfciles de aplicar.

    Muchos de los generadores de analizadores sintcticosutilizan poderosos algoritmos de anlisis sintctico, y sondemasiado complejos para realizarlos manualmente.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    19/22

    Generadores de analizadores lxicos: Estasherramientas generan automticamente analizadoreslxicos, por lo general a partir de una especificacin

    basada en expresiones regulares. La organizacin bsicadel analizador lxico resultante es en realidad unautmata finito. Una herramienta muy utilizada en laespecificacin de analizadores lxicos para varios

    lenguajes es el compilador LEX. Dispositivos de traduccin dirigida por la sintaxis:

    Estos producen grupos de rutinas que recorren el rbolde anlisis sintctico, generando cdigo intermedio. La

    idea bsica es que se asocian una o ms traduccionescon cada nodo del rbol de anlisis sintctico, y cadatraduccin se define partiendo de traducciones en susnodos vecinos en el rbol.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    20/22

    Generadores automticos de cdigo: Talesherramientas toman un conjunto de reglas que definen

    la traduccin de cada operacin del lenguaje intermedioal lenguaje de mquina para la maquina objeto. Lasreglas deben incluir suficiente detalle para podermanejar los distintos mtodos de acceso posibles a los

    datos; por ejemplo, las variables pueden estar enregistros, en una posicin fija (esttica) de memoria opueden tener asignada una posicin en una pila. Latcnica fundamental es la de concordancia deplantillas.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    21/22

    Dispositivos para anlisis de flujo de datos: Mucha dela informacin necesaria para hacer una buenaoptimacin de cdigo implica hacer un anlisis de

    flujo de datos, que consiste en la recoleccin deinformacin sobre la forma en que se transmiten losvalores de una parte de un programa a cada una de lasotras partes.

    Las distintas tareas de esta naturaleza se pueden efectuaresencialmente con la misma rutina, en la que el usuarioproporciona los detalles relativos a la relacin que hayentre las proposiciones en cdigo intermedio y lainformacin que se est recolectando.

  • 5/21/2018 Grupo 1 Proceso de Lenguajes i

    22/22

    Este trabajo servir en el momento de la creacin de uncompilador, ya que en l se detallan todas y cada una delas partes que involucran a este. Podemos decir queexisten distintos tipos de compiladores. En los aos 50 se

    tardaron hasta 18 aos trabajando en un compilador, sinembargo ahora podemos construir en un mximo de tiempode 6 meses un compilador ya que ahora tenemos todas lasherramientas para agilizar la construccin.