10

Power Codes

Embed Size (px)

DESCRIPTION

Revista digital de Lenguajes de Programacion

Citation preview

Page 1: Power Codes
Page 2: Power Codes

“Un Compilador traducelenguaje de alto nivel alenguaje de máquina…. Ellenguaje de máquina…. Elprimer compilador fueescrito por Grace Hopper,en 1952 para el lenguaje deprogramación A‐0” 4p g 4

“Esta división permite que el mismoBack End se utilice para generar elcódigo máquina de varios lenguajesde programación distintos y que elmismo Front End que sirve paraanalizar el código fuente de unlenguaje de programación concretosirva para generar código máquina envarias plataformas distintas. ”

55“En el análisis sintáctico ya se puede determinar si unapuede determinar si una estructura por ejemplo una expresión matemática, está mal formada…” 6

2

6Herramientas de Compilación    8Pasatiempos 9

Page 3: Power Codes

Power Codes es una revista digital para conocimientos deComputación que fue creada para el curso Lenguajes de

Conociendo los C il d

p q p g jProgramación de la Universidad Fermin Toro.

En esta edición de Power Codes se presentan losil d d d hi t i t t h t lCompiladorescompiladores, desde su historia y estructura hasta las

fases finales de análisis y herramientas para construircompiladores.

Daniel Morillo

3

Page 4: Power Codes

COMPILADORES Y SU HISTORIACOMPILADORES Y SU HISTORIAJorge Boscán

Un compilador es un programai f áti t d

seguía siendo el de una máquina, peroá fá il d j L t b j dinformático que traduce un programa

escrito en un lenguaje de programacióna otro lenguaje de programación,generando un programa equivalenteque la máquina será capaz deinterpretar Usualmente el segundo

más fácil de manejar. Los trabajos deinvestigación se orientaron hacia lacreación de un lenguaje que expresaralas distintas acciones a realizar de unamanera lo más sencilla posible para unapersona El primer compilador fueinterpretar. Usualmente el segundo

lenguaje es lenguaje de máquina, perotambién puede ser simplemente texto.Este proceso de traducción se conocecomo compilación.

persona. El primer compilador fueescrito por Grace Hopper, en 1952 parael lenguaje de programación A‐0, En1950 John Backus dirigió unainvestigación en IBM sobre un lenguajealgebraico. En 1954 se empezó a

En 1946 se desarrolló la primeracomputadora digital. En un principio,estas máquinas ejecutabaninstrucciones consistentes en códigosnuméricos que señalaban a los circuitos

algebraico. En 1954 se empezó adesarrollar un lenguaje que permitíaescribir fórmulas matemáticas demanera traducible por un ordenador; lellamaron FORTRAN (FORmulaeTRANslator). Fue el primer lenguaje deq

de la máquina los estadoscorrespondientes a cada operación, loque se denominó lenguaje máquina.Pronto los primeros usuarios de estosordenadores descubrieron la ventaja de

) p g jalto nivel y se introdujo en 1957 para eluso de la computadora IBM modelo704.

escribir sus programas mediante clavesmás fáciles de recordar que esoscódigos; al final, todas esas clavesjuntas se traducían manualmente alenguaje máquina. Estas clavesconstituyen los llamados lenguajesensambladores.Pese a todo, el lenguaje ensamblador

4

Page 5: Power Codes

PARTES DE UN COMPILADORAnálisis: Se trata de la comprobación de lacorrección del programa fuente, e incluyelas fases correspondientes al Análisis Léxico(que consiste en la descomposición del

PARTES DE UN COMPILADORJorge Boscán

(que consiste en la descomposición delprograma fuente en componentes léxicos),Análisis Sintáctico (agrupación de loscomponentes léxicos en frases gramaticales) y Análisis Semántico (comprobación de lavalidez semántica de las sentenciasvalidez semántica de las sentenciasaceptadas en la fase de Análisis Sintáctico).Síntesis: Su objetivo es la generación de lasalida expresada en el lenguaje objeto ysuele estar formado por una o variascombinaciones de fases de Generación de Back‐end: es la parte que genera el códigoCódigo (normalmente se trata de códigointermedio o de código objeto) y deOptimización de Código (en las que sebusca obtener un código lo más eficienteposible).

p q g gmáquina, específico de una plataforma, apartir de los resultados de la fase deanálisis, realizada por el Front End.Esta división permite que el mismo BackEnd se utilice para generar el código

Alternativamente, las fases descritas paralas tareas de análisis y síntesis se puedenagrupar en Front‐end y Back‐end:Front‐end: es la parte que analiza el códigofuente, comprueba su validez, genera el

máquina de varios lenguajes deprogramación distintos y que el mismoFront End que sirve para analizar el códigofuente de un lenguaje de programaciónconcreto sirva para generar código máquina

árbol de derivación y rellena los valores dela tabla de símbolos. Esta parte suele serindependiente de la plataforma o sistemapara el cual se vaya a compilar, y estácompuesta por las fases comprendidas

t l A áli i Lé i l G ió d

en varias plataformas distintas. Sueleincluir la generación y optimización delcódigo dependiente de la máquina.El código que genera el Back Endnormalmente no se puede ejecutardi t t i itentre el Análisis Léxico y la Generación de

Código Intermedio.directamente, sino que necesita serenlazado por un programa enlazador(linker)

5

Page 6: Power Codes

FASES DE COMPILACIÓNFASES DE COMPILACIÓNDaniel Morillo

Análisis Léxico: Esta fase se encarga deifi i t d l d tverificar si todas las cadenas pertenecen

o no al lenguaje. Es decir realiza unanálisis símbolo por símbolo indicandoel token por cada uno de los elementosreconocidos o el error en caso de noreconocer Este análisis no logra detectarreconocer. Este análisis no logra detectarmuchos errores por su característica.

Ejemplo:total=valor*5Luego del análisis léxico:

Análisis Semántico:Este análisis es más difícil de formalizar,Luego del análisis léxico:

id = id * num

Análisis SintácticoEn esta fase se analiza la estructura delas expresiones en base a gramáticas.

Este análisis es más difícil de formalizar,determina el tipo de los resultadosintermedios, comprobar que losargumentos que tienen un operadorpertenecen al conjunto de operadoresposible, y si son compatibles entre sí.p g

Aquí ya se puede determinar si unaestructura por ejemplo una expresiónmatemática, está mal formada. Elanálisis que se realiza es jerárquico esdecir en base a árboles de derivación

p , y p

que se obtienen de las mismasgramáticas.Ejemplo: position := initial + rate*60

6

Page 7: Power Codes

Generación de Código IntermedioEl código intermedio es una A grandes rasgos el proceso se puede grepresentación en base a elementosde 3 y 4 direcciones. Lo que nospermite llegar a la fase deoptimización de código.

g g p pdescribir en los siguientes pasos:* El compilador recibe el código fuente.* Se analiza lexicográficamente.* Se analiza semántica y

a=b+c

1: + b c T1

2: = a T1

* Se analiza semántica y sintácticamente (parseado).* Se genera el código intermedio no optimizado.* Se optimiza el código intermedio.2: a T1

Optimización de CódigoConsiste en realizar una mejora en elcódigo intermedio, para reducir el

* Se genera el código objeto para una plataforma específica.

Finalmente ya puede ejecutarse el código máquina.

número de líneas y hacer que laejecución sea más rápida.

a=b+c1: + b c a

código máquina.

1: b c a

Generación de CódigoLlegamos a la generación de códigoensamblador o código máquina del

d i tprocesador que nos interese porejemplo:

a:=b+cLOAD BADD CSTORE A

7

Page 8: Power Codes

HERRAMIENTAS DE COMPILACIÓN

A ti ió t l d l

HERRAMIENTAS DE COMPILACIÓNDaniel Morillo

A continuación se muestran algunas de lasherramientas disponibles que pueden utilizarsepara la realización de Compiladores.

8

Page 9: Power Codes

PASATIEMPOS

FUENTES:http://www.slideshare.net/FARIDROJAS/compilador‐presentationhttp://www.monografias.com/trabajos11/compil/compil2.shtml

http://www.alegsa.com.ar/Dic/compilacion.phphttp://java.wikia.com/wiki/Compiler

9

Page 10: Power Codes