private void SyntaxTreeTest() { var varList = new List <string>() { "a", "b", "c", "d", "e", "f", "g", "h", "i" }; Console.WriteLine("Nhập biểu thức: "); var expression = "b*a+b*(c^d-e)^(f+g*h)-i"; //expression = Console.ReadLine(); var tokenizor = new Tokenizor(); tokenizor.AddToken(varList); var infix = new List <string>(tokenizor.Tokenize(expression)); var rootNode = Interpreter.BuildTree(infix); ShowList(infix); Console.WriteLine(); BinaryTree <string> tree = new BinaryTree <string>(rootNode); tree.Traverse(); //Console.WriteLine("" + BinaryTreeNode.EvaluateExpressionTree(infix)); var dict = new Dictionary <string, double> { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 }, { "e", 5 }, { "f", 1 }, { "g", 2 }, { "h", 1 }, { "i", 4 } }; Console.WriteLine(); Console.WriteLine(Evaluator.EvaluateExpressionTree(rootNode, dict)); }
public void SyntaxStringTest() { var varList = new List <string>() { "a", "b", "c", "d", "e", "f", "g", "h", "i" }; Console.WriteLine("Nhập biểu thức: "); var expression = "b*a+b*(c^d-e)^(f+g*h)-i"; //expression = Console.ReadLine(); var tokenizor = new Tokenizor(); tokenizor.AddToken(varList); var infix = new List <string>(tokenizor.Tokenize(expression)); var postfix = Interpreter.infixToPostfix(infix); ShowList(infix); Console.WriteLine(); ShowList(postfix); //Console.WriteLine("" + BinaryTreeNode.EvaluateExpressionTree(infix)); var dict = new Dictionary <string, double> { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 }, { "e", 5 }, { "f", 1 }, { "g", 2 }, { "h", 1 }, { "i", 4 } }; Console.WriteLine(); Console.WriteLine(Evaluator.EvalPostfix(postfix, dict)); }