Mercurial > hg > CbC > old > device
comparison mc-parse.c @ 14:77c0710a8729
struct copy
author | kono |
---|---|
date | Mon, 17 Jan 2000 01:20:59 +0900 |
parents | a8a812dace23 |
children | ca0bce3b4810 |
comparison
equal
deleted
inserted
replaced
13:a8a812dace23 | 14:77c0710a8729 |
---|---|
720 error(-1); | 720 error(-1); |
721 } else { | 721 } else { |
722 nsc = LVAR; | 722 nsc = LVAR; |
723 ndsp = (disp -= sz); | 723 ndsp = (disp -= sz); |
724 } | 724 } |
725 n->sc = nsc; | |
726 n->dsp = ndsp; | |
725 if(sym==ASS) { | 727 if(sym==ASS) { |
726 n->sc = nsc; | |
727 n->dsp = ndsp; | |
728 decl_data(type,n,0); | 728 decl_data(type,n,0); |
729 } | 729 } |
730 return; | 730 return; |
731 case LSDECL: | 731 case LSDECL: |
732 nsc = FIELD; | 732 nsc = FIELD; |
774 if(t==CHAR) { | 774 if(t==CHAR) { |
775 ass =list3(CASS,list2(LVAR,n->dsp+offset),e); | 775 ass =list3(CASS,list2(LVAR,n->dsp+offset),e); |
776 } else if (scalar(t)) { | 776 } else if (scalar(t)) { |
777 ass = list3(ASS,list2(LVAR,n->dsp+offset),e); | 777 ass = list3(ASS,list2(LVAR,n->dsp+offset),e); |
778 } else if (car(t)==STRUCT || car(t)==UNION || car(t)==STRING) { | 778 } else if (car(t)==STRUCT || car(t)==UNION || car(t)==STRING) { |
779 ass = list3(SASS,list2(LVAR,n->dsp+offset),e); | 779 ass = list4(SASS,list2(LVAR,n->dsp+offset),e,size(t)); |
780 } else { | 780 } else { |
781 error(DCERR); | 781 error(DCERR); |
782 } | 782 } |
783 init_vars = list2(ass,init_vars); | 783 init_vars = list2(ass,init_vars); |
784 return offset+size(t); | 784 return offset+size(t); |
1408 e2=rvalue(expr1()); | 1408 e2=rvalue(expr1()); |
1409 if(t==VOID) | 1409 if(t==VOID) |
1410 error(TYERR); | 1410 error(TYERR); |
1411 if(t==CHAR) { | 1411 if(t==CHAR) { |
1412 type= INT;return(list3(CASS,e1,e2)); | 1412 type= INT;return(list3(CASS,e1,e2)); |
1413 } else if(t==STRUCT||t==UNION) { | 1413 } else if(!scalar(t)&&(car(t)==STRUCT||car(t)==UNION)) { |
1414 type= t;return(list3(SASS,e1,e2)); | 1414 type= t;return(list4(SASS,e1,e2,size(t))); |
1415 } | 1415 } |
1416 type=t; | 1416 type=t; |
1417 return(list3(ASS,e1,e2)); | 1417 return(list3(ASS,e1,e2)); |
1418 case ADD+AS: case SUB+AS: case MUL+AS: case DIV+AS: case MOD+AS: | 1418 case ADD+AS: case SUB+AS: case MUL+AS: case DIV+AS: case MOD+AS: |
1419 case RSHIFT+AS: case LSHIFT+AS: case BAND+AS: case EOR+AS: case BOR+AS: | 1419 case RSHIFT+AS: case LSHIFT+AS: case BAND+AS: case EOR+AS: case BOR+AS: |