Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GENERACIÓN DE
CÓDIGO
INTERMEDIO
Lenguaje y Autómatas II
Integrantes:
• Diana Carolina Balam Mazún
• Marco Alejandro Cupul Hau
• Gabriel Alberto Tejero Romero
Después del análisis sintáctico y
semántico.
Representación más simplificada del
código original para facilitar la
traducción hacia el código final.
Programa para una máquina abstracta.
2.1
NOTACIONES
2.1.1 PREFIJA
La Expresión o Notación PreFija nos indica que el operador va antes de los operandos sus
características principales son:
-Los operandos conservan el mismo orden que la notación infija equivalente.
-No requiere de paréntesis para indicar el orden de precedencia de operadores ya que el es una
operación.
-Se evalúa de izquierda a derecha hasta que encontremos el primer operador seguido
inmediatamente de un par de operandos.
-Se evalúa la expresión binaria y el resultado se cambia como un nuevo operando. Se repite este
hasta que nos quede un solo resultado.
2.1.2 INFIJA
La Expresión o Notación InFija es la forma más común que
utilizamos para escribir expresiones matemáticas, estas notaciones se
refiere a que el operador está entre los operandos. La notación infija
puede estar completamente parentizada o puede basarse en un
esquema de precedencia de operadores así como el uso de paréntesis
para invalidar los arreglos al expresar el orden de evaluación de una
expresión:
3*4=12
3*4+2=14
3*(4+2)=18
2.1.3 POSTFIJA
Algoritmo
● Representa la expresión en forma de árbol sintáctico.
● Recorrer el árbol en postorden. Ejemplo: a + b * c-d Código a b c
* + d-
Estándar Polaca
2 * (3 + 5) 2+35
2*3+5 +*235
2.2.2 CÓDIGO P
● Comenzó como un código ensamblador objetivo estándar producido por varios
compiladores Pascal en la década de 1970 y principios de la de 1980.
● El código P hace referencia a máquinas que utilizan o se auxilian de pilas para
generar código objeto.
● En muchos caso la P se asociado a código portable el cual garantiza que el código
compilado en una máquina se pueda ejecutar en otras.
● Para garantizar la portabilidad del código se necesita que el lenguaje esté
estandarizado por algún instituto y que dicho código no tenga extensiones
particulares.
● También se recomienda la no utilización de características especiales exclusivas de
alguna arquitectura de computadoras en particular.
2.2.3 TRIPLOS
● Las proposiciones de tres direcciones se parece mucho al ensamblador, el cual
es un lenguaje intermedio más entendible para la máquina.
● Las estructuras de control (if, switch, while, do-while, for) son realmente
etiquetas goto disfrazadas.
● Con una estructura de tres campos se pueden omitir los valores temporales,
dicha estructura recibe el nombre de triples y tiene los siguientes campos: op,
arg1 y arg2.
● En la notación de tripletes se necesita menor espacio y el compilador no
necesita generar los nombres temporales. Sin embargo, en esta
notación,trasladar una proposición que defina un valor temporal exige que se
modifiquen todas las referencias a esa proposición.
● El código que generan los triples recibe el nombre de código de dos direcciones,
aunque en ocasiones puede variar.
● Cuando se utilizan triples se ocupan punteros a la misma estructura de los triples.
* b t1 t2 //cuádruplos
* b (0) //triple
ARREGLOS: EJEMPLO:
Los arreglos se char *a=“Hola”; se
descomponen en reduce a:
estructuras básicas de
a[0]=‘H’; a[1]=‘o’;
manejo de manera
a[2]=‘l’; a[3]=‘a’;
simple.
a[4]=‘\0’;
CONCLUSIÓN
FUENTES DE INFORMACIÓN
http://dsc.itmorelia.edu.mx/~jcolivares/courses/ps207b/ps2_u6.pdf
https://kupdf.net/download/23-esquemas-de-generacion_59d59dbd08bbc5ff73686f0d_
pdf
http://repositori.uji.es/xmlui/bitstream/handle/10234/5916/codigo.apun.pdf?sequence=
1&isAllowed=y
https://docplayer.es/63195004-Indice-unidad-2-generacion-de-codigo-intermedio.html
https://www.itescam.edu.mx/portal/asignatura.php?clave_asig=SCD-1016&carrera=ISI
C-2010-224&id_d=151
http://itpn.mx/recursosisc/7semestre/leguajesyautomatas2/Unidad%20II.pdf