Esempio n. 1
0
        public void ParseAndEvaluateTest()
        {
            var expression = SMExpressionParser.ParseOrThrow("log(10) + $aaa + abs(nolog($adc_Controller)) + 1*2");

            var simpleExpressionContext = new TestExpressionContext();
            var ev = new EvaluatorVisitor(simpleExpressionContext, new TestSymbolTable(), new DefaultFunctionContext());

            expression.Accept(ev);

            Assert.AreEqual(14.0, ev.Value, 1e-9);
        }
Esempio n. 2
0
        public void ParseAndEvaluatePerformanceTest()
        {
            var expression = SMExpressionParser.ParseOrThrow("log(10) + $aaa + abs(nolog($adc_Controller)) + 1*2");

            var simpleExpressionContext = new TestExpressionContext();
            var symbolTable             = new TestSymbolTable();

            var times = 1000000;
            var sw    = Stopwatch.StartNew();

            for (int i = 0; i < times; ++i)
            {
                var evaluator = new EvaluatorVisitor(simpleExpressionContext, symbolTable, new DefaultFunctionContext());
                expression.Accept(evaluator);
            }

            var elapsed = sw.ElapsedMilliseconds;

            Console.WriteLine($"Evaluated: {elapsed}ms");
        }