private ParserStatus ParseNOper(char c) { if (c == '^') { _tree.AddNode(new PowOperNode()); } else { _tree.AddNode(NOperNode.MakeNOperNode(c)); } _state = ParserState.NOPER; // '-' and '/' as NOPER nodes are parsed as '+' or '*', but need to be followed // by the aligning UOPER node. if (c == '-' || c == '/') { _tree.AddNode(UOperNode.MakeUOperNode(c)); _state = ParserState.UOPER; } return(GetSuccessState()); }
/// <summary> /// Initializes a new instance of the <see cref="UOperNodeAlreadyHasChildException"/> class. /// </summary> /// <param name="node">The <see cref="UOperNode"/> throwing.</param> public UOperNodeAlreadyHasChildException(UOperNode node) : base(node, MESSAGE) { }
/// <summary> /// Initializes a new instance of the <see cref="UnaryFuncParser"/> class. /// </summary> /// <param name="node">The node to create.</param> public UnaryFuncParser(UOperNode node) { _node = node; _childParser = new DefaultParser(); }
/// <summary> /// Executes operation on a <see cref="UOperNode"/>. /// </summary> /// <param name="node">The <see cref="UOperNode"/> to execute operation on.</param> /// <returns>The result of the operation on a <see cref="UOperNode"/>.</returns> public virtual ExpNode Execute(UOperNode node) => Execute((OperNode)node);
/// <summary> /// Prints a <see cref="UOperNode"/>. /// </summary> /// <param name="node">The <see cref="UOperNode"/> to print.</param> /// <returns>The <see cref="UOperNode"/> printed to a string.</returns> public virtual string Print(UOperNode node) => Print((OperNode)node);