Você está na página 1de 8

Notacin Infija a posfija

Reglas bsicas

Reglas bsicas para pasar de notacin infija a posfija

S el smbolo es ( ste se mete a la pila de operadores.


Si el smbolo es ) se saca de la pila todo lo que exista hasta llegar al primer (. Los operadores van a la salida, a medida que salen de la pila. El ( se saca pero no va a la salida.

Reglas bsicas para pasar de notacin infija a posfija (continuacin)

Si el smbolo es un operador, si el operador en el tope de la pila es de la misma o de mayor precedencia, dicho operador se saca y va a la salida, continuando de esta manera hasta que el primer parntesis izquierdo o un operador de menor precedencia se encuentre en la pila. Cuando esta situacin ocurre, entonces el operador en turno se mete en la pila. Si el smbolo es un operando, ste se enva directamente a la salida. El smbolo de terminacin, aqu es el punto y coma, saca todos los smbolos de la pila

Pasa de notacin infija a posfija la expresin ((A+B)*C/D+EF)/G


Punto temporal Carcter Pila de operadores Salida 1 ( ( 2 ( ( ( 3 A ( ( A 4 + + ( ( 5 B + ( ( B 6 ) ( 7 * * ( 8 C * ( C 9 / / ( * 10 D / ( D 11 + + ( / 12 E + ( E 13 + ( 14 F + ( F + 15 ) 16 / / 17 G 18 ;

El resultado en notacin posfija es: AB+C*D/EF+G/.

Convertir de una expresin infija EI a Posfija EPOS Conv-posfija(EI, EPOS)


Expresin infija EI, posfija EPOS, PILA.MAX nmero mximo de elementos de la pila

1. Hacer TOPE 0 2. Repetir mientras EI sea diferente de la cadena vaca Tomar el smbolo ms a la izquierda de EI, recortando la expresin 2.1 Si el smbolo es parntesis izquierdo Entonces Poner smbolo en pila Llamar a PONE con PILA, TOPE, MAX y smbolo Se asume que hay espacio disponible en PILA Si no 2.1.1 Si el smbolo es parntesis derecho entonces 2.1.1.1 Repetir mientras (PILA[TOPE] parntesis izquierdo Llamar a QUITA con PILA, TOPE y DATO Hacer EPOS EPOS + DATO 2.1.1.2 Fin del ciclo del paso 2.1.1.1

Llamar a QUITA con PILA, TOPE y DATO Quitamos el parntesis izquierdo de PILA y no lo agregamos a EPOS Si no 2.1.1.3 Si el smbolo es un operando Entonces Agregar Smbolo a EPOS Si no es un operador Llamar PILA-VACIA con PILA, TOPE y BAND 2.1.1.3A Repetir mientras (BAND=FALSO) Y (la prioridad del operador sea menor o igual que la prioridad del operador que est en la cima de la PILA) Llamar a QUITA con PILA, TOPE y DATO Hacer EPOS EPOS + DATO Llamar a PILA-VACIA con PILA, TOPE y BAND 2.1.1.4B Fin del ciclo del paso 2.1.1.3A Llamar a PONE con PILA, TOPE, MAX y smbolo 2.1.1.4 Fin del condicional del paso 2.1.1.3

2.1.2 Fin del condicional del paso 2.1.1 2.2. Fin del condicional del paso 2.1 3. Fin del ciclo del paso 2 4. Llamar a PILA-VACIA con PILA, TOPE, y BAND 5. Repetir mientras BAND = FALSO Llamar a QUITA con PILA, TOPE, y DATO Hacer EPOS EPOS + DATO Llamar a PILA-VACIA con PILA,TOPE, y BAND 6. Fin del ciclo del paso 5

7. Escribir EPOS
Ejemplo. Usa el algoritmo anterior para transformar de infija a posfija: (X+Z)*W/T Y-V

Paso
0 1 2 3 4 5

EI
(X+Z)*W/T Y-V X+Z)*W/T Y-V +Z)*W/T Y-V Z)*W/T Y-V )*W/T Y-V *W/T Y-V

Smbolo Pila analizado


( X + Z ) ) ( ( (+ (+ (

EPOS

X X XZ XZ+ XZ+

6 7 8
9 10 11

W/T Y-V /T Y-V T Y-V


Y-V Y-V -V

* W / / T
Y -

12

13 14

* * / / / / / / -

XZ+ XZ+W XZ+W* XZ+W* XZ+W*T XZ+W*T XZ+W*TY XZ+W*TY XZ+W*TY XZ+W*TY XZ+W*TY XZ+W*TY

/
/ /V /V-

Você também pode gostar