Package org.qdl_lang.functions
Class LambdaDefinitionNode
- java.lang.Object
-
- org.qdl_lang.expressions.ExpressionImpl
-
- org.qdl_lang.functions.LambdaDefinitionNode
-
- All Implemented Interfaces:
Serializable
,ExpressionNode
,ExpressionInterface
,HasResultInterface
,Statement
public class LambdaDefinitionNode extends ExpressionImpl
To treat defined lambda expressions they must beedu.uiuc.ncsa.qdl.expressions.ExpressionNode
s This wraps aFunctionDefinitionStatement
, which cannot be replaced. The strategy is to swap out FDS for these at very specific places to allow for passing lambdas as arguments.Created by Jeff Gaynor
on 6/3/21 at 8:45 AM- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.qdl_lang.expressions.ExpressionImpl
arguments, result, valence
-
Fields inherited from interface org.qdl_lang.statements.ExpressionInterface
ALL_INDICES_NODE, ALT_IF_NODE, ASSIGNMENT_NODE, CLOSED_SLICE_NODE, COMPARISON_DYAD_NODE, CONSTANT_NODE, DYAD_NODE, DYADIC_FUNCTION_REFERENCE_NODE, EXPRESSION_STEM_NODE, EXPRESSION_STEM2_NODE, FUNCTION_REFERENCE_NODE, LAMBDA_DEFINITION_NODE, LIST_NODE, MODULE_NODE, MONAD_NODE, NILAD_NODE, OPEN_SLICE_NODE, PARENTHESIZED_NODE, PARSE_EXPRESSION_BLOCK_NODE, PARSE_STATEMENT_BLOCK_NODE, POLYAD_NODE, QDL_NULL_NODE, SELECT_NODE, SET_NODE, STEM_ENTRY_NODE, STEM_EXTRACTION_NODE, STEM_NODE, UNKNOWN_NODE, VARIABLE_NODE
-
-
Constructor Summary
Constructors Constructor Description LambdaDefinitionNode(int operatorType)
LambdaDefinitionNode(FunctionDefinitionStatement fds)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
evaluate(State state)
FunctionRecord
getFunctionRecord()
int
getNodeType()
QDL is not strongly typed but Java is, so each node type should have a unique integer and conditionals should use that, not the instanceof operator.boolean
hasName()
boolean
isLambda()
ExpressionInterface
makeCopy()
void
setFunctionRecord(FunctionRecord functionRecord)
void
setLambda(boolean lambda)
-
Methods inherited from class org.qdl_lang.expressions.ExpressionImpl
evalArg, evalLastArg, evaluatedArgs, getAlias, getArgAt, getArgCount, getArguments, getEvaluatedArgs, getLastArg, getOperatorType, getResult, getResultType, getSourceCode, getTokenPosition, hasAlias, hasEvaluatedArgs, hasTokenPosition, isEvaluated, isSizeQuery, setAlias, setArguments, setEvaluated, setEvaluatedArgs, setOperatorType, setResult, setResultType, setSizeQuery, setSourceCode, setTokenPosition, toString
-
-
-
-
Constructor Detail
-
LambdaDefinitionNode
public LambdaDefinitionNode(FunctionDefinitionStatement fds)
-
LambdaDefinitionNode
public LambdaDefinitionNode(int operatorType)
-
-
Method Detail
-
hasName
public boolean hasName()
-
makeCopy
public ExpressionInterface makeCopy()
-
isLambda
public boolean isLambda()
-
setLambda
public void setLambda(boolean lambda)
-
getFunctionRecord
public FunctionRecord getFunctionRecord()
-
setFunctionRecord
public void setFunctionRecord(FunctionRecord functionRecord)
-
getNodeType
public int getNodeType()
Description copied from interface:ExpressionInterface
QDL is not strongly typed but Java is, so each node type should have a unique integer and conditionals should use that, not the instanceof operator. This allows for efficient programming with switch statements rather than a bevy of conditionals (potentially each of which gets done even if the correct case has been handled).- Returns:
-
-