Está en la página 1de 11

Universidad Nacional Experimental de Guayana

Proyecto de Carrera: Ingenieria en informatica.

Asignatura: Lenguajes y Compiladores.

Autores: Yuselen Rivero C.I: 27.372.497 , Rosiris Romero C.I: , Luis

Coronado C.I: y Yhoxis Gómez C.I: 27.256.382

Introducción:
Los compiladores son programas que traducen un lenguaje fuente a un
lenguaje objeto, el cual, cuenta con diagramas que son realizados para simplificar
la comunicación y la información sobre un proceso o sistema determinado.

Un diagrama es un gráfico que puede ser simple o complejo, con pocos o


muchos elementos, pero que sirve para simplificar la comunicación y la
información sobre un proceso o un sistema determinado. En el caso de los
diagramas Tombstone se utilizan para especificar desde un alto nivel el diseño y
construcción de un compilador, por medio de estos, se puede observar los pasos
por los que pasa el desarrollo de un compilador, desde que se escribe su código
fuente, hasta que se obtiene un programa ejecutable para el compilador.

Además, tienen diferentes tipos de componentes entre los cuales se encuentra:


compilador, programa, maquina e interprete, con estos, se pueden diseñar los
pasos necesarios para la creación de compiladores, también cuenta con las
técnicas necesarias para su desarrollo, entre los cuales se encuentran: el
compilador cruzado, interprete, enlazador y Bootstrapping, este último, es un
autocompilador que está escrito en el mismo lenguaje que se quiere compilar.

Desarrollo:

Diagrama T

Según la página de Instituto Tecnológico de Costa Rica, define el diagrama


T como que “Son usados para especificar desde un alto nivel el diseño y
construcción de un compilador, por medio de estos diagramas se puede observar
los pasos por los que pasa el desarrollo de un compilador, desde que se escribe
su código fuente, hasta que se obtiene un programa ejecutable para el
compilador.”

Principales Componentes de los diagramas de tombbsone

1. Compilador: Los tres diagramas que definen un compilador, se pueden


representar utilizando un diagrama T o de Tombstone.

Por ejemplo, un compilador de Pascal a código máquina de PC (EXE-PC), escrito


en código máquina de PC, se representaría de la manera siguiente:

Un compilador de C a código objeto escrito en C se representaría de la manera


siguiente:
2. Programa: Representa el programa P escrito en el lenguaje L.

Por ejemplo el programa ordenar escrito en los lenguajes Pascal y C.

3. Maquina: Indica la plataforma de ejecución, el sistema operativo o el


computador de ejecución M.

Por ejemplo, una máquina VAX, un MAC o un Linux para PC:

4. Intérprete: Representa el intérprete del lenguaje escrito en M.


Por ejemplo, un intérprete de Basic para PC o un intérprete de SQL:

● Usando distintas combinaciones de estos cuatros diagramas básicos se


pueden diseñar los pasos necesarios para la creación de los compiladores
o para la ejecución de programas.
● Siendo garantizada la combinación correcta en el proceso de construcción
por las reglas de unión de los diagramas T.
● Para unir los diagramas se utilizan unas reglas de unión básicas que
aseguran su coherencia: dos diagramas se pueden unir si los lenguajes
que se tocan en el puerto son iguales.

● Lenguaje fuente: Lenguaje comprensible para


un intérprete humano empleado para escribir programas de ordenador, que
luego será traducido a lenguaje de máquina para su ejecución por
el procesador

● Un lenguaje compilado: es un lenguaje de


programación cuyas implementaciones son
normalmente compiladores (traductores que generan código de máquina a
partir del código fuente) y no intérpretes (ejecutores paso a paso del código
fuente, donde no se lleva a cabo una traducción en la preejecución).

El término es un tanto vago. En principio, cualquier lenguaje puede ser


implementado con un compilador o un intérprete. Sin embargo, es cada vez
más frecuente una combinación de ambas soluciones: un compilador puede
traducir el código fuente en alguna forma intermedia (muchas veces
llamado Bytecode), que luego se pasa a un intérprete que lo ejecuta.

● código objeto al código que resulta de la compilación del código fuente.


Puede ser en lenguaje máquina o bytecode, y puede distribuirse en varios
archivos que corresponden a cada código fuente compilado. Luego un
enlazador (linker) se encarga de juntar todos los archivos de código objeto
para obtener el programa ejecutable. Código objeto: Conjunto de
instrucciones y datos escritos en un lenguaje que entiende el ordenador
directamente: binario o código máquina. Provienen de la traducción de
cierto código fuente, es un fragmento del programa final y es específico de
la plataforma de ejecución.

Consiste en lenguaje máquina o bytecode y se distribuye en varios archivos


que corresponden a cada código fuente compilado. Para obtener
un programa ejecutable se han de enlazar todos los archivos de código
objeto con un programa llamado enlazador (linker).

● El bytecode es un código intermedio más abstracto que el código máquina

● El lenguaje de máquina es un código que es interpretado directamente por


el microprocesador. El lenguaje está compuesto por un conjunto de
instrucciones ejecutadas en secuencia (con eventuales cambios de flujo
causados por el propio programa o eventos externos) que representan
acciones que la máquina podrá tomar.
● El término ensamblador (del inglés assembler) se refiere a un tipo de
programa informático que se encarga de traducir un fichero fuente escrito
en un lenguaje ensamblador, a un fichero objeto que contiene código
máquina, ejecutable directamente por el microprocesador.

Ejemplos:

1-Un compilador de Pascal escrito en C transforma a ensamblador:

2-Un compilador de C escrito en Java que transforma a C++:

3- ¿Qué sucede si compilo el compilador de 1 en 2?


4- Transformar con 2 compiladores para obtener una transformación intermedia y
luego una final

-Fases de un compilador

Diagramas
Los diagramas anteriores muestran un ejemplo de portabilidad, en el cual se
transforma un código fuente JAVA con un compilador escrito en JAVA a
ByteCode, y este posteriormente puede ser compilado por una Virtual Machine X,
para el correspondiente sistema operativo.

Compilación para la creación de un nuevo leguaje, ejemplo C:

BootStrappins:
Es una técnica de compiladores donde un programa fuentes es compilado por un
compilador escrito en el mismo lenguaje.

Ensamblador

00 mov Ax ,b • b, c son números a


variables.

01 mov Bx ,c • Ax, Bx son registros de


memoria.

02 comp Ax , Bx • eq es una operación


de salto +1 si

03 eq Cx ,0 son iguales, +2 si son


diferentes

04 jump 07

05 sum Ax , Bx donde Cx=1 si Ax =


Bx

06 jump 08 Cx = 0 si Ax != Bx

07 mult Ax , Bx

08 exit

El equivalente en C sería:

if(b=c)

b=b+c;

else

c=b*c;

Compiladores E Intérpretes
Fases

Reglas:

● Para la ejecución de un programa P escrito en lenguaje M, la plataforma de


ejecución debe ser el mismo M.
● Si el programa P escrito en L se interpreta, el intérprete debe tener el
mismo lenguaje(L) de interpretación (fuente) y su lenguaje de
implementación debe ser igual que la máquina en la que ejecuta(M)
● Al compilar un programa P escrito en L1. El lenguaje con el que está escrito
el compilador debe coincidir con la máquina en la que se ejecuta el
compilador(M), y la salida de la compilación será el programa P escrito en
L2 el lenguaje del compilador.

Ejemplo de unión de dos diagramas:


Conclusión:
-no se me ocurre naj

Referencias bibliográficas:

Ochoa,L. (2009). Compiladores e Interpretes UNET. Disponible en:


https://sites.google.com/site/compiladoreseinterpretes/Home/compiladores-e-
interpretes---presentaciones-version-web/diagramas-de-tombstone-e-introduccion-
al-analisis-lexico

Salazar,J. (2014). Jasonsalazargonzales.Wordpress. Disponible en:


https://jasonsalazargonzalez.wordpress.com/2014/02/17/lenguajes-compiladores-
e-interpretes/

Instituto Tecnológico de Costa Rica. (2014). Disponible en:


https://melvinitcr.wordpress.com/tag/diagrama-t/

Wikipedia. (2016). Disponible en:


https://es.wikipedia.org/wiki/C%C3%B3digo_objeto

Wikipedia. (2010). Disponible en:


https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_compilado

Wiktionary. (2005). Disponible en: https://es.wiktionary.org/wiki/lenguaje_fuente

También podría gustarte