in lib/parser.dart [2140:2200]
Expressions processExpr([bool ieFilter = false]) {
var start = _peekToken.span;
var expressions = Expressions(_makeSpan(start));
var keepGoing = true;
dynamic expr;
while (keepGoing && (expr = processTerm(ieFilter)) != null) {
Expression? op;
var opStart = _peekToken.span;
switch (_peek()) {
case TokenKind.SLASH:
op = OperatorSlash(_makeSpan(opStart));
break;
case TokenKind.COMMA:
op = OperatorComma(_makeSpan(opStart));
break;
case TokenKind.BACKSLASH:
// Backslash outside of string; detected IE8 or older signaled by \9
// at end of an expression.
var ie8Start = _peekToken.span;
_next();
if (_peekKind(TokenKind.INTEGER)) {
var numToken = _next();
var value = int.parse(numToken.text);
if (value == 9) {
op = IE8Term(_makeSpan(ie8Start));
} else if (isChecked) {
_warning(
'\$value is not valid in an expression', _makeSpan(start));
}
}
break;
}
if (expr != null) {
if (expr is List<Expression>) {
for (var exprItem in expr) {
expressions.add(exprItem);
}
} else {
expressions.add(expr as Expression);
}
} else {
keepGoing = false;
}
if (op != null) {
expressions.add(op);
if (op is IE8Term) {
keepGoing = false;
} else {
_next();
}
}
}
return expressions;
}