equalityExpression method
Parser
equalityExpression(
)
override
Implementation
@override
Parser equalityExpression() => super.equalityExpression().map((c) {
Expression left = c[0];
if (c[1] == null) {
return left;
}
var item = c[1];
var right = item[1];
if (item[0].value == '==') {
if ((left is Expression<Number>) && (right is Expression<Number>)) {
left = EqualNumberExpression(left, right);
} else if ((left is Expression<bool>) &&
(right is Expression<bool>)) {
left = EqualBoolExpression(left, right);
} else if ((left is Expression<String>) &&
(right is Expression<String>)) {
left = EqualStringExpression(left, right);
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = EqualDateTimeExpression(left, right);
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = EqualDurationExpression(left, right);
}
} else if (item[0].value == '!=') {
if ((left is Expression<Number>) && (right is Expression<Number>)) {
left = NegateBoolExpression(EqualNumberExpression(left, right));
} else if ((left is Expression<bool>) &&
(right is Expression<bool>)) {
left = NegateBoolExpression(EqualBoolExpression(left, right));
} else if ((left is Expression<String>) &&
(right is Expression<String>)) {
left = NegateBoolExpression(EqualStringExpression(left, right));
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = NegateBoolExpression(EqualDateTimeExpression(left, right));
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = NegateBoolExpression(EqualDurationExpression(left, right));
} else {
throw UnknownExpressionTypeException(
'Unknown equality expression type');
}
}
return left;
});