Пример #1
0
void expresion(reg_expr * reg) {
	// <expresión> -> <termino> {<operadorAditivo> <termino>}
    reg_expr left_operand, right_operand;
    reg_op op;
    token tok;
    
    termino(&left_operand);
    
    while ((tok = next_token()) && (tok == SUMA || tok == RESTA)) {
        operador_aditivo(&op);
        termino(&right_operand);
        left_operand = gen_infijo(&left_operand, &op, &right_operand); // #gen_infijo
    }
    
    *reg = left_operand;
}
Пример #2
0
/* <expresión> → <término> {<operadorAditivo> <término> #gen_infijo} */
void expresion (struct reg_expr *preg) {
	
	struct reg_expr operando_izq, operando_der;
	struct reg_op op;
	token tok;
	
	termino(&operando_izq);
	tok = prox_token();
	while(tok == SUMA || tok == RESTA) {
		operador_aditivo(&op);
		termino(&operando_der);
		operando_izq = gen_infijo(&operando_izq, &op, &operando_der);
		
		tok = prox_token();
	}
	
	*preg = operando_izq;
}