erty
Intermedio
Programación II
Margarita Álvarez
Generación de código intermedio
Con la generación de código intermedio se inicia la tarea de síntesis.
Aunque un programafuente se puede traducir directamente a lenguaje objeto,
algunas ventajas de utilizar una forma intermedia son:
Aumentar la portabilidad del compilador de una máquina a otra:
Se puede utilizar elmismo analizador para diferentes generadores.
Se pueden utilizar optimizadores independientes de la máquina.
Facilitar la división en fases del proyecto.
Analizador
Sintáctico
Comprobaciónestática
Gen. Código
intermedio
Código intermedio
Generador de
código
Distinto formato de las instrucciones:
Notación polaca inversa o notación postfija
Árboles sintácticos
Código de tresdirecciones
1
Notación postfijo
La notación postfija de una expresión E se puede definir como:
1.
Si E es una variable o una constante, entonces la notación
postfija de E es también E.
2.Si E es una expresión de la forma E1opE2 donde op es
cualquier operador binario, entonces la notación postfija de
E es E1´E2´op donde E1´ y E2´ son las notaciones postfijas
de E1 y E2respectivamente.
3.
Si E es una expresión de la forma (E1) entonces la notación
postfija de E1 es también la notación postfija de E.
Ejemplos
95-2+
(9-5)+2
9-(5+2)
952+abc-*bc-*+:=
a:= b*-c+b*-cNotación postfijo - Ejemplo
Definición dirigida por la sintaxis
Producciones
expr ⇒ expr + término
expr ⇒ expr – término
expr ⇒ término
término ⇒ 0
…
término ⇒ 9
Reglas semánticas
expr.t⇒ expr.t || término.t || +
expr.t ⇒ expr.t || término.t || expr.t ⇒ término.t
término.t ⇒ ´0´
…
término.t ⇒ ´9´
expr.t
9-5+2
= 95-2+
expr.t = 95- +
expr.t = 9 término.t = 9término.t = 5
término.t
=2
2
5
Operador de
concatenación
A cada no terminal está
asociado un atributo t con
un valor de la cadena que
representa la notación
postfija de la...
Regístrate para leer el documento completo.