各ブラウザのCSSパーサの実装方法

世の中でCSSの解析をどのように実装しているのか調査を行った。
理由はhttp://qune.cside.com/archives/001118.html辺りと同じです。

  • IE - 不明。ソース見つからず。
  • FireFox - 字句解析自作&再帰下降でゴリゴリ。

  \src\layout\style\nsCSSScanner.cpp
  \src\layout\style\nsCSSParser.cpp

  http://d.hatena.ne.jp/amachang/20080502/1209732467
  http://svn.webkit.org/repository/webkit/trunk/WebCore/css/tokenizer.flex
  http://svn.webkit.org/repository/webkit/trunk/WebCore/css/CSSGrammar.y

  • Chrome - Webkitのものと同じ。以下を見る際は複数ページに分かれているので注意。

  http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/WebKit/WebCore/css/?pathrev=9900

  • Opera - 不明。ソースなし。
  • w3cCSS 検証サービス - JavaCC。ツールの都合上1つのモジュールで複数バージョンのCSSに対応

  http://dev.w3.org/cvsweb/2002/css-validator/org/w3c/css/parser/analyzer/

  • React OSのIE - I/Fだけ用意して未実装。shdocvw.dllやmshtml.dll、browseUI.dllはある模様。