Package edu.uiuc.ncsa.qdl.expressions
Class Polyad
- java.lang.Object
-
- edu.uiuc.ncsa.qdl.expressions.ExpressionImpl
-
- edu.uiuc.ncsa.qdl.expressions.Polyad
-
- All Implemented Interfaces:
ExpressionNode
,ExpressionInterface
,HasResultInterface
,Statement
,Serializable
public class Polyad extends ExpressionImpl
For multiple arguments. This is used, e.g., for all functions.Created by Jeff Gaynor
on 1/16/20 at 6:12 AM- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class edu.uiuc.ncsa.qdl.expressions.ExpressionImpl
arguments, result, valence
-
Fields inherited from interface edu.uiuc.ncsa.qdl.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
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addArgument(ExpressionInterface expr)
Object
evaluate(State state)
String
getName()
Human readable name for this.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
isBuiltIn()
ExpressionNode
makeCopy()
void
setBuiltIn(boolean builtIn)
void
setName(String name)
String
toString()
-
Methods inherited from class edu.uiuc.ncsa.qdl.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
-
-
-
-
Constructor Detail
-
Polyad
public Polyad()
-
Polyad
public Polyad(TokenPosition tokenPosition)
-
Polyad
public Polyad(String name)
-
Polyad
public Polyad(int operatorType)
-
-
Method Detail
-
getName
public String getName()
Human readable name for this.- Returns:
-
setName
public void setName(String name)
-
isBuiltIn
public boolean isBuiltIn()
-
setBuiltIn
public void setBuiltIn(boolean builtIn)
-
addArgument
public void addArgument(ExpressionInterface expr)
-
toString
public String toString()
- Overrides:
toString
in classExpressionImpl
-
makeCopy
public ExpressionNode makeCopy()
-
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:
-
-