コード例 #1
0
        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());
        }
コード例 #2
0
 /// <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)
 {
 }
コード例 #3
0
 /// <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();
 }
コード例 #4
0
ファイル: Operation.cs プロジェクト: Avid29/Calc
 /// <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);
コード例 #5
0
ファイル: Printer.cs プロジェクト: Avid29/Calc
 /// <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);