In few words, I take the Input in "Infix Notation" and I convert it in Reverse Polish Notation (RPN), and then the RPN string is evaluated.
First Example: Evaluating a simple Math Expression.
string expr = "10 + 5 - (2 + (3 * 4) + (5 * 3)) - 4 ^ 2 << 8";
Operation operation = new MyTokener().Parser(expr);
Console.WriteLine("{0} = {1}", expr, operation.Evaluate());
Second Example: Evaluating a simple Math Expression with variables.
Dictionaryvars = new Dictionary ();
vars.Add("A", "1"); vars.Add("B", "2");
vars.Add("C", "3"); vars.Add("D", "4");
vars.Add("K", "5"); vars.Add("L", "6");
string expr = "(A + B) + C + (D * (K + (L - 1)))";
Operation operation = new MyTokener().Parser(expr);
Console.WriteLine("{0} = {1}", expr, operation.Evaluate());
Third example: Evaluating simple String expression.
string expr = "'Hello' + ' ' * 3 + \"World\"";
Operation operation = new MyTokener().Parser(expr);
Console.WriteLine("{0} = {1}", expr, operation.Evaluate());
After the Example you can find the Source Code Here (You can compile it under Linux with gmcs).
That's all folks! I'm really busy with the Real Work, I'm waiting the 25th for taking a break.
Thanks, that is exactly what I am looking for.
ReplyDeleteIt is perfect. Thanks
ReplyDelete