// Path: src/main/java/cn/codepub/algorithms/utils/StackX.java
// public class StackX<T> {
//     private int maxSize;
//     private Object[] stackArray;
//     private int top;
// 
//     public StackX() {
// 
//     }
// 
//     public StackX(int s) {
//         maxSize = s;
//         stackArray = new Object[maxSize];
//         top = -1;
//     }
// 
//     public void push(T j) {
//         stackArray[++top] = j;
//     }
// 
//     public T pop() {
//         return (T) stackArray[top--];
//     }
// 
//     public T peek() {
//         return (T) stackArray[top];
//     }
// 
//     public boolean isEmpty() {
//         return (top == -1);
//     }
// 
//     public int size() {
//         return top + 1;
//     }
// 
//     public T peekN(int n) {
//         return (T) stackArray[n];
//     }
// 
//     public void displayStack(String s) {
//         System.out.print(s);
//         System.out.print("Stack(bottom->top):");
//         for (int j = 0; j < size(); j++) {
//             System.out.print(peekN(j) + " ");
//         }
//         System.out.println();
//     }
// }


import cn.codepub.algorithms.utils.StackX;
import java.io.BufferedReader;
import java.io.InputStreamReader;

            System.out.print("Enter postfix:");
            System.out.flush();
            input = getString();
            if (input.equals("")) {
                break;
            }
            ParsePost aParse = new ParsePost(input);
            output = aParse.doParse();
            System.out.println("Evaluates to " + output);
        }
    }

    public static String getString() throws Exception {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader buf = new BufferedReader(isr);
        String s = buf.readLine();
        return s;
    }
}


class ParsePost {
    private StackX<Integer> theStack;
    private String input;

    public ParsePost(String s) {
        input = s;
    }

    public int doParse() {

// Path: src/main/java/cn/codepub/algorithms/utils/StackX.java
// public class StackX<T> {
//     private int maxSize;
//     private Object[] stackArray;
//     private int top;
// 
//     public StackX() {
// 
//     }
// 
//     public StackX(int s) {
//         maxSize = s;
//         stackArray = new Object[maxSize];
//         top = -1;
//     }
// 
//     public void push(T j) {
//         stackArray[++top] = j;
//     }
// 
//     public T pop() {
//         return (T) stackArray[top--];
//     }
// 
//     public T peek() {
//         return (T) stackArray[top];
//     }
// 
//     public boolean isEmpty() {
//         return (top == -1);
//     }
// 
//     public int size() {
//         return top + 1;
//     }
// 
//     public T peekN(int n) {
//         return (T) stackArray[n];
//     }
// 
//     public void displayStack(String s) {
//         System.out.print(s);
//         System.out.print("Stack(bottom->top):");
//         for (int j = 0; j < size(); j++) {
//             System.out.print(peekN(j) + " ");
//         }
//         System.out.println();
//     }
// }


// Path: src/main/java/cn/codepub/algorithms/stack/PostfixApp.java
import cn.codepub.algorithms.utils.StackX;
import java.io.BufferedReader;
import java.io.InputStreamReader;

            System.out.print("Enter postfix:");
            System.out.flush();
            input = getString();
            if (input.equals("")) {
                break;
            }
            ParsePost aParse = new ParsePost(input);
            output = aParse.doParse();
            System.out.println("Evaluates to " + output);
        }
    }

    public static String getString() throws Exception {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader buf = new BufferedReader(isr);
        String s = buf.readLine();
        return s;
    }
}


class ParsePost {
    private StackX<Integer> theStack;
    private String input;

    public ParsePost(String s) {
        input = s;
    }

    public int doParse() {

        theStack = new StackX<Integer>(20);
