Ejemplo n.º 1
0
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));
}
Ejemplo n.º 2
0
static double evalPow(Parser *p){
    int sign= (*p->s == '+') - (*p->s == '-');
    p->s += sign&1;
    return (sign|1) * evalPrimary(p);
}