import static java.lang.System.*;  // cf. Java 5
import java.util.*;
import java.io.*;

/**
  * Classe 'parenthe' :  Test de qq. méthodes du conteneur 'Stack'
  * @author   (c) ~/2A env.
  * @version  1.1   2006.08.23
  * @since    1.0   2005.10.01
  */

public class parenthe  { 

   private String  expr;     
   private Stack<Character> pileParentheses;
   
   private parenthe(String uneExpression)    {  
      expr = uneExpression;
      pileParentheses = new Stack<Character>();  // cf. Java 5
   }
   
   private boolean valide()    {
      try   { 
         for(int i = 0; i<expr.length(); i++) 
           switch(expr.charAt(i)) {
             case '(':
                pileParentheses.push(new Character('('));  break;
             case ')':
                pileParentheses.pop();  break;
            }
      } catch (EmptyStackException  ese) {  return false; }     

      return  pileParentheses.empty();
   }

   public static void main(String [] arg)   { 
      out.println("\nparenthe : Un exemple d'emploi de 'Stack' en Java 5");
      out.println("\t(c) ~/2a env. 2006.08.23  19h35 \n");
      out.println("Tapez votre expression \u00e0 valider en parenth\u00e9sage");
      out.println("Exemple:  (x+y)  ou  ((1-3)/2))  ou  1+3)*4(  etc ... \n");

      parenthe O = new parenthe(es.LireCh());
      out.println("\nVotre parenth\u00e9sage est "+(O.valide()?"bon!":"incorrect!"));
      es.attente();
   }
}






