public void AstNodesLinker_Tests_Case6() { var nodePoint = new IntermediateAstNodePoint(); var numNode = new TstNumberAstExpressionNode(); numNode.Value = 12; var intermediateNode = new IntermediateAstNode(numNode); AstNodesLinker.SetNode(intermediateNode, nodePoint); var binOpNode = new TstBinaryAstExpression(); binOpNode.KindOfOperator = TstKindOfOperator.Plus; var priority = GetPriority(binOpNode.Kind, binOpNode.KindOfOperator); intermediateNode = new IntermediateAstNode(binOpNode, KindOfIntermediateAstNode.BinaryOperator, priority); AstNodesLinker.SetNode(intermediateNode, nodePoint); var unaryOp = new TstUnaryAstExpression(); unaryOp.KindOfOperator = TstKindOfOperator.Minus; priority = GetPriority(unaryOp.Kind, unaryOp.KindOfOperator); intermediateNode = new IntermediateAstNode(unaryOp, KindOfIntermediateAstNode.UnaryOperator, priority); AstNodesLinker.SetNode(intermediateNode, nodePoint); unaryOp = new TstUnaryAstExpression(); unaryOp.KindOfOperator = TstKindOfOperator.Minus; priority = GetPriority(unaryOp.Kind, unaryOp.KindOfOperator); intermediateNode = new IntermediateAstNode(unaryOp, KindOfIntermediateAstNode.UnaryOperator, priority); AstNodesLinker.SetNode(intermediateNode, nodePoint); numNode = new TstNumberAstExpressionNode(); numNode.Value = 5; intermediateNode = new IntermediateAstNode(numNode); AstNodesLinker.SetNode(intermediateNode, nodePoint); var resultExr = (TstBaseAstExpression)nodePoint.BuildExpr(); var str = resultExr.GetDbgString(); Assert.AreEqual(str, "12 + - - 5"); var calcResult = resultExr.Calc(); Assert.AreEqual(calcResult, 17); }
private void Run7() { _nodePoint = new IntermediateAstNodePoint(); _logger.Info($"_nodePoint = {_nodePoint}"); var unaryOp = new TstUnaryAstExpression(); unaryOp.KindOfOperator = TstKindOfOperator.Minus; var priority = GetPriority(unaryOp.Kind, unaryOp.KindOfOperator); _logger.Info($"priority = {priority}"); var intermediateNode = new IntermediateAstNode(unaryOp, KindOfIntermediateAstNode.UnaryOperator, priority); _logger.Info($"intermediateNode = {intermediateNode}"); AstNodesLinker.SetNode(intermediateNode, _nodePoint); _logger.Info($"_nodePoint = {_nodePoint}"); var numNode = new TstNumberAstExpressionNode(); numNode.Value = 12; _logger.Info($"numNode = {numNode}"); intermediateNode = new IntermediateAstNode(numNode); _logger.Info($"intermediateNode = {intermediateNode}"); AstNodesLinker.SetNode(intermediateNode, _nodePoint); _logger.Info($"_nodePoint = {_nodePoint}"); var binOpNode = new TstBinaryAstExpression(); binOpNode.KindOfOperator = TstKindOfOperator.Plus; _logger.Info($"binOpNode = {binOpNode}"); priority = GetPriority(binOpNode.Kind, binOpNode.KindOfOperator); _logger.Info($"priority = {priority}"); intermediateNode = new IntermediateAstNode(binOpNode, KindOfIntermediateAstNode.BinaryOperator, priority); _logger.Info($"intermediateNode = {intermediateNode}"); AstNodesLinker.SetNode(intermediateNode, _nodePoint); _logger.Info($"_nodePoint = {_nodePoint}"); numNode = new TstNumberAstExpressionNode(); numNode.Value = 5; _logger.Info($"numNode = {numNode}"); intermediateNode = new IntermediateAstNode(numNode); _logger.Info($"intermediateNode = {intermediateNode}"); AstNodesLinker.SetNode(intermediateNode, _nodePoint); _logger.Info($"_nodePoint = {_nodePoint}"); var resultExr = (TstBaseAstExpression)_nodePoint.BuildExpr(); _logger.Info($"resultExr = {resultExr}"); var str = resultExr.GetDbgString(); _logger.Info($"str = '{str}'"); var calcResult = resultExr.Calc(); _logger.Info($"calcResult = {calcResult}"); }