/*****************************  Klammer.java  *********************************/

import AlgoTools.IO;

/** Ueberprueft Klammerung mit Hilfe eines Kellers              
 */

public class Klammer {

  public static void main(String[] argv) {

    char[] c;                             // Eingabezeichenkette
    int i = 0;                            // Laufindex in char[] c
    boolean fehler = false;               // Abbruchkriterium
    Keller k = new VerweisKeller();       // Keller fuer Zeichen

    c = IO.readChars("Bitte Klammerausdruck eingeben: ");
    IO.print("                               ");

    while ((i < c.length) && (!fehler)) {
      switch (c[i]) {
        case '(':                         // '(' und '[' auf den Keller legen
        case '[': k.push(new Character(c[i])); break;
        case ')': if (!k.empty() && ((Character)k.top()).charValue() == '(') 
                       k.pop();           // '(' vom Keller nehmen
                  else fehler = true; break; 
        case ']': if (!k.empty() && ((Character)k.top()).charValue() == '[') 
                       k.pop();           // '[' vom Keller nehmen
                  else fehler = true; break; 
        default:  break;                  // beliebiges Zeichen, keine Klammer
      }
      IO.print(" ");                      // naechstes Zeichen
      i++;
    }

    if ((i==c.length) && !fehler && k.empty()) 
         IO.println("korrekt geklammert");
    else IO.println("^ nicht korrekt geklammert");
  }
}
