Sunteți pe pagina 1din 8

Código:

DIRECCIÓN ACADÉMICA CT-FO-02-05


Revisión: 1

Página:
INFORME TÉCNICO
Página 1 de 8

TITULO
Esquemas de generación de código intermedio
LENGUAJES Y AUTOMATAS I I

ELABORADO POR
Javier Alonso Uicab Tun 4955
Francisco Argenis Tun Chan 4935
Francisco Ivan Keb Chi 5002

FECHA DE ELABORACION: _20___ DE _Octubre___ DE 2017____


Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 2 de 8

Índice

Introducción ........................................................................................................................................ 3

Justificación ......................................................................................................................................... 4

Metodología ........................................................................................................................................ 4

Resultados ........................................................................................................................................... 5

Conclusión ........................................................................................................................................... 7

Recomendaciones ............................................................................................................................... 7

Anexos ................................................................................................................................................. 7

Referencias .......................................................................................................................................... 8
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 3 de 8

Introducción
Se comenzará definiendo que es el código intermedio, en principio, el código intermedio es
independiente del lenguaje de programación fuente. El código intermedio facilita la escritura de
compiladores para distintas maquinas. La traducción del lenguaje a código intermedio será idéntica
en todas y lo único que cambiará será el traductor de código intermedio a código de máquina. Esta
idea de un código intermedio independiente de la maquina puede llevarse un paso más allá, como
se hace en diversos lenguajes, de los cuales Java es quizá el más representativo. La idea es compilar
el lenguaje a un código intermedio. Al ejecutar el programa, se interpreta este código intermedio o
se compila en ese momento para la máquina destino. De esta manera, un mismo binario puede
ejecutarse en máquinas con arquitecturas y sistemas operativos totalmente distintos.
El objetivo de este código intermedio es que es generado para una máquina virtual y a su vez esta
tiene los siguientes dos objetivos.
 Ser lo suficientemente simples como para poder generar código para ellas de manera
sencilla, pero con la suficiente riqueza para poder expresar las construcciones del lenguaje
fuente.
 Estar lo suficientemente próximas a los procesadores reales para que el paso del código
intermedio al código de máquina sea prácticamente directo.
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 4 de 8

Justificación
Cuando un compilador traduce del idioma origen a una máquina destino sin la opción de código
intermedio, esto significaría que en cada nueva máquina es necesario que tenga un compilador
nativo completo. Es necesaria la existencia del código intermedio, ya que este elimina la necesidad
de un nuevo compilador completo por cada máquina de la sección de análisis, además de que más
sencillo realizar cambios en el código fuente para incrementar el rendimiento del código por
medio de la optimización del código intermedio.

Metodología
Método de análisis-síntesis

 Análisis.- Separación de ideas o conceptos, lo que permite su comprensión plena, se


conoce como proceso cognoscitivo donde se aprecian todos los puntos que los hacen
coincidir o concordar.
 Síntesis.- Es la reunión propia de cada una de las separaciones hechas con anterioridad y
es la reunión de estos dos procesos lo que permite entender la concordancia de sus ideas
 Clasificación.- Esta nos lleva a poner en jerarquías cada una de las partes.
 Conclusión.- La conclusión es el resultado final del estudio realizado con anterioridad.
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 5 de 8

Resultados
A continuación se presenta una tabla de definición orientada a la sintaxis, la cuál cumple con la
función de traducir expresiones que contienen dígitos separados por los signos positivos o
negativos a notación postfija.

El símbolo $, se usa para concatenar cadenas.

Producción Regla semántica


Expr → expr1 + term Expr.t = expr1.t $ term.t $ ‘+’
Expr → expr1 - term Expr.t = expr1.t $ term.t $ ‘-’
Expr → term Expr.t = term.t
Term → 0 Term.t = ‘0’
Term → 1 Term.t = ‘1’
Term → 2 Term.t = ‘2’
Term → 3 Term.t = ‘3’
Term → 4 Term.t = ‘4’
Term → 5 Term.t = ‘5’
Term → 6 Term.t = ‘6’
Term → 7 Term.t = ‘7’
Term → 8 Term.t = ‘8’
Term → 9 Term.t = ‘9’

1. Bloque. En el siguiente ejemplo se puede observar en la raíz el valor 2213-25+, el cual es la


notación postfija para 22-13+25.

expr.t = 2213-25+

expr.t = 2213- + term.t = 25

expr.t = 22 - term.t = 13 25

term.t = 22 13

22

22 – 13 + 25
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 6 de 8

2. - Bloque

expr.t = 22-13+25

expr.t = 22-13 + term.t = 25 Imprimir (‘+’)

expr.t = 22 - term.t = 13 Imprimir (‘-’) 25 Imprimir (‘25’)

term.t = 22 13 Imprimir (‘13’)

22 Imprimir (‘22’)

2213 – 25 +

3.- Bloque
expr.t = 84 + 10

expr.t = 84 + term.t = 10 Imprimir (‘+’)

term.t = 84 10 Imprimir (‘10’)

84 Imprimir (‘84’)
8410 +
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 7 de 8

Conclusión
La traducción dirigida u orientada por sintaxis es llevada a cabo mediante la realización de la unión
de reglas o fragmentos de un programa a las producciones de una gramática, aunado a esto se
incluye dos importantes conceptos que están estrechamente relacionados a la traducción dirigida
por sintaxis, los atributos y los esquemas de traducción, los primeros pueden ser cualquier cantidad
asociada a la construcción del programa y que pueden ser de naturaleza sintetizado o heredado,
mientras que los esquemas hacen referencia a una notación para unir los fragmentos de un
programa a las producciones de una gramática.

Recomendaciones
Se recomienda no hacer caso omiso de la generación de código intermedio, ya que este elimina la
necesidad de un compilador nativo completo para cada máquina en la que se quiera hacer uso de
este.

Anexos
Código:
DIRECCIÓN ACADÉMICA CT-FO-02-05
Revisión: 1

Página:
INFORME TÉCNICO
Página 8 de 8

Referencias
Creswell, J. (2003). Research Design: Qualitative, Quantitative, and Mixed Methods Approaches.
Thousand Oaks, California, Sage Publications.

Uli Kremer. «Diseño del compilador CISC 471». Consultado el 20 de octubre de 2017.

Tutorial "Abstract Syntax Tree Metamodel Standard"

S-ar putea să vă placă și