public void EvaluatePostFixString()
        {
            // Arrange
            string postFixString = " 6 m 1 m 5 - m / 1 m +  "; // == -6/-(-1-5)+-1 (infix)
            PostfixEvaluator pe = new PostfixEvaluator();

            // Act
            decimal result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(-2m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            // Arrange
            postFixString = " 6 m 1 m 5 - m / 1 p +  "; // == -6/-(-1-5)++1 (infix)

            // Act
            result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(0m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            // Arrange
            postFixString = "3 4 2 * 1 5 - 2 3 ^ ^ / +"; // 3 + 4 * 2 / (1 - 5) ^ 2 ^ 3 (infix)

            // Act
            result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(3.0001220703125m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            // Arrange
            postFixString = "1 1 + 1 + 1 +"; // 1+(1)+(1)+1 (infix)

            // Act
            result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(4m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            // Arrange
            postFixString = "1 1 m + 1 m + 1 +"; // 1+(-1)+(-1)+1 (infix)

            // Act
            result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(0m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            // Arrange
            postFixString = "1 1 m -"; // (1)-(-1) (infix)

            // Act
            result = pe.Evaluate(postFixString);

            // Assert
            Assert.AreEqual(2m, result, string.Format("Evaluation of \"{0}\" failed!", postFixString));

            //
        }
        private void button2_Click(object sender, EventArgs e)
        {
            tbTokenOutput.AppendText(string.Format("PostfixEvaluation:{0}", Environment.NewLine));

            try
            {
                PostfixEvaluator eva = new PostfixEvaluator();
                var result = eva.Evaluate(tbPostfix.Text);
                tbResult.Text = result.ToString();
            }
            catch (Exception ex)
            {
                tbResult.Text = string.Format("Error: {0}{1}", ex.Message, Environment.NewLine);
                tbTokenOutput.AppendText(tbResult.Text);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                ShowTokens();

                InfixToPostfixConverter conv = new InfixToPostfixConverter(new Tokenizer());
                var postfix = conv.Convert(tbSource.Text);
                tbPostfix.Text = postfix;

                PostfixEvaluator eva = new PostfixEvaluator();
                var result = eva.Evaluate(postfix);
                tbResult.Text = result.ToString();
            }
            catch (Exception ex)
            {
                tbResult.Text = string.Format("Error: {0}{1}", ex.Message, Environment.NewLine);
                tbTokenOutput.AppendText(tbResult.Text);
            }
        }