コード例 #1
0
ファイル: parser.c プロジェクト: nanorarias/compilador-micro
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;
}
コード例 #2
0
ファイル: parser.c プロジェクト: LeonardoSegovia/GitHubFacu
/* <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;
}