Confirmed users, Bureaucrats and Sysops emeriti
419
edits
Line 52: | Line 52: | ||
Let canAccess(o) = (principal(o) <= (stack[0] ^ ... ^ stack.top())). | Let canAccess(o) = (principal(o) <= (stack[0] ^ ... ^ stack.top())). | ||
=== Grammar === | |||
Informal HTML subset EBNF grammar with embedded <i>semantics</i>, capitalized non-terminals, and quoted or lowercase terminals. Unquoted terminals stand for the obvious lexical nonterminals, e.g. <code>tagname</code> is any valid HTML tag name other than those quoted tagnames used in the grammar (<code>button</code>, <code>iframe</code>). | |||
<pre> | |||
Document ::= Content | |||
Content ::= (text | Markup)* | |||
Markup ::= < tagname /> | |||
| < tagname > Content </ tagname > | |||
| < 'button' 'onclick' '=' string > text </ 'button' > | |||
| < 'iframe' 'src' '=' string /> | |||
</pre> |