void termino(reg_expr * reg) { // <término> -> <primaria> {<operadorMultiplicativo> <primaria>} reg_expr left_operand, right_operand; reg_op op; token tok; primaria(&left_operand); while ((tok = next_token()) && (tok == MULTIPLICACION || tok == DIVISION)) { operador_multiplicativo(&op); primaria(&right_operand); left_operand = gen_infijo(&left_operand, &op, &right_operand); // #gen_infijo } *reg = left_operand; }
/* <término> → <primaria> {<operadorMultiplicativo> <primaria> #gen_infijo} */ void termino(struct reg_expr *preg) { struct reg_expr operando_izq, operando_der; struct reg_op op; token tok; primaria(&operando_izq); tok = prox_token(); while(tok == MULTIPLICACION || tok == DIVISION) { operador_multiplicativo(&op); primaria(&operando_der); operando_izq = gen_infijo(&operando_izq, &op, &operando_der); tok = prox_token(); } *preg = operando_izq; }