public void Run(UnaryOperatorAstExpression expression) { #if DEBUG //Log($"expression = {expression}"); #endif var leftNode = new ExpressionNode(_context); leftNode.Run(expression.Left); AddCommands(leftNode.Result); CompilePushAnnotation(expression); var command = new IntermediateScriptCommand(); command.OperationCode = OperationCode.CallUnOp; command.KindOfOperator = expression.KindOfOperator; AddCommand(command); }
private void ProcessLogicalQueryOperator() { _lastIsOperator = null; //_context.Recovery(_currToken); var parser = new LogicalQueryOperationParser(_context); parser.Run(); var resultItem = parser.Result; #if DEBUG //Log($"resultItem = {resultItem}"); #endif var node = new UnaryOperatorAstExpression(); node.KindOfOperator = KindOfOperator.CallLogicalQuery; var priority = OperatorsHelper.GetPriority(node.KindOfOperator); #if DEBUG //Log($"priority = {priority}"); #endif var intermediateNode = new IntermediateAstNode(node, KindOfIntermediateAstNode.UnaryOperator, priority); AstNodesLinker.SetNode(intermediateNode, _nodePoint); var valueNode = new ConstValueAstExpression(); valueNode.Value = resultItem; var valueIntermediateNode = new IntermediateAstNode(valueNode); AstNodesLinker.SetNode(valueIntermediateNode, _nodePoint); _state = State.GotCallLogicalQueryOperator; }