TEMAS 2.1 Notaciones 2.1.1 Prefija 2.1.2 Infija 2.2.3 Postfija 2.2 Representaciones de código Intermedio. 2.2.1 Notación Polaca 2.2.2 Código P 2.2.3 Triplos 2.2.4 Cuádruplos.
2.3 Esquema de generación. 2.3.1 Variables y constantes. 2.3.2 Expresiones. 2.3.3 Instrucción de asignación. 2.3.4 Instrucciones de control. 2.3.5 Funciones 2.3.6 Estructuras
Generación de código intermedio • El objetivo del código intermedio es reducir el numero de programas necesarios para construir traductores, y permitir mas fácilmente la transportabilidad de unas maquinas a otras. • Después de los análisis sintáctico y semántico, algunos compiladores generan una representación intermedia explicita del programa fuente. Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir al programa objeto.
Lenguajes intermedios • Los lenguajes intermedios nos sirven para representar la producción final de nuestro lenguaje fuente.
• Existen muchos lenguajes intermedios, la mayoría de ellos son una representación más simplificada del código original para facilitar la traducción hacia el código final.
Lenguajes intermedios cont.. • Por ejemplo al compilar un programa en C en Windows o DOS, se produce un código objeto con extensión .obj para que posteriormente el enlazador cree finalmente el código executable .exe
• En sistemas basados en Unix, también ocurre algo similar generándose un archivo .o y el executable a.out
Lenguajes intermedios cont..
• Otros lenguajes intermedios famosos son los generados para la máquina virtual de Java el
bytecode; y para la máquina virtual de .NET el MISL para luego ejecutarse en tiempo de ejecución JIT (Just in Time).
2.1 Notaciones Forma especial en la que se pueden expresar una expresión matemática en tres formas: • Prefija: el operador binario es analizado antes que sus operandos. • Infija: el operador binario es analizado entre sus operandos. • Sufija: el operador binario es analizado después que sus operandos.
2.1.1 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. • a+b-5
+ab-5
2.1.2 Infija • Es la forma mas común que utilizamos para escribir expresiones matemáticas, estas notaciones se refiere a que el operador esta 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.2.3 Postfija • Llamada también polaca inversa, se usa para representar expresiones sin necesidad de paréntesis. • La notación postfija pone el operador al final de los dos operandos. • Ejemplos: • • •
a*b a*(b+c/d) a*b+c*d
ab* abcd/+* ab*cd*+
Ejemplo • Si deseamos representar las expresiones (2+(3*4)) = x y ((2+3)*4)= x en las tres notaciones mencionadas, el resultado sería: (2+(3*4)) = x
Ejemplo Infijo a postfijo 1. Evalúe la expresión: 2+5-4 2. Construya el árbol de análisis sintáctico 3. Transforme a postfijo con las reglas semánticas dadas 4. Modifique las reglas semánticas para que los números se separen por coma
Transformación con comas Expr Expr.t = “7” Expr.c = “,”
Término Término.t = “7”
7
2.2 Representaciones de código Intermedio. 2.2.1 Notación Polaca 2.2.2 Código P 2.2.3 Triplos 2.2.4 Cuádruplos.
2.2 Representaciones de código Intermedio. • Existen maneras formales para representar código intermedio. • Estas notaciones simplifican la traducción de nuestro código fuente a nuestro código objeto ya que ahorran y acotan símbolos de la tabla de símbolos
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.