Ночные сборки идеальны для выполнения статического анализа кода (см. qalab и проекты, это собирает статистику из того, если Вы находитесь в мире Java). К сожалению, это - что-то, что это редко делается.
Сопоставление отвечает на вопрос «какие селекторы соответствуют данному узлу», а не «какие узлы соответствуют селектору». Это позволяет вам просто оценивать каждую часть селектора относительно текущего узла (сравнивать имя / идентификатор / класс узла). Комбинатор потомков и наследование выполняются путем сканирования родительских узлов.
Если вам интересно, что будет дальше, в блоге WebKit есть хорошая серия: Основы рендеринга WebCore
Итак, вот немногочисленные документы:
Из вашего вопроса кажется, что вы должны сначала узнать больше о том, как должен работать CSS (например, что такое специфичность правил, вычисляемый стиль).
Вы упомянули Mozilla. Конечно, легче ответить на ваш вопрос в контексте конкретной конкретной реализации, чем в абстрактном понятии всех возможных реализаций.
[W] что структура данных или алгоритм используются для сопоставления селектора CSS с конкретным элементом DOM ... выполняется ли это с помощью хеш-таблицы?
Я полагаю, что прямой ответ на ваш вопрос для FF2 - скорее всего, находится в каталоге стилей исходного кода firefox. Поиск в этом каталоге «хеш-таблицы» дает 111 результатов в 7 файлах.
Я уверен, что хэш-таблицы широко связаны с некоторыми процессами, участвующими в отрисовке стилей CSS.
Итак, краткий ответ на ваш вопрос: «Да, но это нечто большее, чем просто хеш-таблицы».