On Wed, 07 Nov 2012 12:55:46 +0100, Jirka Kosek <ji...@kosek.cz> wrote:

Changing parser each time new element is added is really evil idea and
sign of a bad design.

Parsing algorithm should be either not touched at all, or it should be
promptly changed to treat all unknown elements in other way if the
current treatment of unknown elements is not suitable for some reason.

There are three ways to parse a new element that we probably want for new elements:

"inline" - like <span>, current behavior for unknown elements.
"block" - like <address>, currently a finite list of elements.
"void" - like <img>, currently a finite list of elements.
(Possibly also "block void", - like <hr>, although none such elements have been added since parsing was specified.)

If we were to design a system where we can make up new elements that go in one of those categories without changing the parser, I think we effectively have to put a magic string in the tag name, e.g. any element that starts with "block" is treated like <address>, but that has disadvantages:

* Looking at a substring of the tag name complicates the parser and probably ruins some optimizations. * It means new non-inline elements will have long, ugly two-word names which is inconsistent with the rest of the language.

I can imagine other designs as well but they don't seem any better.

In conclusion, I think changing the parser when we introduce a new "block" or "void" element is a better approach.

--
Simon Pieters
Opera Software

Reply via email to