Basic Routines
TOKEN opstack, opndstack;
    /*                +  -  *  /  ... */
int opprec[20] = { 0, 6, 6, 7, 7, ...};
void pushop (TOKEN tok)      /* push op onto stack */
  {  tok->link = opstack;
     opstack = tok;  }
TOKEN popop ()               /* pop op from stack */
  { TOKEN tok;
    tok = opstack;
    opstack = tok->link;
    return(tok);   }
int prec (TOKEN tok)        /* precedence of op tok */
  { if (tok == NULL)
       return(-1);          /* -1 for empty stack */
       else if (tok->tokentype == OPERATOR)
          return(opprec[tok->whichval]);
          else return(-1);  }  /* -1 for ( */