Está en la página 1de 14

DIRECCIN ACADMICA

Formato de entrega de evidencias


FO-205P11000-14

Divisin: (1) INGENIERA EN SISTEMAS COMPUTACIONALES Grupo: (2) 361-V

Asignatura: (3) METODOS DE INVESTIGACIN I Docente: (4) Enrique Martnez

Nombre y nmero de control: (5) SOLIS ESCAMILLA MARTIN EDUARDO 153107047

Fecha de entrega: (6) AGOSTO DE 2017

Competencia No.: (7) 2 Descripcin: (8) INVESTIGACIN

Indicador de alcance: (9) -

Evidencia de aprendizaje: (10) INVESTIGACIN DOCUMENTAL

Unidad II: 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.
En el anlisis semntico se detectan errores relacionados con la validez del
programa. Se puede decir que estos errores son de tipo sintctico-semntico, pero
no pueden ser detectados por el analizador sintctico, ya que se relacionan con
interdependencias entre las diferentes partes de un programa que no son
reflejadas en un anlisis gramatical. El analizador semntico recibe la informacin
resultado del anlisis sintctico que puede ser un rbol jerrquico con la
informacin relativa a la organizacin de los tokens en la instruccin que se esta
analizando.
Ejemplo de errores que pueden ser detectados en el proceso de anlisis
semntico son los casos de compatibilidad entre la declaracin de un identificador
y su uso (chequeo de tipos), la concordancia entre la definicin de una funcin y
su activacin o llamada, etc.

Ejemplo: id1 = id2 + id3 * 7

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.

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 entre parentesis 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:

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


Esta fase del compilador no es en realidad una parte separada del compilador, la
mayora de los compiladores generan cdigo como parte del proceso de anlisis
sintctico, esto es debido a que requieren del rbol de sintaxis y si este no va a ser
construido fsicamente, entonces deber acompaar al analizador sintctico al barrer el
rbol implcito. En lugar de generar cdigo ensamblador directamente, los compiladores
generan un cdigo intermedio que es ms parecido al cdigo ensamblador, las
operaciones por ejemplo nunca se hacen con ms de dos operando. Al no generarse
cdigo ensamblador el cual es dependiente de la computadora especfica, sino cdigo
intermedio, se puede reutilizar la parte del compilador que genera cdigo intermedio en
otro compilador para una computadora con diferente procesador cambiando solamente
el generador de cdigo ensamblador al cual llamamos back-end, la desventaja
obviamente es la lentitud que esto conlleva.

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 * + d-

Ventajas y desventajas de la notacin polaca



Generacin de cdigo: simple, no utiliza registros.

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

es muy fcil de interpretar ya que solo
Interpretacin rpida:
necesita una pila.

si, ya que todos los procesadores implementan
Transportable:
una pila.

2.2.2 Cdigo P

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
Generalmente el cdigo que generan los triples recibe el nombre de
cdigo 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 //cudruplos
b (0) //triple

<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)
ANALISIS SEMANTICO 7

Control de flujo:

IF X>Y THEN Z=X ELSE Z=Y+1

1. >, X, Y

2. Saltar si falso, (1), 5

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).

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 8

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

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

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 9

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.

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

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 10

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

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 11

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

Bibliografas

dsc.itmorelia.edu.mx/~jcolivares/courses/ps207a/ps2_u6.pdf
https://es.scribd.com/document/328980753/UNIDAD-2-Generacion-de-
Codigo-Intermedio
https://es.scribd.com/doc/214595861/Automatas-Unidad-2
https://prezi.com/htmcq3v71qdu/unidad-ii-generacion-de-codigo-intermedio/

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 12

CUESTIONARIO:

1.- De qu se compone la generacin de un cdigo intermediario?


Se compone de un conjunto de rutinas independientes, llamadas por los
analizadores morfolgico y sintctico.

2.- Cmo funciona 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.

3.- Qu son las 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.

4.- Qu es una notacin infija?


La expresin o notacin infija es la forma ms comn que utilizamos para
escribir expresiones m atemticas, estas notaciones se refiere a que el
operador esta entre los operadores. La notacin infija puede estar
completamente entre parntesis 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.

5.- Nombras 2 caractersticas de la notacin postfija


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.

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 13

-Que es la notacin polaca y como se ocupa?


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.

7.- Nombra las Ventajas 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.

8.- De qu est compuesta 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.
9.- Cmo se compone un cudruplo?
<Operacin>, <operando1>, <operando2>, <resultado>

10.- Qu son 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

11.- Qu son las 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 %.

12.- Cuale es la sintaxis general de una instruccin de asignacin?


Nombre_de_la_variable = valor

SOLIS ESCAMILLA MARTIN EDUARDO


ANALISIS SEMANTICO 14

13.-De que est compuesta una instruccin de asignacin?


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.

14.- Qu permite las instrucciones de control?


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.

15.- Cmo se clasifican las estructuras?

SOLIS ESCAMILLA MARTIN EDUARDO

También podría gustarte