Class NodeFactory

  • All Implemented Interfaces:
    JepComponent, java.io.Serializable
    Direct Known Subclasses:
    LineNumberingNodeFactory

    public class NodeFactory
    extends java.lang.Object
    implements JepComponent
    This class is used to create nodes of specified types. It can be sub-classed to change the nature of how nodes are constructed. Generally there are two methods for creating nodes, methods which take an existing node and methods which take the components.
    Author:
    Rich Morris Created on 16-Nov-2003
    See Also:
    Serialized Form
    • Constructor Detail

      • NodeFactory

        public NodeFactory()
    • Method Detail

      • init

        public void init​(Jep jep)
        Description copied from interface: JepComponent
        Initialize the component. This methods is called whenever a component is added to Jep. Hence it allows components to keep track of the other components they may rely on.
        Specified by:
        init in interface JepComponent
        Parameters:
        jep - the current Jep instance
      • copyChildren

        public void copyChildren​(Node node,
                                 Node... children)
        Sets the children of node to be those specified in array.
        Parameters:
        node - the node whose children will be set.
        children - an array of nodes which will be the children of the node.
      • buildConstantNode

        public ASTConstant buildConstantNode​(java.lang.Object value)
                                      throws ParseException
        Creates an ASTConstant node with specified value. This method should be overwritten by subclasses.
        Throws:
        ParseException
      • buildConstantNode

        public ASTConstant buildConstantNode​(PostfixMathCommandI pfmc,
                                             Node... children)
                                      throws ParseException
        Creates a constant node whose result is the given function applied to the children. This method replaces non varargs methods in Jep 3.4
        Parameters:
        pfmc - the function to apply
        children - the arguments to the function, each argument should be a constant node.
        Returns:
        a new constant node
        Throws:
        ParseException
        Since:
        3.5
      • buildVariableNode

        public ASTVarNode buildVariableNode​(java.lang.String name)
                                     throws ParseException
        Build a variable node when just the name is known.
        Parameters:
        name - the name of the variable
        Returns:
        the node created
        Throws:
        ParseException
      • buildVariableNodeCheckUndeclared

        public ASTVarNode buildVariableNodeCheckUndeclared​(java.lang.String name)
                                                    throws ParseException
        Build a variable node checking for the undeclared status.
        Parameters:
        name - name of the variable
        Returns:
        a new node
        Throws:
        ParseException - if undeclared variables are not allowed and the variable does not exist
      • buildOperatorNode

        public ASTOpNode buildOperatorNode​(Operator op,
                                           Node... arguments)
                                    throws ParseException
        Builds a operator node with n arguments This method should be sub-classed. This varargs method replaces corresponding non varargs methods from Jep 3.4
        Parameters:
        op - the operator to use
        arguments - the arguments to the function.
        Returns:
        top Node of expression
        Throws:
        ParseException
        Since:
        3.5
      • buildUnfinishedOperatorNode

        public ASTOpNode buildUnfinishedOperatorNode​(Operator op)
        An unfinished node. Caller has responsibility for filling in the children.
      • buildFunctionNode

        public ASTFunNode buildFunctionNode​(java.lang.String name,
                                            PostfixMathCommandI pfmc,
                                            Node... arguments)
                                     throws ParseException
        Builds a function with n arguments. Subclasses should override this method.
        Parameters:
        name - of function.
        pfmc - PostfixMathCommand for function.
        arguments - the arguments to the function.
        Returns:
        top Node of expression
        Throws:
        ParseException
      • buildFunctionNode

        public ASTFunNode buildFunctionNode​(ASTFunNode node,
                                            Node... arguments)
                                     throws ParseException
        Builds a function with n arguments and same fun as specified in arguments.
        Parameters:
        node - the properties (name and pfmc) of this node will be copied.
        arguments - the arguments to the function.
        Returns:
        top Node of expression
        Throws:
        ParseException