Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
// Parser.cpp
#include <iostream>
#include <stack> // header para a pilha
#include <string>
#include <stdlib.h>
#define INICIO 1
#define ACEITAR 5
#define MORRE 0
#define FIM '='
#define ABRE '('
#define FECHA ')'
#define MAXEXP 20
//Códigos de ERRO
#define ER_DIV_ZERO -1
#define ER_EXP -2
#define ER_NO_EXP -3
/*************
* posfixo *
**********************************************************
*
* Converte uma expressão para a forma posfixa
* origem = expressão original
* dest = expressão destino
*
*
*********************************************************/
}
else if (token == FECHA){
while (pilha.top() != ABRE){
dest[pos_dest] = pilha.top();
pilha.pop();
pos_dest++;
}
if (!pilha.empty())
pilha.pop();
}
else if ( token == FIM){
while (!pilha.empty()){
dest[pos_dest] = pilha.top();
pilha.pop();
pos_dest++;
}
}
else if ( eh_num(token) ){
dest[pos_dest] = token;
pos_dest++;
}
else if ( eh_oper(token) )
{
if (pilha.empty())
{
pilha.push(token);
}
else if (prioridade(token, pilha.top())){
pilha.push(token);
}
else{
dest[pos_dest] = pilha.top();
pilha.pop();
pos_dest++;
}
}
token = origem[++pos];
}//while
}