Skip to content

Commit

Permalink
Fix erro de precedência para E_LOGICO
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielVenturini committed Nov 5, 2018
1 parent 70a8ce7 commit 55e44f0
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions syntactic/parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -390,19 +390,15 @@ TreeNode *expressao_logica() {
// se for um destes, é a recursão à esquerda
while(atual()->tokenval == OU_LOGICO || atual()->tokenval == E_LOGICO) {

if(atual()->tokenval == E_LOGICO && temOU) { // tem precedência sobre o OU_LOGICO
if(atual()->tokenval == E_LOGICO) { // tem precedência sobre o OU_LOGICO

temOU = 0; // agora, o próximo anterior não será mais o OU, e sim o E
TreeNode *exp_logica2 = novo_node(NULL, EXPRESSAO_LOGICA);
insere_filho(exp_logica2, remove_filho(exp_logica));
insere_filho(exp_logica2, operador_logico());
insere_filho(exp_logica2, expressao_simples());

insere_filho(exp_logica, exp_logica2);
} else {
if (atual()->tokenval == OU_LOGICO)
temOU = 1;

insere_filho(exp_logica, operador_logico()); // insere como filho o operador
insere_filho(exp_logica, expressao_simples()); // insere como filho o operador
}
Expand Down

0 comments on commit 55e44f0

Please sign in to comment.