static int primary_expr(ParserState* ps, Ast** expr) { Ast* base = ps->curr; if (literal_expr(ps, &base)) { *expr = base; } else if (curris(ps, PLParen)) { enterblk(); if (expression(ps, expr) && ps->curr == 0) { exitblk(); ast_swap(base, *expr); free(*expr); *expr = base; return 1; } else { exitblk(); parerr(ps, "invlaid syntax"); } } else if (obj_literal_expr(ps, expr)) {} else if (array_literal_expr(ps, expr)) {} else if (curris(ps, TkId)) { *expr = base; step(ps); } // else if (stepifis(ps, RNew)) {} else return 0; while (indexing(ps, expr, base) || dot_id(ps, expr, base) || arg_list(ps, base)) { } return 1; }
int main(int argc, char *argv[]){ int i,j,k; char intt[200]; int lon_mask[NPIX_MASK], lat_mask[NPIX_MASK]; struct headers gridHeader,thisHeader; sprintf(intt,"%s%s",INPATH,GRIDNAME); gridHeader=readHeader(&intt[0]); int *glon,*glat;//global longitude and latitude of original grid int *index; glon=(int *)malloc(gridHeader.ncells*sizeof(int)); glat=(int *)malloc(gridHeader.ncells*sizeof(int)); index=(int *)malloc(gridHeader.ncells*sizeof(int)); readMask(lon_mask,lat_mask); readGrid(glon,glat); indexing(lon_mask,lat_mask,glon,glat,index); printf("%d\n",sizeof(real)); /*SHORT*/ if(sizeof(real)==sizeof(short)){ for(i=0;i<NCOWFILES;i++) convGeneral(index,filecow[i]);//cow file for(i=0;i<NVAR6;i++) convGeneral(index,fileclim6[i]);//climate for(i=0;i<NVAR9;i++) convGeneral(index,fileclim9[i]); for(i=0;i<NVARERA;i++) convGeneral(index,fileclimera[i]); for(i=0;i<NSDATEFILES;i++) convGeneral(index,filesdate[i]); //sowing data for(i=0;i<NPOPFILES;i++) convGeneral(index,filepopdens[i]);//Population density for(i=0;i<NELEVFILES;i++) convGeneral(index,fileelev[i]); //elevation for(i=0;i<NCROPFILES;i++) convGeneral(index,filelu[i]); //CFT } /*drainage & neibour irrigate(LONG)*/ if(sizeof(real)==sizeof(long)){ for(i=0;i<NDRAINFILES;i++) convGeneral(index,filedrain[i]); //drainage for(i=0;i<NNEIFILES;i++) convGeneral(index,filenei[i]);//neibourring irrigation } /*water use & reservoir_info_grand5 & soil (INT)*/ if(sizeof(real)==sizeof(int)){ for(i=0;i<NLAKEFILES;i++) convSoil_Lake(index,filelakes[i]);//lakes for(i=0;i<NWUSEFILES;i++) convGeneral(index,filewuse[i]);//water use for(i=0;i<NRESFILES;i++) conv_reservoir(index,fileres[i]);//reservoir convSoil_Lake(index,filesoil[0]);//soil } free(glon); free(glat); free(index); }