anchor.diff:        case "calc":
         case "element":
         case "expression":
  -        buffer = new InterpolationBuffer()..write(name);
  +        if (!scanner.scanChar($lparen)) return null;
  +        buffer = new InterpolationBuffer()
  +          ..write(name)
  +          ..writeCharCode($lparen);
           break;
   
         case "progid":
  
positive.code:           ..write(name)
            ..writeCharCode($colon);
          buffer.write(identifier());
          break;
  
        default:
          return null;
      }
  
      scanner.expectChar($lparen);
      buffer.writeCharCode($lparen);
      buffer.addInterpolation(_interpolatedDeclarationValue().text);
      scanner.expectChar($rparen);
      buffer.writeCharCode($rparen);
  
      return new StringExpression(
          buffer.interpolation(nameSpan.expand(scanner.emptySpan)));
    }
  
    /// Consumes tokens up to "{", "}", ";", or "!".
  
negative.code:         : new StringExpression(identifier);
    }
  
    Expression _trySpecialFunction(String name, FileSpan nameSpan) {
      var normalized = unvendor(name);
  
      InterpolationBuffer buffer;
  