2015-07-30 4 views
-5

В отличие от HTML, CSS - это context free grammar. Синтаксическая грамматика обычно описывается в BNF или EBNF обозначения.Где я могу найти грамматические файлы CSS Webkit?

В соответствии с Tali Garsiel артикула How Browsers Work WebKit использует Flex and Bison генераторы парсера для автоматического создания парсеров из файлов грамматики CSS.

Как Webkit - проект с открытым исходным кодом, я ожидал бы, что эти файлы грамматики можно найти где-нибудь в its source code. Однако я не смог его найти. Может кто-нибудь помочь мне здесь?


Примечание 1:

Я НЕ просят how browsers parse/render CSS/how browsers read and interpret CSS !!

Я знаю это уже. Фактически, это объясняется довольно хорошо в вышеупомянутой статье How Browsers Work. Нет, это не дубликат этого вопроса.

Что я ищу, это специальные файлы грамматики CSS, которые Webkit использует для синтаксического анализа/рендеринга CSS, которые я не смог найти нигде.


Примечание 2:

Я также НЕ просят кого рекомендовать или найти книгу, инструмент, библиотека программного обеспечения, учебник или другие вне места ... на всех.

Я просто прошу найти файлы, которые Webkit использует (или используется) для синтаксического анализа CSS, потому что я не смог их найти самостоятельно.


Примечание 3:

Я спрашиваю это потому, что я ищу удобный способ для разбора CSS. Я хочу основывать этот подход на том, как браузер анализирует CSS (более конкретно = путем анализа того, как он анализируется браузерами Webkit).

Так что да, этот вопрос действительно является вопросом программирования и полностью посвящен теме здесь в переполнении стека.

+0

Возможный дубликат [Как браузеры анализируют/отображают CSS?] (Http://stackoverflow.com/questions/5605368/how-do-browsers-parse-render-css) –

+0

@ Zeratops: Это не дубликат Http: // StackOverflow.ком/вопросы/5605368/как-Do-браузеры-синтаксический-рендеринга CSS. Это гораздо более конкретный и гораздо более технический вопрос, на который не ответил этот вопрос и для которого я тоже не могу найти ответ. –

+0

Я действительно не понимаю, почему этот вопрос вызывает так много downvotes или почему он был закрыт. –

ответ

2

Файл бизона (или, по крайней мере, его версия) находится в каталоге css как CSSGrammar.y.in. Этот файл предварительно обрабатывается, а затем выполняется через bison с использованием a perl script.

По-видимому, гибкий сканер был переписан в 2011/12; см. это webkit bug. Сканер ручной работы является частью CSSParser.cpp.

Оглядываясь назад в истории git, вы можете найти более старые версии. Например, в safari-4-branch я нашел следующие файлы bison и flex.

Смежные вопросы