Grupo 1 Proceso de Lenguajes i
-
Upload
adolfo-silvestre-sosa -
Category
Documents
-
view
7 -
download
0
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.