anchor.diff:        case $minus:
           var next = _scanner.peekChar(1);
           if (_isDigit(next) || next == $dot) return _number();
  -
  -        if (_isNameStart(next) || next == $dash || next == $backslash) {
  -          return _identifierLike();
  -        }
  +        if (_lookingAtInterpolatedIdentifier()) return _identifierLike();
   
           return _unaryOperator();
   
         default:
  -        if (first == null) return null;
  +        if (first == null) _scanner.error("Expected expression.");
   
           if (_isNameStart(first) || first == $backslash) {
             return _identifierLike();
           }
           if (_isDigit(first)) return _number();
  -        return null;
  +
  +        _scanner.error("Expected expression");
  +        throw "Unreachable";
       }
     }
   
  
positive.code: 
    // ## Utilities
  
    /// Based on [the CSS algorithm][], but also considers interpolation to be
    /// valid in an identifier.
    ///
    /// [the CSS algorithm]: https://drafts.csswg.org/css-syntax-3/#would-start-an-identifier
    bool _lookingAtInterpolatedIdentifier() {
      var first = _scanner.peekChar();
      if (_isNameStart(first)) return true;
      if (first == $backslash) return !_isNewline(_scanner.peekChar(1));
      if (first == $hash) return _scanner.peekChar(1) == $lbrace;
  
      if (first != $dash) return false;
  
      var second = _scanner.peekChar();
      if (_isNameStart(second)) return true;
      if (second == $hash) return _scanner.peekChar(2) == $lbrace;
      return second == $backslash && !_isNewline(_scanner.peekChar(2));
    }
  
    String _rawText(void consumer()) {
  
negative.code:       (character >= $a && character <= $f) ||
        (character >= $A && character <= $F);
  
    bool _isExpressionStart(int character) =>
        character == $lparen || character == $slash || character == $dot ||
        character == $lbracket || character == $single_quote ||
        character == $double_quote || character == $hash || character == $plus ||
        character == $minus || character == $backslash ||
        _isNameStart(character) || _isDigit(character);
  
    int _asHex(int character) {
      if (character <= $9) return character - $0;
      if (character <= $F) return 10 + character - $A;
  