Sunteți pe pagina 1din 18

Introduccin a la

Generacin de Cdigo
Intermedio
LENGUAJES Y AUTMATAS II
Integrantes:
Andrea Ariza Diaz
Diana Laura Pichardo Garca
Vladimir Jimnez Villegas
Luis Fernando Ros Romn

INTRODUCCION
Una vez ha terminado el anlisis y se ha
obtenido un ast (rbol de sintaxis
abstracta)
decorado,
comienza
la
generacin de cdigo. Esta fase suele
dividirse en dos partes:
Generacin de cdigo intermedio.
Generacin de cdigo de mquina.

El primero es cdigo para una maquina virtual.


Estas maquinas se definen con dos objetivos:
Ser lo suficientemente simples como para
poder generar cdigo para ellas de manera
sencilla, pero con la suficiente riqueza para
poder expresar las construcciones del lenguaje
fuente.
Estar lo suficientemente prximas a los
procesadores reales para que el paso del cdigo
intermedio al cdigo de maquina sea
prcticamente directo.

Para conseguirlo, las maquinas virtuales


tienen una serie de caractersticas
simplificadoras. Por ejemplo:
Tienen pocos modos de direccionamiento.
Pueden tener un nmero ilimitado de
registros (que pueden estar organizados
en forma de pila).
Tienen
un juego
de
instrucciones
relativamente simple.

Caractersticas del cdigo


intermedio
El cdigo intermedio es independiente del lenguaje de programacin
fuente.
facilita la escritura de compiladores para distintas maquinas. La
traduccin del lenguaje a cdigo intermedio seria idntica en todas y
lo nico que cambiaria seria el traductor de cdigo intermedio a
cdigo de maquina.
Una vez generado el cdigo intermedio, se traduce este a cdigo de
maquina.
Reducir el nmero de programas necesarios para construir traductores
y permitir mas fcilmente la transportabilidad de unas maquinas a
otras.
Descomponer las expresiones complejas en binarias y las sentencias
complejas en sentencias simples

Aunque en principio estas dos fases bastan para la


generacin del cdigo final, en la practica estn
mezcladas con fases de optimizacin. Es habitual tener
entonces un esquema similar al siguiente

Notaciones
Las Notaciones sirven de base para expresar
sentencias bien definidas.
El uso mas extendido de las notaciones sirve para
expresar operaciones aritmticas
Las expresiones aritmticas se pueden expresar de tres
formas distintas
Infija
Prefija
Postfija

Las notaciones tambin dependen de como se recorrer


el rbol sintctico, el cual puede ser:
Pre orden
In orden
Pos orden
Teniendo una relacin de uno a uno con la notacin de
los operadores

Notacin Prefija
La notacin prefija pone el operador primero que los dos
operando, por lo que la expresin
La Expresin o Notacin Prefija nos indica que el
operador va antes de los operandos sus caractersticas
principales son:
+AB -CD, *EF, /GD.

NOTACION PREFIJA
- 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.

11

- Se evala de izquierda a derecha hasta que


encontrmosle
primer
operador
seguido
inmediatamente de un par de operandos.
- Se evala la expresin binaria y el resultado se
cambia como un nuevo operando.
Se repite este hasta que nos quede un solo
resultado.

Notacin Postfija
El operador ocupa la posicin despus de los operando.
El orden de los operadores se conserva igual que la expresin
infija equivalente no utiliza parntesis ya que no es una
operacin ambigua
La operacin postfija no es exactamente lo inverso a la
operacin prefija

Notacin Postfija
PostFija:
Como su nombre lo indica se refiere a que el operador ocupa la
posicin despus de los operandos sus caractersticas principales son:
El orden de los operandos se conserva igual que la expresin infija
equivalente no utiliza parntesis ya que no es una operacin
ambigua.
La operacin posfija no es exactamente lo inverso a la operacin
prefija equivalente:
(A+B)*C AB+C*
Notacin postfija: El orden es primer operando, segundo operando,
operador.

Postfija
La notacin postfija pone el operador al final de los dos
operandos, por lo que la expresin queda: ab+5 La notacin posftfija utiliza una estructura del tipo LIFO
(Last In First Out) pila, la cual es la ms utilizada para la
implementacin.

Para evaluar una expresin en notacin infija en un valor especfico parase


deben seguir las reglas matemticas para la prioridad de las operaciones:
Las potencias tienen prioridad sobre cualquier operacin
La multiplicacin y la divisin tienen prioridad sobre la suma y la resta.
Si se presenta un parntesis, se deben realizar primero las operaciones dentro
de ste. Si hay un parntesis dentro de otro tiene prioridad el parntesis interno.
Por el contrario, en la notacin postfija siempre se trabaja de izquierda a derecha;
note adems que la notacin postfija no tiene parntesis por la forma lineal en
que se lee. Comparemos un ejemplo en donde se evala un valor en una
expresin utilizando estas dos notaciones.

EJEMPLO:
Si deseamos representar las expresiones (2+(3*4)) = x y ((2+3)*4)= x en las tres notaciones
mencionadas, el resultado sera:

Notacin prefija
Notacin infija
Notacin postfija

(2+(3*4)) =x

((2+3)*4) =x

= + 2 * 3 4x

= * + 2 3 4x

2+3*4 =x

(2+3)*4 =x

2 3 4 * +x=

2 3 + 4 *x=

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