与HTML不同,CSS是context free grammar。语法语法通常用BNF或EBNF表示法描述。
根据Tali Garsiel的articke 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中已经很好地解释了它。所以不,这不是这个问题的重复。
我正在寻找的是Webkit用于解析/渲染CSS的特定CSS语法文件,我无法在任何地方找到它。
注2:
我也不要求任何人推荐或找到书籍,工具,软件库,教程或其他异地......
我只是想知道在哪里找到Webkit使用(或使用)解析CSS的一些文件,因为我自己无法找到它们。
注3:
我问这个是因为我正在寻找一种方便的方法来解析CSS。我希望这种方法基于浏览器解析CSS的方式(更具体地说=通过分析Webkit浏览器如何解析它)。
所以是的,这个问题确实是一个编程问题,完全是关于Stack Overflow的主题。
答案 0 :(得分:2)
bison文件(或至少是它的一个版本)在css目录中为CSSGrammar.y.in。该文件已经过预处理,然后使用a perl script运行#main-content
。
显然,灵活扫描仪于2011/12年重写;见webkit bug。手持式扫描仪是CSSParser.cpp的一部分。
通过回顾git历史记录,您可以找到旧版本。例如,在#main-content{width: calc(100% - 820px)}
中,我找到了以下bison和flex个文件。