void tex::scan_delimiter(ptr p, bool r) { if (r) { scan_twenty_seven_bit_int(); } else { get_nbrx_token(); switch (cur_cmd) { case LETTER: case OTHER_CHAR: cur_val = del_code(cur_chr); break; case DELIM_NUM: scan_twenty_seven_bit_int(); break; default: cur_val = -1; break; } } if (cur_val < 0) { print_err("Missing delimiter (. inserted)"); help_delimiter(); back_error(); cur_val = 0; } small_fam(p) = cur_val / 04000000 % 16; small_char(p) = cur_val / 010000 % 256; large_fam(p) = cur_val / 256 % 16; large_char(p) = cur_val % 256; }
void del_zero(){//delete the variable that is always be zero struct InterCodes* p = head; Operand temp = NULL; while(p != NULL){ if(is_zero_pattern(p)){ if(p->code.kind == ASSIGN) temp = p->code.u.assign.left; else temp = p->code.u.binop.result; if(always_zero(p->next, temp)){ change_zero(p->next, temp); p = p->next; del_code(p->prev); } } p = p->next; } }