relationalExpression method
Parser
relationalExpression(
)
override
Implementation
@override
Parser relationalExpression() => super.relationalExpression().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 = LessThanNumberExpression(left, right);
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = LessThanDateTimeExpression(left, right);
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = LessThanDurationExpression(left, right);
}
} else if (item[0].value == '<=') {
if ((left is Expression<Number>) && (right is Expression<Number>)) {
left = LessThanOrEqualNumberExpression(left, right);
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = LessThanOrEqualDateTimeExpression(left, right);
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = LessThanOrEqualDurationExpression(left, right);
}
} else if (item[0].value == '>') {
if ((left is Expression<Number>) && (right is Expression<Number>)) {
left = LessThanNumberExpression(right, left);
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = LessThanDateTimeExpression(right, left);
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = LessThanDurationExpression(right, left);
}
} else if (item[0].value == '>=') {
if ((left is Expression<Number>) && (right is Expression<Number>)) {
left = LessThanOrEqualNumberExpression(right, left);
} else if ((left is Expression<DateTime>) &&
(right is Expression<DateTime>)) {
left = LessThanOrEqualDateTimeExpression(right, left);
} else if ((left is Expression<Duration>) &&
(right is Expression<Duration>)) {
left = LessThanOrEqualDurationExpression(right, left);
}
} else {
throw UnknownExpressionTypeException(
'Unknown relational expression type');
}
return left;
});