예제 #1
0
파일: eval.c 프로젝트: xkfz007/cpp_progs
static void evalPow(Parser *p){
    int neg= 0;
    if(p->s[0]=='+') p->s++;

    if(p->s[0]=='-'){
        neg= 1;
        p->s++;
    }

    if(p->s[0]=='('){
        p->s++;;
        evalExpression(p);

        if(p->s[0]!=')')
            fprintf(stderr, "Parser: missing )\n");
        p->s++;
    }else{
        evalPrimary(p);
    }

    if(neg) push(p, -pop(p));
}
예제 #2
0
static double evalPow(Parser *p){
    int sign= (*p->s == '+') - (*p->s == '-');
    p->s += sign&1;
    return (sign|1) * evalPrimary(p);
}