Text   |  XML   |  ReML   |   Visible Warnings:

Useless Assignment  at lemon.c:3327

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

translate_code

(/home/sate/Testcases/c/cve/wireshark-1.2.0/tools/lemon/lemon.c)expand/collapse
Show more  
 3320  PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
 3321    char *cp, *xp;
 3322    int i;
 3323    char lhsused = 0;    /* True if the LHS element has been used */
 3324    char used[MAXRHS];   /* True for each RHS element which is used */
 3325   
 3326    for(i=0; i<rp->nrhs; i++) used[i] = 0;
 3327    lhsused = 0;
 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                /* If the argument is of the form @X then substituted
 3350                ** the token number of X, not the value of X */
 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    } /* End loop */
 3372   
 3373    /* Check to make sure the LHS has been used */
 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    /* Generate destructor code for RHS symbols which are not used in the
 3382    ** reduce code */
 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          /* No destructor defined for this term */
 3395        }
 3396      }
 3397    }
 3398    if( rp->code ){
 3399      cp = append_str(0,0,0,0);
 3400      rp->code = Strsafe(cp?cp:"");
 3401    }
 3402  }
Show more  




Change Warning 920.30233 : Useless Assignment

Priority:
State:
Finding:
Owner:
Note: