Lines Matching defs:vp

92 #define getchr(vp)	(*(vp)->nextchr++)
93 #define peekchr(vp) (*(vp)->nextchr)
94 #define ungetchr(vp) ((vp)->nextchr--)
113 #define ERROR(vp,msg) return(seterror((vp),msg))
118 static int _seterror(struct vars *vp,const char *msg)
120 if(!vp->errmsg.value)
121 vp->errmsg.value = (char*)msg;
122 vp->errchr = vp->nextchr;
123 vp->nextchr = "";
502 static int gettok(register struct vars *vp)
505 vp->errchr = vp->nextchr;
508 c = getchr(vp);
512 vp->errchr = vp->nextchr;
515 vp->nextchr--;
518 if(vp->shp->decomma && (c=peekchr(vp))>='0' && c<='9')
525 if((c=peekchr(vp))>='0' && c<='9')
532 ungetchr(vp);
535 if(peekchr(vp)==':')
537 getchr(vp);
542 if(peekchr(vp)==c)
544 getchr(vp);
556 if(peekchr(vp)==c)
558 getchr(vp);
570 static int expr(register struct vars *vp,register int precedence)
581 lvalue.shp = vp->shp;
583 op = gettok(vp);
591 ERROR(vp,e_moretokens);
609 if(!expr(vp,c))
614 vp->nextchr = vp->errchr;
621 op = gettok(vp);
625 ERROR(vp,e_synbad);
629 ERROR(vp,e_synbad);
631 if(peekchr(vp)== '=' && !(strval_precedence[op]&NOASSIGN))
634 ERROR(vp,e_notlvalue);
638 getchr(vp);
651 if(vp->staksize++>=vp->stakmaxsize)
652 vp->stakmaxsize = vp->staksize;
656 stakpush(vp,lvalue.value,char*);
659 stakpush(vp,lvalue.flag,short);
660 if(vp->nextchr==0)
661 ERROR(vp,e_badnum);
667 ERROR(vp,e_notlvalue);
669 ERROR(vp,e_synbad);
677 if(!expr(vp,c))
683 if(!vp->paren)
684 ERROR(vp,e_paren);
686 ERROR(vp,e_synbad);
691 if(vp->infun)
692 vp->infun++;
696 vp->staksize--;
698 if(!expr(vp,c))
708 int infun = vp->infun;
718 if(vp->staksize++>=vp->stakmaxsize)
719 vp->stakmaxsize = vp->staksize;
720 vp->infun=1;
726 stakpush(vp,fun,Math_f);
730 vp->infun = 0;
732 ERROR(vp,e_synbad);
733 vp->paren++;
734 if(!expr(vp,1))
736 vp->paren--;
741 if(vp->infun != nargs)
742 ERROR(vp,e_argcount);
743 if((vp->staksize+=nargs)>=vp->stakmaxsize)
744 vp->stakmaxsize = vp->staksize+nargs;
746 vp->staksize -= nargs;
748 vp->infun = infun;
749 if (gettok(vp) != A_RPAR)
750 ERROR(vp,e_paren);
761 ERROR(vp,e_notlvalue);
765 stakpush(vp,lvalue.value,char*);
766 stakpush(vp,lvalue.flag,short);
767 vp->staksize--;
778 offset1 = stakpush(vp,0,short);
780 if(!expr(vp,1))
782 if(gettok(vp)!=A_COLON)
783 ERROR(vp,e_questcolon);
785 offset2 = stakpush(vp,0,short);
788 if(!expr(vp,3))
797 ERROR(vp,e_badcolon);
810 offset = stakpush(vp,0,short);
812 if(!expr(vp,c))
829 vp->staksize--;
833 ERROR(vp,e_synbad);
836 if(*vp->nextchr=='L' && vp->nextchr[1]=='\'')
838 vp->nextchr++;
841 pos = vp->nextchr;
843 lvalue.expr = vp->expr;
844 lvalue.emode = vp->emode;
851 vp->nextchr +=2;
854 d = chresc(pos+1,(char**)&vp->nextchr);
856 if(*vp->nextchr=='\'')
857 vp->nextchr++;
860 d = (*vp->convert)(&vp->nextchr, &lvalue, LOOKUP, 0);
861 if (vp->nextchr == pos)
863 if(vp->errmsg.value = lvalue.value)
864 vp->errstr = pos;
865 ERROR(vp,op==A_LIT?e_charconst:e_synbad);
870 if(vp->staksize++>=vp->stakmaxsize)
871 vp->stakmaxsize = vp->staksize;
872 stakpush(vp,d,Sfdouble_t);
884 if(vp->staksize++>=vp->stakmaxsize)
885 vp->stakmaxsize = vp->staksize;
889 stakpush(vp,assignop.value,char*);
890 stakpush(vp,assignop.flag,short);
894 vp->nextchr = vp->errchr;