public override AssociativeNode VisitInlineConditionalNode(InlineConditionalNode node) { var newCondition = node.ConditionExpression.Accept(this); if (node.ConditionExpression != newCondition) { node.ConditionExpression = newCondition; } var newTrueExpr = node.TrueExpression.Accept(this); if (node.TrueExpression != newTrueExpr) { node.TrueExpression = newTrueExpr; } var newFalseExpr = node.FalseExpression.Accept(this); if (node.FalseExpression != newFalseExpr) { node.FalseExpression = newFalseExpr; } return(node); }
public virtual bool VisitInlineConditionalNode(InlineConditionalNode node) { node.ConditionExpression.Accept(this); node.TrueExpression.Accept(this); node.FalseExpression.Accept(this); return(true); }
public override bool VisitInlineConditionalNode(InlineConditionalNode node) { if (forDefinition) { return(false); } return(node.ConditionExpression.Accept(this) || node.TrueExpression.Accept(this) || node.FalseExpression.Accept(this)); }
void TernaryOp(ref Node node) { InlineConditionalNode inlineConNode = new InlineConditionalNode(); Expect(35); inlineConNode.ConditionExpression = node; node = null; expr(out node); inlineConNode.TrueExpression = node; Expect(36); node = null; expr(out node); inlineConNode.FalseExpression = node; node = inlineConNode; }
public override IEnumerable <AssociativeNode> BuildOutputAst(List <AssociativeNode> inputAstNodes) { Warning(Resources.IFNodeWarningMessage, true); var lhs = GetAstIdentifierForOutputIndex(0); AssociativeNode rhs; if (IsPartiallyApplied) { var connectedInputs = Enumerable.Range(0, InPorts.Count) .Where(index => InPorts[index].IsConnected) .Select(x => new IntNode(x) as AssociativeNode) .ToList(); var functionNode = new IdentifierNode(Constants.kInlineConditionalMethodName); var paramNumNode = new IntNode(3); var positionNode = AstFactory.BuildExprList(connectedInputs); var arguments = AstFactory.BuildExprList(inputAstNodes); var inputParams = new List <AssociativeNode> { functionNode, paramNumNode, positionNode, arguments, AstFactory.BuildBooleanNode(true) }; rhs = AstFactory.BuildFunctionCall("__CreateFunctionObject", inputParams); } else { rhs = new InlineConditionalNode { ConditionExpression = inputAstNodes[0], TrueExpression = inputAstNodes[1], FalseExpression = inputAstNodes[2] }; } return(new[] { AstFactory.BuildAssignment(lhs, rhs) }); }
public virtual void VisitInlineConditionalNode(InlineConditionalNode node) { node.ConditionExpression.Accept(this); node.TrueExpression.Accept(this); node.FalseExpression.Accept(this); }
public virtual TAssociative VisitInlineConditionalNode(InlineConditionalNode node) { return(VisitAssociativeNode(node)); }