Package org.qdl_lang.expressions
Class ComparisonDyad
- java.lang.Object
-
- org.qdl_lang.expressions.ExpressionImpl
-
- org.qdl_lang.expressions.Dyad
-
- org.qdl_lang.expressions.ComparisonDyad
-
- All Implemented Interfaces:
Serializable
,ExpressionNode
,ExpressionInterface
,HasResultInterface
,Statement
public class ComparisonDyad extends Dyad
Dyad that compares the arguments, such as with comparisons, regex matching and types of equality.Created by Jeff Gaynor
on 10/26/21 at 12:34 PM- 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 ComparisonDyad(int operatorType)
ComparisonDyad(int operatorType, ExpressionNode leftNode, ExpressionNode rightNode)
ComparisonDyad(int operatorType, TokenPosition tokenPosition)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
evaluate(State state)
protected ComparisonDyad
getLeftCD()
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.protected Object
handleEquals(State state)
In this case, we have A == B or A != B.protected boolean
isLeftArgCD()
protected boolean
isOpEquality()
protected ExpressionInterface
leftmostNode()
protected Object
newEvaluate(State state)
-
Methods inherited from class org.qdl_lang.expressions.Dyad
getLeftArgument, getRightArgument, isUnary, makeCopy, setLeftArgument, setRightArgument, setUnary
-
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
-
ComparisonDyad
public ComparisonDyad(int operatorType, TokenPosition tokenPosition)
-
ComparisonDyad
public ComparisonDyad(int operatorType)
-
ComparisonDyad
public ComparisonDyad(int operatorType, ExpressionNode leftNode, ExpressionNode rightNode)
-
-
Method Detail
-
isLeftArgCD
protected boolean isLeftArgCD()
-
getLeftCD
protected ComparisonDyad getLeftCD()
-
isOpEquality
protected boolean isOpEquality()
-
handleEquals
protected Object handleEquals(State state)
In this case, we have A == B or A != B. Complications is that A or B may be comparison dyads. So there are 4 cases to handle- Parameters:
state
-- Returns:
-
leftmostNode
protected ExpressionInterface leftmostNode()
-
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).- Specified by:
getNodeType
in interfaceExpressionInterface
- Overrides:
getNodeType
in classDyad
- Returns:
-
-