public class Calculatrice {
  double haut ;
  Calculatrice suite ;

  Calculatrice (double elt, Calculatrice old) {
    haut = elt ;
    suite = old ;
  }

  private static void error (String msg) {
    System.err.println (msg) ;
    System.exit (2) ;
  }

  static Calculatrice push (Calculatrice pile, double elt) {
    // empile un réel
    return new Calculatrice (elt, pile) ;
  }

  static double top (Calculatrice pile) {
    // haut de pile
    if (pile == null)
      error ("Top sur pile vide") ;
    return pile.haut ;
  }

  static Calculatrice pop (Calculatrice pile) {
    // dépile
    if (pile == null)
      error ("Pop sur pile vide") ;
    return pile.suite ;
  }

  static String toString (Calculatrice pile) {
    // impression du contenu de la pile
    // version itérative
    String out = "" ;
    int rang = 0 ;
    while (pile != null) {
      out = rang + ": " + pile.haut + "\n" + out ;
      pile = pile.suite ;
      rang++ ;
    }
    return out ;
  }

  static Calculatrice neg (Calculatrice pile) {
    // négation du dernier élément de la pile
  }

  static Calculatrice add (Calculatrice pile) {
    // addition des deux derniers éléments de la pile
  }

  static Calculatrice sub (Calculatrice pile) {
    // soustraction des deux derniers éléments de la pile
  }

  static Calculatrice mul (Calculatrice pile) {
    // multiplication des deux derniers éléments de la pile
  }

  static Calculatrice div (Calculatrice pile) {
    // division des deux derniers éléments de la pile
  }

  public static String readline () throws java.io.IOException {
    // Cette méthode attend que l'utilisateur tape des données,
    // terminées par "enter" et en fait une chaîne de caractères.
    String ligne = "" ;
    for ( ; ; ) { // boucle infinie
      int r = System.in.read () ;
      if (r == -1)   return "q" ;   // fin de fichier
      char c = (char) r ;
      if (c == '\n') return ligne ; // fin de ligne
      ligne += c ;
    }
  }

  public static void main (String[] args) throws java.io.IOException {
    Calculatrice p = null ;
    for ( ; ; ) { // boucle infinie
      System.out.println ("Commandes : q NEG + - / * un_nombre") ;
      String commande = readline () ;
      if (commande.equals("q")) System.exit (0) ;
      else if (commande.equals("NEG")) p = neg (p) ;
      else if (commande.equals("+")) p = add (p) ;
      else if (commande.equals("-")) p = sub (p) ;
      else if (commande.equals("*")) p = mul (p) ;
      else if (commande.equals("/")) p = div (p) ;
      else {
        double x = Double.valueOf (commande) . doubleValue() ;
        p = push (p, x) ;
      }
      System.out.print (toString (p)) ;
    }
  }
}
