function tokenCComment(stream, state) {
      var maybeEnd = false,
        ch;
      while ((ch = stream.next()) != null) {
        if (maybeEnd && ch == '/') {
          state.tokenize = tokenBase;
          break;
        }
        maybeEnd = ch == '*';
      }
      return ret('comment', 'comment');
    }
/

      var ch = stream.next();
      if (ch == '@') {
        stream.eatWhile(/[\w\\\-]/);
        return ret('meta', stream.current());
      } else if (ch == '/' && stream.eat('*')) {
        state.tokenize = tokenCComment;
        return tokenCComment(stream, state);
      } else if (ch == '<' && stream.eat('!')) {
        state.tokenize = tokenSGMLComment;
        return tokenSGMLComment(stream, state);
      } else if (ch == '=') ret(null, 'compare');
      else if ((ch == '~' || ch == '|') && stream.eat('=')) return ret(null, 'compare');
      else if (ch == '"' || ch == "'") {
        state.tokenize = tokenString(ch);
        return state.tokenize(stream, state);
      } else if (ch == '#') {
        stream.skipToEnd();
        return ret('comment', 'comment');
      } else if (ch == '!') {
        stream.match(/^\s*\w