예제 #1
0
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;
}
예제 #2
0
파일: optimize.c 프로젝트: 6carol6/Compiler
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;
	}
}