private void pushOpp(OppNode node){
  if (node == null) {
    oppStack.add(0,node);
    return;
  }
  while (true) {
    if (oppStack.size() == 0)     break;
    OppNode top=oppStack.get(0);
    if (top == null)     break;
    if (top.getPrecedence() < node.getPrecedence())     break;
    oppStack.remove(0);
    top.popValues(nodeStack);
    nodeStack.add(0,top);
  }
  oppStack.add(0,node);
}

private void pushOpp ( OppNode node ) { if ( node == null ) { oppStack . add ( 0 , node ) ; return ; } while ( true ) { if ( oppStack . size ( ) == 0 ) break ; OppNode top = oppStack . get ( 0 ) ; if ( top == null ) break ; if ( top . getPrecedence ( ) < node . getPrecedence ( ) ) break ; oppStack . remove ( 0 ) ; top . popValues ( nodeStack ) ; nodeStack . add ( 0 , top ) ; } oppStack . add ( 0 , node ) ; }
pushes a new operator onto the opp stack , resolving existing opps as needed .
