multiplicativeExpression method
Parser
multiplicativeExpression(
)
override
Implementation
@override
Parser multiplicativeExpression() =>
super.multiplicativeExpression().map((c) {
Expression left = c[0];
for (var item in c[1]) {
Expression right = item[1];
if ((item[0] is List) &&
(item[0][0].value == '~') &&
(item[0][1].value == '/')) {
left = IntegerDivisionNumberExpression(
left as Expression<Number>, right as Expression<Number>);
continue;
}
if (item[0].value == '*') {
if (left is Expression<Number> && right is Expression<Number>) {
left = MultiplyNumberExpression(left, right);
continue;
}
if (left is Expression<Duration> && right is Expression<Integer>) {
left = MultiplyDurationExpression(left, right);
continue;
}
}
if (item[0].value == '/') {
if (left is Expression<Number> && right is Expression<Number>) {
left = DivisionNumberExpression(left, right);
continue;
}
if (left is Expression<Duration> && right is Expression<Integer>) {
left = DivisionDurationExpression(left, right);
continue;
}
continue;
}
if (item[0].value == '%') {
left = ModuloExpression(
left as Expression<Number>, right as Expression<Number>);
continue;
}
throw UnknownExpressionTypeException(
'Unknown multiplicative expression type');
}
return left;
});