TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 1de11
DIVISIÓN.
GRUPO.
INGENIERÍA EN SISTEMAS COMPUTACIONES
ASIGNATURA.
LENGUAJES Y AUTÓMATAS AUTÓMATAS Il
NOM$RE DE% A%UMNO.
NO. DE CONTRO%.
R)i* Gar+)o Dei,it -o)e Mart!ne* Cr)* E+)ar+o
PRODUCTO.
DOCENTE.
123107079 123107143
II. GENERACIÓN DE CODIGO INTERMEDIO. INTERMEDIO.
3
Santillán Choreo Mar!a An"eli#a
&EC'A 10 DE ABRIL DE 2015
CA%I&ICACIÓN 0 &IRMA DE% PRO&ESOR.
Unidad 2. Generación de Código Intermedio. 2.1 Notaciones...................................................................................................................2 2.1.1 Notación Prefija............................................................. Prefija................................................................................ ........................... ................ ........22 2.1.2 Notación Infija............................................ Infija............................................................................ ........................................ ................ .............. ......33 2.2.3 Notación Postfija........................................... Postfija....................................................................................... .................................................... ........33 2.2 Representaciones de código Intermedio..................................................................4 2.2.1 Notación Polaca.................................................... Polaca................................................................................................ .............................................4 .4 2.2.2 Código P....................................................... P.......................................................................................................... ......................................................5 ...5 2.2.3 riplos............................................................. riplos.............................................................................................. .......................................... ................. .........5 .5 2.2.4 C!"dr!plos.............................................. C!"dr!plos.......................................................................................... .................................................... .............. ......## 2.3 $s%!ema de generación............................................................................................# 2.3.1 &a &aria'les ria'les ( constantes.............................. constantes............................................................ ...................................... ................. ................. ........ ) 2.3.2 $*presiones............................................................ $*presiones.................................................................................................... ...........................................) ...) 2.3.3 Instr!cción de asignación..................................... asignación............................................................................ ...........................................+ ....+ 2.3.4 Instr!cciones de control........................................................ control................................................................... ................... ............... .......,, 2.3.5 -!nciones.............................................. -!nciones.............................................................................................. ........................................................ ............, ...., 2.3.# $str!ct!ras.................................. $str!ct!ras....................................................................................... ............................................................. ................ ........,, Referencias 'i'liogr"ficas.............................................................................................11
N( ACTIV /
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 2de11
Unidad 2. Generación de Código Intermedio.
Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico detectado por el análisis sintáctico para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código. En compiladores de un solo paso, las llamadas a las rutinas semánticas se realizan directamente desde el analizador sintáctico y son dichas rutinas las que llaman al generador de código. El instrumento más utilizado para conseguirlo es la gramática de atributos.
2.1 Notaciones. Las notaciones son una forma especial en la que se pueden expresar una expresión matemática y puedan ser de formas! infija, prefija y posfija. Los prefijos, "re # "os # $n se refieren a la posición relati%a del operador con respecto a los dos operandos.
2.1.1 Prefija La expresión o notación prefija nos indica que el operador %a antes de los operandos sus caracter&sticas principales son! • •
•
Los operadores conser%an el mismo orden que la notación infija equi%alente. 'o requiere de par(ntesis para indicar el orden de precedencia de operadores ya que (l es una operación. Se e%al)a de izquierda a derecha hasta que encuentra el primer operador seguido inmediatamente de un par de operando.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 3de11
•
Se e%al)a la expresión binaria y el resultado se cambia como un nue%o
•
operando. Se repite hasta que nos quede un solo resultado. El orden es operador, primer operando, segundo operando.
2.1.2 Infija La expresión o notación infija es la forma más com)n que utilizamos para escribir expresiones matemáticas, estas notaciones se refiere a que el operador esta entre los operadores. 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 in%alidar los arreglos al expresar el orden de e%aluación de una expresión! *+ - *+/ -+ *0+/1 -2 La notación infija tiene el problema de que en expresiones con más de un operador existe ambig3edad sobre cuál es el orden de e%aluación. "or ejemplo, la expresión 24+4 se puede interpretar como 024+14 o bien 240+41. Las otras notaciones no sufren este problema. La notación habitual. El orden es primer operando, operador, segundo operando.
2.1.3 Postfija 5omo su nombre lo indica se refiere a que el operador ocupa la posición despu(s de los operandos sus caracter&sticas principales son! •
El orden de los operandos se conser%a igual que la expresión infija equi%alente
•
no utiliza par(ntesis ya que no es una operación ambigua. La operación posfija no es exactamente lo in%erso a la operación prefija
•
equi%alente. El orden es primer operando, segundo operando, operando. 06/71*5 67/5*
Ejemplo!
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 4de11
Si deseamos representar las expresiones 0/0*+11 xy 00/1*+1 x en las tres notaciones mencionadas, el resultado ser&a! 0/0*+11 x 00/1*+1 x 'otación postfija +*/x /+*x
2.2 Representaciones de código intermedio. 2.2.1 Notación Polaca. La notación polaca es la originada por un 6utómata con pila, en la que los operadores siempre preceden a los operandos sobre los que act)an, y que tiene la %entaja de no necesitar par(ntesis! • • • •
Se utiliza principalmente para la representación de expresiones aritm(ticas. Expresión a notación polaca in%ersa. 6lgoritmo. 8epresenta la expresión en forma de árbol sintáctico. 8ecorrer el árbol en postorden.
Ejemplo! a / b * c#d 5ódigo a b c * / d# 9entajas y des%entajas de la notación polaca. • •
• •
:eneración de código! simple, no utiliza registros. ;ptimización! es dif&cil de reordenar ya que hay que considerar el contenido de la pila. $nterpretación rápida! es muy fácil de interpretar ya que solo necesita una pila.
2.2.2 Código P.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 5de11
El código " comenzó como un código ensamblador objeti%o estándar producido por %arios compiladores "ascal en la d(cada de -=>? y principios de la de -=2?. @ue diseAado para código real para una máquina de pila hipot(tica la idea era hacer que los compiladores de "ascal se transportaran fácilmente requiriendo solo que se %ol%iera a escribir el int(rprete de la maquina " para una plataforma, el código " tambi(n a probado ser )til como código intermedio y sean utilizado %arias extensiones y modificaciones del mismo en di%erso compiladores de código nati%o, la mayor parte para lenguaje tipo "ascal. 5omo el código " fue diseAado para ser directamente ejecutable, contiene una descripción impl&cita de un ambiente de ejecución particular que incluye tamaAos de datos, además de mucha información espec&fica para la maquina ", que debe conocer si se desea que un programa de código " se comprensible. La máquina " está compuesta por una memoria de código, una memoria de datos no espec&fica para %ariables nombre das y una pila para datos temporales, junto como cualquiera registro que sea necesario para mantener la pila y apoyar la ejecución.
2.2.3 riplos B C;peradorD, Coperando-D, CoperandoD B El resultado se asocia al n)mero de tripleta Ejemplo! * F / 0G / H1 -. *, , F . /, G, H . /, 0-1, 01 5ontrol de flujo! $@ FDG
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 6de11
. , H, F +. Saltar,, > J. /, G, K. , H, 0J1 "roblema La optimización supone mo%er tripletas y hay que recalcular las referencias.
2.2.4 C!"dr!plos. B C;peraciónD, Coperando-D, CoperandoD, CresultadoD
Ejemplo! 06/71*05/1#E /, 6, 7, , 5, , < *, <-, <, < #, <, E, <+ Las cuádruplas facilitan la aplicación de muchas optimizaciones, pero hay que tener un algoritmo para la reutilización de las %ariables temporales 0reutilización de registros del procesador1.
2.3 $s%!ema de generación. Los esquemas de generación son las estrategias o acciones que se deberán realizarse y tomarse en cuenta en el momento de generar código intermedio. Los esquemas de generación dependen de cada lenguaje.
2.3.1 &aria'les ( constantes.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 7de11
Las %ariables y constantes deben separarse de tal manera que queden las expresiones una por una de manera simple. "or ejemplo int a,b,cM se descompone a int aM int bM intcM respecti%amente.
2.3.2 $*presiones. En esta función recibe una cadena que representa una l&nea de código intermedio y toma las medidas oportunas para que ese código se utilice. Estas medidas pueden ser escribir la l&nea en un fichero adecuado, almacenar la instrucción en una lista que despu(s se pasará a otros módulos, o cualquier otra que necesitemos en nuestro compilador.
Expresiones aritm(ticas Son aquella donde los operadores que inter%ienen en ella son num(ricos, el resultado es un n)mero y los operadores son aritm(ticos. Los operadores aritm(ticos más com)nmente utilizados son! /, # , * , 4 y N. 5omenzamos el estudio por las expresiones aritm(ticas. Lo que tendremos que hacer es crear por cada tipo de nodo un m(todo que genere el código para calcular la expresión y lo emita. Ese código dejará el resultado en un registro, cuyo nombre de%ol%erá el m(todo como resultado. "ara reser%ar estos registros temporales, utilizaremos una función, reser%a. En principio bastar Oa con que esta función de%uel%a un registro distinto cada %ez que se la llame. 5ada nodo generará el código de la siguiente manera! •
"or cada uno de sus operandos, llamara al m(todo correspondiente para que se e%al)e la sub expresión. Si es necesario, reser%ara un registro para guardar su resultado.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página de11
•
Emitirá las instrucciones necesarias para realizar el cálculo a partir de los operandos.
2.3.3 Instr!cciones de asignación La sintaxis general de la instrucción de asignación es! nombrePdePlaP%ariable %alor
El %alor a la derecha del signo igual puede ser una constante, otra %ariable o una expresión que combine constantes y %ariables, pero siempre la %ariable y su %alor deben ser del mismo tipo de dato. Ejemplos! edadN J areaQ -. nombreR "edroT
$nstrucciones de asignación compuesta. Las instrucciones de asignación compuesta realizan primero una operación en una expresión antes de asignarla a un elemento de programación. En el siguiente ejemplo se muestra uno de estos operadores, /, que incrementa el %alor de la %ariable del lado izquierdo del operador con el %alor de la expresión de la derecha. Una instrucción de asignación asigna el %alor de una expresión a una %ariable. En general, si la %ariable que se %a a asignar es una propiedad, la propiedad debe ser de lectura y escritura o de sólo escrituraM en caso contrario, se produce un error de compilación. Si la %ariable es una %ariable de sólo lectura, la asignación debe producirse en un constructor
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página !de11
Shared o un constructor de instancia apropiado para el tipo de la %ariableM en caso contrario, se producirá un error de compilación.
2.3.4 Instr!cciones de control. Esta forma de programación sólo permite resol%er problemas sencillos. "ara resol%er problemas más complejos, nos puede interesar que dependiendo de los %alores de los datos, se ejecuten unas instrucciones u otras. Las instrucciones condicionales nos %an a permitir representar (ste tipo de comportamiento. Sentencias $@ y S$<5I. En otros casos, nos encontraremos con la necesidad de repetir una instrucción o instrucciones un n)mero determinado de %eces. En (stos casos utilizaremos instrucciones de control iterati%as o repetiti%as 0ciclos1. Sentencias I$LE, ;#I$LE y @;8.
2.3.5 -!nciones Las funciones pueden reducir a en l&nea, lo que se hace que expandir el código original de la función. Las funciones se descomponen simplificando los parámetros de manera indi%idual al igual que el %alor de retorno.
2.3.# $str!ct!ras. Las Estructuras de 5ontrol se emplean para controlar la ejecución y flujo del código, las cuales se di%iden en! •
Estructuras de Selección! son aquellas que se utilizan para realizar operaciones
•
basadas en el %alor de una expresión. Estructuras de $teración! son aquellas que nos permiten ejecutar un bloque de código repetidamente mientras una condición espec&fica sea %erdadera.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 10de11
Estructuras de Selección! •
Estructura if. 6l escribir uno o %arios flujos de acción el código contenido en estos se ejecutará siempre y cuando la e%aluación de la expresión en la sentencia if se
•
e%alu( como %erdadera. if0expresión#booleana1 Vla expresión se e%aluó %erdaderaW Estructura sXitch. La estructura de selección sXitch tiene una expresión de control y los flujos de código alternos son ejecutados dependiendo del %alor constante asociado con esta expresión. Los tipos de datos permitidos para la expresión de control son sbyte, byte, short, ushort, uint, long, ulong, char, string o un tipo enumeración
0enumeration1.
expresion#contante! sentenciasM
Sintaxis!
sXitch0expresion#de#control1
V
case
breaYM case expresion#contante! sentenciasM
breaYM W Estructuras de $teración! •
@or. La Estructura for se utiliza cuando se conoce pre%iamente cuantas %eces ha de repetirse un bloque de código. Este bloque se repetirá mientras la condición e%alu( una expresión booleana %erdadera, no será posible e%aluar otro tipo de expresión.
•
Sintaxis! for0inicializadorM condiciónM iterador1 V accionesMW hile. La estructura Xhile se utiliza cuando no se conoce pre%iamente cuantas %eces ha de repetirse un bloque de código, por lo que puede ejecutarse ? o más %eces. Este bloque se repetirá mientras la condición e%alu( una expresión booleana %erdadera,
no
será
posible
e%aluar
otro
tipo
de
expresión.
Xhile0condicional1 VaccionesMW
R$-$R$NCI/ 0I0IGR-IC/. Generación de Código Intermedio. 8ecuperado el = de abril de ?-J en
Sintaxis.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI Código: FO-205P11000-XX FORMATO DE ENTREGA DE EVIDENCIAS Página 11de11
http!44es.scribd.com4doc4J+2J>KJ-4:eneración de 5odigo $ntermedioZscribd