El objetivo del código intermedio es reducir el número de programas necesarios para construir traductores, y permitir más fácilmente la transportabilidad de unas máquinas a otras
Después de los análisis sintáctico y semántico, algunos compiladores generan una representación intermedia explicita del programa fuente.
Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir al programa objeto.
NOTACIONES
Las notaciones sirven de base para expresar sentencias bien definidas. El uso más extendido de las notaciones sirve para expresar operaciones aritméticas.
Las expresiones aritméticas se pueden expresar de tres formas distintas: infija, prefija y postfija. La diversidad de notaciones corresponde en que para algunos casos es más sencillo un tipo de notación.
NOTACION INFIJA
NOTACION POSTFIJA
NOTACIÓN PREFIJA
La notación prefija, también conocida como notación de prefijo o notación prefija, es una forma de notación para la lógica, la aritmética, y el álgebra. Su característica distintiva es que coloca los operadores a la izquierda de sus operandos. Si la aridad (es el número de argumentos necesarios para que dicho operador o función se pueda calcular.)
En la notación de infijo, a diferencia de las notaciones de prefijo o posfijo, es necesario rodear entre paréntesis a los grupos de operandos y operadores, para indicar el orden en el cual deben ser realizadas las operaciones.
La notación de infijo es la notación común de fórmulas aritméticas y lógicas, en la cual se escriben los operadores entre los operandos en que están actuando (ej ) usando un estilo de infijo
La notación postfija pone el operador al final de los dos operandos, por lo que la expresión queda: ab+5- La notación postfija utiliza una estructura del tipo LIFO (Last First Out) pila, la cual es la más utilizada para la implementación. Llamada también polaca inversa, se usa para representar expresiones sin necesidad de paréntesis. La notación postfija pone el operador al final de los dos operandos. Ejemplos: a*b ab* a*(b+c/d) abcd/+* a*b+c*d ab*cd*+