void Interpretador::termo() {
   fator();
   string op;
   while (palavraAtual == "*" || palavraAtual == "/") {
     op = palavraAtual;
     palavraAtual = arquivo->proximaPalavra();
     fator();
     Expressao *exp1 = pilha->top();
     pilha->pop();
     Expressao *exp2 = pilha->top();
     pilha->pop();
     pilha->push(new ExpBinaria(op,exp1,exp2));
   }  
}
Exemple #2
0
/*** Função que confere um termo linha(usado pra remover recursão a esquerda) ***/
int termol() {
    //printf("TERMOL\n");
    if(match(MULTI)) {
        if(fator()) {
            if(termol()) {
                return 1;
            } else return 1;
        } else return 0;
    } else if(match(DIVIDE)||match(DIV)||match(MOD)) {
        if(fator()) {
            if(termol()) {
                return 1;
            } else return 1;
        } else return 0;
    } else return 1;
}
Exemple #3
0
/*** Função que confere um termo ***/
int termo() {
    //printf("TERMO\n");
    if(fator()) {
        if(termol()) {
            return 1;
        } else return 0;
    } else return 0;
}
int termo(void)
{
   int tipo1, tipo2;
   tipo1 = tipo2 = 0;
	tipo1 = fator();

	while((tk.cod == MUL) || (tk.cod == DIV) || (tk.cod == MOD) || (tk.cod == AND)){
      tk = analex();          
		tipo2 = fator();
		
		if(tipo1 != tipo2){
            erro(lin, 12);      
        }
	}
	
	return tipo1;
}
Exemple #5
0
int main(void){
    arv* arvore_a;
    int n, f;
    criar_arvore(arvore_a);
    insereArv(&arvore_a, 20);
    insereArv(&arvore_a, 15);
    insereArv(&arvore_a, 24);
    insereArv(&arvore_a, 11);
    insereArv(&arvore_a, 18);
    insereArv(&arvore_a, 37);
    printf("%s\n", avl(&arvore_a) ? "E avl" : "Nao e avl");
    printf("%s\n", balan(&arvore_a) ? "Esta completamente balanceada" : 
                                      "Nao esta completamente balanceada");
    n = fator(&arvore_a, 24, &f);
    if(f) printf("Fator = %d\n", n);
    else printf("Nao encontrado.\n");
    printf("Arvore:\n");
    print(&arvore_a);
    destruirArv(&arvore_a);
    return 0;
}