comparison mc-parse.c @ 62:129f4802b027

separation done
author kono
date Thu, 20 Feb 2003 05:27:29 +0900
parents 8ffb8ca3fe34
children 8ad746efa4f8
comparison
equal deleted inserted replaced
61:8ffb8ca3fe34 62:129f4802b027
1707 e1=rvalue(e1); 1707 e1=rvalue(e1);
1708 t=type; 1708 t=type;
1709 getsym(); 1709 getsym();
1710 e2=rvalue(expr10()); 1710 e2=rvalue(expr10());
1711 if(t==INT&&type==INT) 1711 if(t==INT&&type==INT)
1712 e1=list3(op,e1,e2); 1712 e1=binop(op,e1,e2,t,type);
1713 else 1713 else
1714 e1=list3(op+US,e1,e2); 1714 e1=binop(op+US,e1,e2,t,type);
1715 type= INT; 1715 type= INT;
1716 } 1716 }
1717 return e1; 1717 return e1;
1718 } 1718 }
1719 1719
2135 case MOD: 2135 case MOD:
2136 if(!e2) error(EXERR);e=e1%e2;break; 2136 if(!e2) error(EXERR);e=e1%e2;break;
2137 case RSHIFT: 2137 case RSHIFT:
2138 e=e1>>e2;break; 2138 e=e1>>e2;break;
2139 case LSHIFT: 2139 case LSHIFT:
2140 e=e1<<e2; 2140 e=e1<<e2;break;
2141 case GT:
2142 e=(e1>e2);break;
2143 case GE:
2144 e=(e1>=e2);break;
2145 case LT:
2146 e=(e1<e2);break;
2147 case LE:
2148 e=(e1<=e2);break;
2149 case UGT:
2150 e=((unsigned)e1>(unsigned)e2);break;
2151 case UGE:
2152 e=((unsigned)e1>=(unsigned)e2);break;
2153 case ULT:
2154 e=((unsigned)e1<(unsigned)e2);break;
2155 case ULE:
2156 e=((unsigned)e1<=(unsigned)e2);break;
2141 } 2157 }
2142 return list2(CONST,e); 2158 return list2(CONST,e);
2143 } 2159 }
2160 if(op==GT||op==GE||op==LT||op==LE||op==UGT||op==UGE||op==ULT||op==ULE)
2161 return(list3(op,e1,e2));
2144 if((op==ADD||op==MUL||op==BOR||op==EOR||op==BAND)&& 2162 if((op==ADD||op==MUL||op==BOR||op==EOR||op==BAND)&&
2145 (car(e1)==CONST||(car(e2)!=CONST&& 2163 (car(e1)==CONST||(car(e2)!=CONST&&
2146 (car(e1)==RGVAR||car(e1)==RLVAR)))) { 2164 (car(e1)==RGVAR||car(e1)==RLVAR)))) {
2147 e=e1;e1=e2;e2=e;e=t1;t1=t2;t2=e; 2165 e=e1;e1=e2;e2=e;e=t1;t1=t2;t2=e;
2148 } 2166 }