Sunteți pe pagina 1din 11

TECNOLGICO DE ESTUDIOS SUPERIORES DE

CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 1de11

DIVISIN.

GRUPO.

INGENIERA EN SISTEMAS COMPUTACIONES

ASIGNATURA.

LENGUAJES Y AUTMATAS Il

NOMBRE DEL ALUMNO.

NO. DE CONTROL.

Ruiz Garduo Deivit Josue


Martnez Cruz Eduardo

PRODUCTO.

DOCENTE.

123107079
123107143

II. GENERACIN DE CODIGO INTERMEDIO.

36

Santilln Choreo Mara Angelica

FECHA
10 DE ABRIL DE 2015
CALIFICACIN Y FIRMA
DEL PROFESOR.

Unidad 2.
Generacin de Cdigo Intermedio.
2.1 Notaciones...................................................................................................................2
2.1.1 Notacin Prefija................................................................................................2
2.1.2 Notacin Infija..................................................................................................3
2.2.3 Notacin Postfija...............................................................................................3
2.2 Representaciones de cdigo Intermedio..................................................................4
2.2.1 Notacin Polaca.................................................................................................4
2.2.2 Cdigo P.............................................................................................................5
2.2.3 Triplos................................................................................................................5
2.2.4 Cudruplos........................................................................................................6
2.3 Esquema de generacin............................................................................................6
2.3.1 Variables y constantes.....................................................................................7
2.3.2 Expresiones.......................................................................................................7
2.3.3 Instruccin de asignacin................................................................................8
2.3.4 Instrucciones de control..................................................................................9
2.3.5 Funciones..........................................................................................................9
2.3.6 Estructuras.......................................................................................................9
Referencias bibliogrficas.............................................................................................11

N ACTIVI
-

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 2de11

Unidad 2.
Generacin de Cdigo Intermedio.

Se compone de un conjunto de rutinas independientes, llamadas por los analizadores


morfolgico y sintctico. El anlisis semntico utiliza como entrada el rbol sintctico
detectado por el anlisis sintctico para comprobar restricciones de tipo y otras limitaciones
semnticas y preparar la generacin de cdigo. En compiladores de un solo paso, las
llamadas a las rutinas semnticas se realizan directamente desde el analizador sintctico y
son dichas rutinas las que llaman al generador de cdigo. El instrumento ms utilizado para
conseguirlo es la gramtica de atributos.
2.1 Notaciones.
Las notaciones son una forma especial en la que se pueden expresar una expresin
matemtica y puedan ser de 3 formas: infija, prefija y posfija. Los prefijos, Pre - Pos - In se
refieren a la posicin relativa del operador con respecto a los dos operandos.
2.1.1 Prefija
La expresin o notacin prefija nos indica que el operador va antes de los
operandos sus caractersticas principales son:

Los operadores conservan el mismo orden que la notacin infija equivalente.


No requiere de parntesis para indicar el orden de precedencia de operadores

ya que l es una operacin.


Se evala de izquierda a derecha hasta que encuentra el primer operador
seguido inmediatamente de un par de operando.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 3de11

Se evala la expresin binaria y el resultado se cambia como un nuevo

operando. Se repite hasta que nos quede un solo resultado.


El orden es operador, primer operando, segundo operando.

2.1.2 Infija
La expresin o notacin infija es la forma ms comn que utilizamos para escribir
expresiones matemticas, estas notaciones se refiere a que el operador esta entre los
operadores. 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 de evaluacin de una expresin:
3*4 = 12 3*4+ = 14 3*(4+2) = 18
La notacin infija tiene el problema de que en expresiones con ms de un operador
existe ambigedad sobre cul es el orden de evaluacin. Por ejemplo, la expresin 8/4/2 se
puede interpretar como (8/4)/2 o bien 8/(4/2). Las otras notaciones no sufren este problema.
La notacin habitual. El orden es primer operando, operador, segundo operando.
2.1.3 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.
El orden es primer operando, segundo operando, operando. (A+B)*C AB+C*

Ejemplo:

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 4de11

Si deseamos representar las expresiones (2+(3*4)) = xy ((2+3)*4) = x en las tres


notaciones mencionadas, el resultado sera:
(2+(3*4)) = x
((2+3)*4) = x
Notacin postfija
234*+x= 23+4*x=
2.2 Representaciones de cdigo intermedio.
2.2.1 Notacin Polaca.
La notacin polaca es la originada por un Autmata con pila, en la que los
operadores siempre preceden a los operandos sobre los que actan, y que tiene la ventaja de
no necesitar parntesis:

Se utiliza principalmente para la representacin de expresiones aritmticas.


Expresin a notacin polaca inversa.
Algoritmo. Representa la expresin en forma de rbol sintctico.
Recorrer el rbol en postorden.

Ejemplo: a + b * c-d
Cdigo a b c * + dVentajas y desventajas de la notacin polaca.

Generacin de cdigo: simple, no utiliza registros.


Optimizacin: es difcil de reordenar ya que hay que considerar el contenido

de la pila.
Interpretacin rpida: es muy fcil de interpretar ya que solo necesita una pila.
Transportable: si, ya que todos los procesadores implementan una pila.

2.2.2 Cdigo P.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 5de11

El cdigo P comenz como un cdigo ensamblador objetivo estndar producido por


varios compiladores Pascal en la dcada de 1970 y principios de la de 1980. Fue diseado
para cdigo real para una mquina de pila hipottica la idea era hacer que los compiladores
de Pascal se transportaran fcilmente requiriendo solo que se volviera a escribir el
intrprete de la maquina P para una plataforma, el cdigo P tambin a probado ser til
como cdigo intermedio y sean utilizado varias extensiones y modificaciones del mismo en
diverso compiladores de cdigo nativo, la mayor parte para lenguaje tipo Pascal.
Como el cdigo P fue diseado para ser directamente ejecutable, contiene una
descripcin implcita de un ambiente de ejecucin particular que incluye tamaos de datos,
adems de mucha informacin especfica para la maquina P, que debe conocer si se desea
que un programa de cdigo P se comprensible. La mquina P est compuesta por una
memoria de cdigo, una memoria de datos no especfica para variables nombre das y una
pila para datos temporales, junto como cualquiera registro que sea necesario para mantener
la pila y apoyar la ejecucin.
2.2.3 Triplos
<Operador>, <operando1>, <operando2>
El resultado se asocia al nmero de tripleta
Ejemplo: W * X + (Y + Z)
1. *, W, X
2. +, Y, Z
3. +, (1), (2)
Control de flujo:
IF X>Y THEN Z=X ELSE Z=Y+1
1. >, X, Y
2. Saltar si falso, (1), 5

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 6de11

3. =, Z, X
4. Saltar,, 7
5. +, Y, 1
6. =, Z, (5)
Problema
La optimizacin supone mover tripletas y hay que recalcular las referencias.
2.2.4 Cudruplos.
<Operacin>, <operando1>, <operando2>, <resultado>
Ejemplo:
(A+B)*(C+D)-E
+, A, B, T1
+, C, D, T2
*, T1, T2, T3
-, T3, E, T4
Las cudruplas facilitan la aplicacin de muchas optimizaciones, pero hay que tener
un algoritmo para la reutilizacin de las variables temporales (reutilizacin de registros del
procesador).
2.3 Esquema de generacin.
Los esquemas de generacin son las estrategias o acciones que se debern realizarse
y tomarse en cuenta en el momento de generar cdigo intermedio.
Los esquemas de generacin dependen de cada lenguaje. Tomaremos algunos
esquemas de generacin del lenguaje C.
2.3.1 Variables y constantes.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 7de11

Las variables y constantes deben separarse de tal manera que queden las
expresiones una por una de manera simple.
Por ejemplo int a,b,c; se descompone a int a; int b; intc; respectivamente.
2.3.2 Expresiones.
En esta funcin recibe una cadena que representa una lnea de cdigo intermedio y
toma las medidas oportunas para que ese cdigo se utilice. Estas medidas pueden ser
escribir la lnea en un fichero adecuado, almacenar la instruccin en una lista que despus
se pasar a otros mdulos, o cualquier otra que necesitemos en nuestro compilador.
Expresiones aritmticas
Son aquella donde los operadores que intervienen en ella son numricos, el resultado
es un nmero y los operadores son aritmticos. Los operadores aritmticos ms
comnmente utilizados son: +, - , * , / y %.
Comenzamos el estudio por las expresiones aritmticas. Lo que tendremos que hacer
es crear por cada tipo de nodo un mtodo que genere el cdigo para calcular la expresin y
lo emita. Ese cdigo dejar el resultado en un registro, cuyo nombre devolver el mtodo
como resultado.
Para reservar estos registros temporales, utilizaremos una funcin, reserva. En
principio bastar a con que esta funcin devuelva un registro distinto cada vez que se la
llame.
Cada nodo generar el cdigo de la siguiente manera:

Por cada uno de sus operandos, llamara al mtodo correspondiente para que se
evale la sub expresin. Si es necesario, reservara un registro para guardar su
resultado.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 8de11

Emitir las instrucciones necesarias para realizar el clculo a partir de los


operandos.

2.3.3 Instrucciones de asignacin


La sintaxis general de la instruccin de asignacin es:
nombre_de_la_variable = valor
El valor a la derecha del signo igual puede ser una constante, otra variable o una
expresin que combine constantes y variables, pero siempre la variable y su valor deben ser
del mismo tipo de dato.
Ejemplos:
edad% = 5
area! = 12.3
nombre$ = Pedro
Instrucciones de asignacin compuesta.
Las instrucciones de asignacin compuesta realizan primero una operacin en una
expresin antes de asignarla a un elemento de programacin. En el siguiente ejemplo se
muestra uno de estos operadores, +=, que incrementa el valor de la variable del lado
izquierdo del operador con el valor de la expresin de la derecha.
Una instruccin de asignacin asigna el valor de una expresin a una variable. En
general, si la variable que se va a asignar es una propiedad, la propiedad debe ser de lectura
y escritura o de slo escritura; en caso contrario, se produce un error de compilacin. Si la
variable es una variable de slo lectura, la asignacin debe producirse en un constructor

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 9de11

Shared o un constructor de instancia apropiado para el tipo de la variable; en caso contrario,


se producir un error de compilacin.
2.3.4 Instrucciones de control.
Esta forma de programacin slo permite resolver problemas sencillos. Para
resolver problemas ms complejos, nos puede interesar que dependiendo de los valores de
los datos, se ejecuten unas instrucciones u otras.
Las instrucciones condicionales nos van a permitir representar ste tipo de
comportamiento. Sentencias IF y SWITCH. En otros casos, nos encontraremos con la
necesidad de repetir una instruccin o instrucciones un nmero determinado de veces. En
stos casos utilizaremos instrucciones de control iterativas o repetitivas (ciclos). Sentencias
WHILE, DO-WHILE y FOR.
2.3.5 Funciones
Las funciones pueden reducir a en lnea, lo que se hace que expandir el cdigo
original de la funcin.
Las funciones se descomponen simplificando los parmetros de manera individual al
igual que el valor de retorno.
2.3.6 Estructuras.
Las Estructuras de Control se emplean para controlar la ejecucin y flujo del
cdigo, las cuales se dividen en:

Estructuras de Seleccin: son aquellas que se utilizan para realizar operaciones

basadas en el valor de una expresin.


Estructuras de Iteracin: son aquellas que nos permiten ejecutar un bloque de
cdigo repetidamente mientras una condicin especfica sea verdadera.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 10de11

Estructuras de Seleccin:

Estructura if. Al escribir uno o varios flujos de accin el cdigo contenido en estos
se ejecutar siempre y cuando la evaluacin de la expresin en la sentencia if se

evalu como verdadera. if(expresin-booleana) {la expresin se evalu verdadera}


Estructura switch. La estructura de seleccin switch tiene una expresin de control y
los flujos de cdigo alternos son ejecutados dependiendo del valor constante
asociado con esta expresin. Los tipos de datos permitidos para la expresin de
control son sbyte, byte, short, ushort, uint, long, ulong, char, string o un tipo
enumeracin

(enumeration).

expresion-contante: sentencias;

Sintaxis:

switch(expresion-de-control)

case

break; case expresion-contante: sentencias;

break; }
Estructuras de Iteracin:

For. La Estructura for se utiliza cuando se conoce previamente cuantas veces ha de


repetirse un bloque de cdigo. Este bloque se repetir mientras la condicin evalu
una expresin booleana verdadera, no ser posible evaluar otro tipo de expresin.

Sintaxis: for(inicializador; condicin; iterador) { acciones;}


While. La estructura while se utiliza cuando no se conoce previamente cuantas
veces ha de repetirse un bloque de cdigo, por lo que puede ejecutarse 0 o ms
veces. Este bloque se repetir mientras la condicin evalu una expresin booleana
verdadera,

no

ser

posible

evaluar

otro

tipo

de

expresin.

while(condicional) {acciones;}

REFERENCIAS BIBLIOGRFICAS.

Generacin de Cdigo Intermedio. Recuperado el 9 de abril de 2015 en

Sintaxis.

TECNOLGICO DE ESTUDIOS SUPERIORES DE


CUAUTITLN IZCALLI
Cdigo: FO-205P11000-XX
FORMATO DE ENTREGA
DE EVIDENCIAS
Pgina 11de11

http://es.scribd.com/doc/254857651/Generacin de Codigo Intermedio#scribd

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