Moin Moin,

I recently read the super awesome article “How Browsers Work” here:

http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

Paul Irish cleaned up the original article written by Tali Garsiel, an Israeli developer. You can find her article here:

http://taligarsiel.com/Projects/howbrowserswork1.htm

I strongly recommend all people who develop software for the web to read this article. It provides a great look behind the scenes of how browsers work. The topics are:

_ the rendering engine - processing the HTML document
_ the parser with it’s lexical and syntax analysis - the lexer (tokenizer) creating tokens and the parser constructing the pars-tree by applying syntax rules
_ the HTML parser based on a DTD
_ the resulting DOM-tree after parsing HTML
_ the parsing algorithm of the HTML Parser
_ the tokenization algorithm
_ the tree construction algorithm creating elements of the resulting DOM-tree and each of it’s token
_ CSS parsing
_ render tree construction
_ creating the layout (or reflow) out of the render tree
_ the painting process - display the content elements by traversing the created render-tree
_ the CSS2 visual model

This is a lot of stuff and actually I am reading the article the second time. Imho the biggest benefit of studying the article is the deeper understanding how all the components of a browser work together to present the resulting website.

Here are some links I extracted for further reading.

_ The webkit rendering engine used by Chrome and Safari browsers: http://www.webkit.org/

_ context free grammar:
http://en.wikipedia.org/wiki/Context-free_grammar

_ Flex parser generator:
http://en.wikipedia.org/wiki/Flex_lexical_analyser

_ Bison parser generator:
http://www.gnu.org/software/bison/

_ HTML5 specification:
http://dev.w3.org/html5/spec/Overview.html

_ WHATWG community working on HTML:
http://www.whatwg.org/

_ parsing HTML:
http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html

_ HTML syntax:
http://www.w3.org/TR/html5/syntax.html#html-parser

_ CSS2:
http://www.w3.org/TR/CSS2/

_ CSS specification:
http://www.w3.org/TR/CSS2/grammar.html

_ CSS2 box-model:
http://www.w3.org/TR/CSS2/box.html

Some of the links are kind of lame to read in a way but still very interesting for digging deeper.

I hope you enjoy reading the article the same way I do.

Cheers

Andy