Lines Matching refs:rp

169   struct rule *rp;         /* The rule upon which the configuration is based */  member
198 struct rule *rp; /* The rule, if a reduce */ member
360 rc = ap1->x.rp->index - ap2->x.rp->index;
388 new->x.rp = (struct rule *)arg;
584 struct rule *rp; local
585 for(rp=xp->rule; rp; rp=rp->next){
586 if( rp->precsym==0 ){
588 for(i=0; i<rp->nrhs; i++){
589 if( rp->rhs[i]->prec>=0 ){
590 rp->precsym = rp->rhs[i];
608 struct rule *rp; local
621 for(rp=lemp->rule; rp; rp=rp->next){
622 if( rp->lhs->lambda ) continue;
623 for(i=0; i<rp->nrhs; i++){
624 if( rp->rhs[i]->lambda==B_FALSE ) break;
626 if( i==rp->nrhs ){
627 rp->lhs->lambda = B_TRUE;
637 for(rp=lemp->rule; rp; rp=rp->next){
638 s1 = rp->lhs;
639 for(i=0; i<rp->nrhs; i++){
640 s2 = rp->rhs[i];
665 struct rule *rp; local
687 for(rp=lemp->rule; rp; rp=rp->next){
689 for(i=0; i<rp->nrhs; i++){
690 if( rp->rhs[i]==sp ){
703 for(rp=sp->rule; rp; rp=rp->nextlhs){
705 newcfp = Configlist_addbasis(rp,0);
783 if( cfp->dot>=cfp->rp->nrhs ) continue; /* Can't shift this config */
785 sp = cfp->rp->rhs[cfp->dot]; /* Symbol after the dot */
792 if( bcfp->dot>=bcfp->rp->nrhs ) continue; /* Can't shift this one */
793 bsp = bcfp->rp->rhs[bcfp->dot]; /* Get symbol after dot */
796 new = Configlist_addbasis(bcfp->rp,bcfp->dot+1);
893 struct rule *rp; local
902 if( cfp->rp->nrhs==cfp->dot ){ /* Is dot at extreme right? */
907 Action_add(&stp->ap,REDUCE,lemp->symbols[j],(char *)cfp->rp);
943 for(rp=lemp->rule; rp; rp=rp->next) rp->canReduce = B_FALSE;
947 if( ap->type==REDUCE ) ap->x.rp->canReduce = B_TRUE;
950 for(rp=lemp->rule; rp; rp=rp->next){
951 if( rp->canReduce ) continue;
952 ErrorMsg(lemp->filename,rp->ruleline,"This rule can not be reduced.\n");
980 spy = apy->x.rp->precsym;
999 spx = apx->x.rp->precsym;
1000 spy = apy->x.rp->precsym;
1085 struct config *Configlist_add(rp,dot) in Configlist_add() argument
1086 struct rule *rp; /* The rule */ in Configlist_add()
1092 model.rp = rp;
1097 cfp->rp = rp;
1112 struct config *Configlist_addbasis(rp,dot) in Configlist_addbasis() argument
1113 struct rule *rp; in Configlist_addbasis()
1120 model.rp = rp;
1125 cfp->rp = rp;
1146 struct rule *rp, *newrp; local
1152 rp = cfp->rp;
1154 if( dot>=rp->nrhs ) continue;
1155 sp = rp->rhs[dot];
1158 ErrorMsg(lemp->filename,rp->line,"Nonterminal \"%s\" has no rules.",
1164 for(i=dot+1; i<rp->nrhs; i++){
1165 xsp = rp->rhs[i];
1174 if( i==rp->nrhs ) Plink_add(&cfp->fplp,newcfp);
2023 struct rule *rp; local
2024 rp = (struct rule *)malloc( sizeof(struct rule) +
2026 if( rp==0 ){
2033 rp->ruleline = psp->tokenlineno;
2034 rp->rhs = (struct symbol**)&rp[1];
2035 rp->rhsalias = (char**)&(rp->rhs[psp->nrhs]);
2037 rp->rhs[i] = psp->rhs[i];
2038 rp->rhsalias[i] = psp->alias[i];
2040 rp->lhs = psp->lhs;
2041 rp->lhsalias = psp->lhsalias;
2042 rp->nrhs = psp->nrhs;
2043 rp->code = 0;
2044 rp->precsym = 0;
2045 rp->index = psp->gp->nrule++;
2046 rp->nextlhs = rp->lhs->rule;
2047 rp->lhs->rule = rp;
2048 rp->next = 0;
2050 psp->firstrule = psp->lastrule = rp;
2052 psp->lastrule->next = rp;
2053 psp->lastrule = rp;
2055 psp->prevrule = rp;
2538 struct rule *rp; local
2560 for(rp=lemp->rule; rp; rp=rp->next){
2561 printf("%s",rp->lhs->name);
2564 for(i=0; i<rp->nrhs; i++){
2565 printf(" %s",rp->rhs[i]->name);
2569 if( rp->precsym ) printf(" [%s]",rp->precsym->name);
2579 struct rule *rp; local
2581 rp = cfp->rp;
2582 fprintf(fp,"%s ::=",rp->lhs->name);
2583 for(i=0; i<=rp->nrhs; i++){
2585 if( i==rp->nrhs ) break;
2586 fprintf(fp," %s",rp->rhs[i]->name);
2636 fprintf(fp,"%*s reduce %d",indent,ap->sp->name,ap->x.rp->index); in PrintAction()
2646 indent,ap->sp->name,ap->x.rp->index); in PrintAction()
2677 if( cfp->dot==cfp->rp->nrhs ){
2678 sprintf(buf,"(%d)",cfp->rp->index);
2759 case REDUCE: act = ap->x.rp->index + lemp->nstate; break;
2923 PRIVATE void emit_code(out,rp,lemp,lineno) in emit_code() argument
2925 struct rule *rp;
2935 for(i=0; i<rp->nrhs; i++) used[i] = 0;
2939 if( rp->code ){
2940 fprintf(out,"#line %d \"%s\"\n{",rp->line,lemp->filename);
2941 for(cp=rp->code; *cp; cp++){
2942 if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){
2947 if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){
2948 fprintf(out,"yygotominor.yy%d",rp->lhs->dtnum);
2952 for(i=0; i<rp->nrhs; i++){
2953 if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){
2954 fprintf(out,"yymsp[%d].minor.yy%d",i-rp->nrhs+1,rp->rhs[i]->dtnum);
2971 if( rp->lhsalias && !lhsused ){
2972 ErrorMsg(lemp->filename,rp->ruleline,
2974 rp->lhsalias,rp->lhs->name,rp->lhsalias);
2980 for(i=0; i<rp->nrhs; i++){
2981 if( rp->rhsalias[i] && !used[i] ){
2982 ErrorMsg(lemp->filename,rp->ruleline,
2984 rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]);
2986 }else if( rp->rhsalias[i]==0 ){
2987 if( has_destructor(rp->rhs[i],lemp) ){
2989 rp->rhs[i]->index,i-rp->nrhs+1); (*lineno)++;
2992 rp->rhs[i]->name);
3165 struct rule *rp; local
3461 for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){
3462 assert( rp->index==i );
3463 fprintf(out," /* %3d */ \"%s ::=", i, rp->lhs->name);
3464 for(j=0; j<rp->nrhs; j++) fprintf(out," %s",rp->rhs[j]->name);
3517 for(rp=lemp->rule; rp; rp=rp->next){
3518 fprintf(out," { %d, %d },\n",rp->lhs->index,rp->nrhs); lineno++;
3523 for(rp=lemp->rule; rp; rp=rp->next){
3524 fprintf(out," case %d:\n",rp->index); lineno++;
3525 emit_code(out,rp,lemp,&lineno);
3595 struct rule *rp, *rp2, *rbest; local
3606 rp = ap->x.rp;
3607 if( rp==rbest ) continue;
3611 rp2 = ap2->x.rp;
3613 if( rp2==rp ) n++;
3617 rbest = rp;
3628 if( ap->type==REDUCE && ap->x.rp==rbest ) break;
3633 if( ap->type==REDUCE && ap->x.rp==rbest ) ap->type = NOT_USED;
4064 x = a->rp->index - b->rp->index;
4076 rc = a->rp->index - b->rp->index;
4092 h = h*571 + a->rp->index*37 + a->dot;
4250 h = h*571 + a->rp->index*37 + a->dot;