#include #include #include "pilha.h" #include "analex.h" void Erro (char *errmsg) { fprintf (stderr, "ERRO: %s\n", errmsg); fputs ("\tAcao ignorada\n",stderr); } int main () { TOKEN t; double op; LimpaPilha (); while ((t=analex ()) != FIM) { switch (t) { case NUMERO: empilha (num); break; case SOMA: empilha (desempilha ()+desempilha ()); break; case SUB: op = desempilha (); empilha (desempilha () - op); break; case MUL: empilha (desempilha ()*desempilha ()); break; case DIV: if (!(op = desempilha ())) Erro ("Tentativa de divisao por 0"); else empilha (desempilha ()/op); break; case LIMPA: LimpaPilha (); break; case LISTA: ListaPilha (); break; case IMPRIMA: op = desempilha (); printf ("%12.5f\n", op); empilha (op); break; case INV: break; default: Erro ("Erro Interno detectado em main(); comunique ao programador."); break; } } return 0; }