(/home/sate/Testcases/c/cve/wireshark-1.2.0/tools/lemon/lemon.c) |
| |
| 3320 | | | PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){ |
| 3321 | | | char *cp, *xp; |
| 3322 | | | int i; |
| 3323 | | | char lhsused = 0; |
| 3324 | | | char used[MAXRHS]; |
| 3325 | | | |
| 3326 | | | for(i=0; i<rp->nrhs; i++) used[i] = 0; |
| 3327 | | | lhsused = 0; |
Useless Assignment
This code assigns the variable the same value it already had. |
|
| 3328 | | | |
| 3329 | | | if (!rp->code) { |
| 3330 | | | rp->code = "\n"; |
| 3331 | | | rp->line = rp->ruleline; |
| 3332 | | | } |
| 3333 | | | |
| 3334 | | | append_str(0,0,0,0); |
| 3335 | | | for(cp=rp->code; *cp; cp++){ |
| 3336 | | | if( safe_isalpha(*cp) && (cp==rp->code || (!safe_isalnum(cp[-1]) && cp[-1]!='_')) ){ |
| 3337 | | | char saved; |
| 3338 | | | for(xp= &cp[1]; safe_isalnum(*xp) || *xp=='_'; xp++); |
| 3339 | | | saved = *xp; |
| 3340 | | | *xp = 0; |
| 3341 | | | if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){ |
| 3342 | | | append_str("yygotominor.yy%d",0,rp->lhs->dtnum,0); |
| 3343 | | | cp = xp; |
| 3344 | | | lhsused = 1; |
| 3345 | | | }else{ |
| 3346 | | | for(i=0; i<rp->nrhs; i++){ |
| 3347 | | | if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){ |
| 3348 | | | if( cp!=rp->code && cp[-1]=='@' ){ |
| 3349 | | | |
| 3350 | | | |
| 3351 | | | append_str("yymsp[%d].major",-1,i-rp->nrhs+1,0); |
| 3352 | | | }else{ |
| 3353 | | | struct symbol *sp = rp->rhs[i]; |
| 3354 | | | int dtnum; |
| 3355 | | | if( sp->type==MULTITERMINAL ){ |
| 3356 | | | dtnum = sp->subsym[0]->dtnum; |
| 3357 | | | }else{ |
| 3358 | | | dtnum = sp->dtnum; |
| 3359 | | | } |
| 3360 | | | append_str("yymsp[%d].minor.yy%d",0,i-rp->nrhs+1, dtnum); |
| 3361 | | | } |
| 3362 | | | cp = xp; |
| 3363 | | | used[i] = 1; |
| 3364 | | | break; |
| 3365 | | | } |
| 3366 | | | } |
| 3367 | | | } |
| 3368 | | | *xp = saved; |
| 3369 | | | } |
| 3370 | | | append_str(cp, 1, 0, 0); |
| 3371 | | | } |
| 3372 | | | |
| 3373 | | | |
| 3374 | | | if( rp->lhsalias && !lhsused ){ |
| 3375 | | | ErrorMsg(lemp->filename,rp->ruleline, |
| 3376 | | | "Label \"%s\" for \"%s(%s)\" is never used.", |
| 3377 | | | rp->lhsalias,rp->lhs->name,rp->lhsalias); |
| 3378 | | | lemp->errorcnt++; |
| 3379 | | | } |
| 3380 | | | |
| 3381 | | | |
| 3382 | | | |
| 3383 | | | for(i=0; i<rp->nrhs; i++){ |
| 3384 | | | if( rp->rhsalias[i] && !used[i] ){ |
| 3385 | | | ErrorMsg(lemp->filename,rp->ruleline, |
| 3386 | | | "Label %s for \"%s(%s)\" is never used.", |
| 3387 | | | rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]); |
| 3388 | | | lemp->errorcnt++; |
| 3389 | | | }else if( rp->rhsalias[i]==0 ){ |
| 3390 | | | if( has_destructor(rp->rhs[i],lemp) ){ |
| 3391 | | | append_str(" yy_destructor(%d,&yymsp[%d].minor);\n", 0, |
| 3392 | | | rp->rhs[i]->index,i-rp->nrhs+1); |
| 3393 | | | }else{ |
| 3394 | | | |
| 3395 | | | } |
| 3396 | | | } |
| 3397 | | | } |
| 3398 | | | if( rp->code ){ |
| 3399 | | | cp = append_str(0,0,0,0); |
| 3400 | | | rp->code = Strsafe(cp?cp:""); |
| 3401 | | | } |
| 3402 | | | } |
| |