// parse
        private string Parse()
        {
            foreach (string token in Tokens)
            {
                if (IsNumber(token))
                {
                    Stack.Push(new Number(token));
                }
                else if (token == "X")
                {
                    Stack.Push(new Number(token));
                }
                else if (IsUnary(token))
                {
                    Stack.Push(UnaryExpr.Create(Stack, token));
                }
                else
                {
                    Stack.Push(BinExpr.Create(Stack, token));
                }
            }

            StringBuilder sb = new StringBuilder();

            Stack.Pop().Write(sb);
            return(sb.ToString());
        }