Package edu.hws.jcm.data
Interface ExpressionCommand
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
ConditionalExpression
,Constant
,ExpressionFunction
,FunctionParserExtension
,TableFunction
,Variable
,WrapperFunction
An ExpressionCommand can occur as a command in an ExpressionProgram. ExpressionCommands
exists so that ExprssionPrograms can be extened to include new types of operations beyond
the basic operations (such as PLUS and SIN) which are represented by constants in the
ExpressionProgram class. Examples include ConditionalExpressions and user-defined functions.
This interface is not meant for casual programmers. It is for programmers who want to
extend the notion of Expression in an orginal way.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
appendOutputString
(ExpressionProgram prog, int myIndex, StringBuffer buffer) The ExpressionCommand occurs in the program prog at the index indicated by myIndex.void
apply
(StackOfDouble stack, Cases cases) This routine is called when an ExpressionCommand object is encountered during the evaluation of an ExpressionProgram.void
compileDerivative
(ExpressionProgram prog, int myIndex, ExpressionProgram deriv, Variable wrt) The ExpressionCommand occurs in the program prog at the index indicated by myIndex.boolean
Return true if this command depends on the value of x, false otherwise.int
extent
(ExpressionProgram prog, int myIndex) The ExpressionCommand occurs in the program prog at the index indicated by myIndex.
-
Method Details
-
apply
This routine is called when an ExpressionCommand object is encountered during the evaluation of an ExpressionProgram. The stack may contain results of previous commands in the program. For example, for a ConditionalExpression, it contains the value of the boolean condition, and for a user-defined function, it contains the values of the arguments of the function. When apply() is called, the ExpressionCommand should perform any stack operations that are necessary to evaluate itself. For example, a user-defined function would remove its arguments from the stack and replace them with the value of the function at those arguments. If cases is non-null, then any case information generated during the evaluation should be recorded in cases. (See the Cases class for more information.)- Parameters:
stack
- contains results of previous commands in the program.cases
- if non-null, any case information generated during evaluation should be recorded here.
-
compileDerivative
The ExpressionCommand occurs in the program prog at the index indicated by myIndex. Add commands to deriv that will evaluate the derivative of this command with respect to the variable wrt. prog and myIndex are provided so that this routine will have access to any commands in prog that generate data used by this command (for example, the commands that evaluate the arguments of a user-defined function).- Parameters:
prog
- program in which ExpressionCommand occurs.myIndex
- point at which ExpressionCommand occurs in the ExpressionProgram.deriv
- the derivative of the ExpressionPorgram prog, which is in the process of being computed. Commands should added to deriv that will compute the derivative of this ExpressionCommand.wrt
- commands are added to deriv with respect to this Variable.
-
extent
The ExpressionCommand occurs in the program prog at the index indicated by myIndex. Return the total number of indices in prog occupied by this command and the commands that generate data used by this command.- Parameters:
prog
- ExpressionProgram in which this ExpressionCommand occurs.myIndex
- index at which ExpressionCommand occurs in prog.- Returns:
- total number of indices in prog occupied by this command and commands that generate data used by this command.
-
dependsOn
Return true if this command depends on the value of x, false otherwise. That is, when apply() is called, can the result depend on the value of x? -
appendOutputString
The ExpressionCommand occurs in the program prog at the index indicated by myIndex. Add a print string representation of the sub-expression represented by this command (including any previous commands in the program that generate data used by this command).
-