예제 #1
0
        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));
        }
예제 #2
0
        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));
        }