Automatas Unidad 2

download Automatas Unidad 2

of 25

Transcript of Automatas Unidad 2

UNIDAD 2Generacin de cdigo intermedio1TEMAS2.3 Esquema de generacin.2.3.1 Variables y constantes.2.3.2 Expresiones.2.3.3 Instruccin de asignacin.2.3.4 Instrucciones de control.2.3.5 Funciones2.3.6 Estructuras

2.1 Notaciones2.1.1 Prefija2.1.2 Infija2.2.3 Postfija2.2 Representaciones de cdigo Intermedio.2.2.1 Notacin Polaca2.2.2 Cdigo P2.2.3 Triplos2.2.4 Cudruplos.

2Generacin de cdigo intermedioDespus de los anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explicita del programa fuente. Esta representacin intermedia debe tener dos propiedades importantes; debe ser fcil de producir y fcil de traducir al programa objeto.El objetivo del cdigo intermedio es reducir el numero de programas necesarios para construir traductores, y permitir mas fcilmente la transportabilidad de unas maquinas a otras.3

4Los lenguajes intermedios nos sirven para representar la produccin final de nuestro lenguaje fuente.

Existen muchos lenguajes intermedios, la mayora de ellos son una representacin ms simplificada del cdigo original para facilitar la traduccin hacia el cdigo final.Lenguajes intermedios Por ejemplo al compilar un programa en C en Windows o DOS, se produce un cdigo objeto con extensin .obj para que posteriormente el enlazador cree finalmente el cdigo executable .exe

En sistemas basados en Unix, tambin ocurre algo similar generndose un archivo .o y el executable a.outLenguajes intermedios cont..Otros lenguajes intermedios famosos son los generados para la mquina virtual de Java el bytecode; y para la mquina virtual de .NET el MISL para luego ejecutarse en tiempo de ejecucin JIT (Just in Time).

Lenguajes intermedios cont..2.1 NotacionesForma especial en la que se pueden expresar una expresin matemtica 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 despus que sus operandos.

82.1.1 PrefijaNos indica que el operador va antes de los operandos sus caractersticasprincipales son:Los operandos conservan el mismo orden que la notacin infija equivalente.No requiere de parntesis para indicar el orden de precedencia de operadores ya que el es una operacin.Se evala de izquierda a derecha hasta que encontremos el primer operador seguido inmediatamente de un par de operandos.Se evala la expresin binaria y el resultado se cambia como un nuevo operando.

a+b-5 +ab-5

92.1.2 InfijaEs la forma mas comn que utilizamos para escribir expresiones matemticas, estas notaciones se refiere a que el operador esta entre los operandos.La notacin infija puede estar completamente parentizada o puede basarse en un esquema de precedencia de operadores as como el uso de parntesis para invalidar los arreglos al expresar el orden deevaluacinde una expresin:

3*4=123*4+2=143*(4+2)=18102.2.3 PostfijaLlamada tambin polaca inversa, se usa para representar expresiones sin necesidad de parntesis.

La notacin postfija pone el operador al final de los dos operandos. Ejemplos:

a*b ab* a*(b+c/d) abcd/+* a*b+c*d ab*cd*+11EjemploSi deseamos representar las expresiones (2+(3*4)) =x y ((2+3)*4)=xen las tres notaciones mencionadas, el resultado sera:(2+(3*4)) =x((2+3)*4) =xNotacin prefija = + 2 * 3 4x= * + 2 3 4xNotacin infija2+3*4 =x(2+3)*4 =xNotacin postfija 2 3 4 * +x=2 3 + 4 *x=EjerciciosRealizar los siguientes ejercicios a notacin infija, posfija, prefija.

1) (A+B)*C2) 4+5/33) (2+4+3)*3/24) X- Y+Z*C5) (X+5-2)/Y6) 3*(X+Y)-47) (2+5)*8+78) 5*4+6/213Infijo a postfijoExpr -> Expr + TrminoExpr -> Expr - TrminoExpr -> TrminoTrmino -> 0Trmino -> 1Trmino -> 2....Trmino -> 9

Expr.t := Expr.t & Trmino.t & +Expr.t := Expr.t & Trmino.t & -Expr.t := Trmino.tTrmino.t := 0Trmino.t := 1Trmino.t := 2....Trmino.t := 9

Infijo a postfijoExpr -> Expr1 + TrminoExpr -> Expr1 - TrminoExpr -> TrminoTrmino -> 0Trmino -> 1Trmino -> 2....Trmino -> 9

Expr.t := Expr1.t & Trmino.t & +Expr.t := Expr1.t & Trmino.t & -Expr.t := Trmino.tTrmino.t := 0Trmino.t := 1Trmino.t := 2....Trmino.t := 9

Ejemplo Infijo a postfijoEvale la expresin: 2+5-4Construya el rbol de anlisis sintcticoTransforme a postfijo con las reglas semnticas dadasModifique las reglas semnticas para que los nmeros se separen por comaArbol sintctico (2+5-4)ExprExpr-TrminoExpr+TrminoTrmino4Trmino52TransformacinExprExpr-TrminoExpr+TrminoTrmino4Trmino52Trmino.t = 2Trmino.t = 5Trmino.t = 4Expr.t = 2Expr.t = Expr.t & Trmino.t & +Expr.t = 2 5 +Expr.t = Expr.t & Trmino.t & -Expr.t = 2 5 + 4 -Infijo a postfijo con comasExpr -> Expr1 + Trmino

Expr -> Expr1 - Trmino

Expr -> Trmino

Trmino -> 0Trmino -> 1Trmino -> 2....Trmino -> 9

Expr.t := Expr1.t & Expr1.c & Trmino.t & +Expr.c := Expr.t := Expr1.t & Expr1.c & Trmino.t & -Expr.c := Expr.t := Trmino.tExpr.c := ,Trmino.t := 0Trmino.t := 1Trmino.t := 2....Trmino.t := 9

Transformacin con comasExprExpr-TrminoExpr+TrminoTrmino4Trmino52Trmino.t = 2Trmino.t = 5Trmino.t = 4Expr.t = 2Expr.c = ,Expr.t = Expr.t & Expr.c & Trmino.t & +Expr.t = 2 , 5 +Expr.c = Expr.t = Expr.t & Expr.c & Trmino.t & -Expr.t = 2 , 5 + 4 -Expr.c = Transformacin con comasExprTrmino7Trmino.t = 7Expr.t = 7Expr.c = ,2.2 Representaciones de cdigo Intermedio.2.2.1 Notacin Polaca2.2.2 Cdigo P2.2.3 Triplos2.2.4 Cudruplos.

222.2 Representaciones de cdigo Intermedio.Existen maneras formales para representar cdigo intermedio.

Estas notaciones simplifican la traduccin de nuestro cdigo fuente a nuestro cdigo objeto ya que ahorran y acotan smbolos de la tabla de smbolos232425