/// <inheritdoc/> public override string Print(SignOperNode node) { switch (node.Sign) { case Sign.POSITIVE: return($"+{node.Child.Print(this)}"); case Sign.NEGATIVE: return($"-{node.Child.Print(this)}"); default: return(node.Child.Print(this)); } }
/// <inheritdoc/> public override ExpNode Execute(SignOperNode node) { node.Child = node.Child.Execute(this); switch (node.Sign) { case Sign.POSITIVE: return(node.Child); case Sign.NEGATIVE: { if (node.Child is NumericalValueNode nvNode) { return(QuickOpers.MakeNumericalNode(nvNode.DoubleValue * -1)); } return(QuickOpers.Multiply(-1, node.Child).Execute(this)); } default: return(node); } }
/// <summary> /// Executes operation on a <see cref="SignOperNode"/>. /// </summary> /// <param name="node">The <see cref="SignOperNode"/> to execute operation on.</param> /// <returns>The result of the operation on a <see cref="SignOperNode"/>.</returns> public virtual ExpNode Execute(SignOperNode node) => Execute((UOperNode)node);
/// <inheritdoc/> public override ExpNode Execute(SignOperNode node) { node.Child = node.Child.Execute(this); return(node); }
/// <summary> /// Prints a <see cref="SignOperNode"/>. /// </summary> /// <param name="node">The <see cref="SignOperNode"/> to print.</param> /// <returns>The <see cref="SignOperNode"/> printed to a string.</returns> public virtual string Print(SignOperNode node) => Print((UOperNode)node);