210 lines · 7.3 KB · Text
RawDownload
Expanded grammar rules====================== This file provides a fully-expanded version of (a slightly modified)forward-compatible CSS grammar. See CSS3 Syntax $4.3.2 for the compact version. start         -> ws stylesheet EOF stylesheet    -> CDO ws stylesheetstylesheet    -> CDC ws stylesheetstylesheet    -> statement stylesheetstylesheet    -> statement     -> rulesetstatement     -> at-rule ruleset       -> selector '{' ws ruleset-endruleset       -> '{' ws ruleset-end ruleset-end   -> declaration decl-list '}' wsruleset-end   -> decl-list '}' ws at-rule       -> ATKEYWORD ws any0 at-rule-end at-rule-end   -> blockat-rule-end   -> ';' ws block         -> '{' ws block-content '}' ws block-content -> any block-contentblock-content -> block block-contentblock-content -> ATKEYWORD ws block-contentblock-content -> ';' ws block-contentblock-content -> selector      -> any1 declaration   -> property ':' ws value1 decl-list     -> ';' ws decl-list-enddecl-list     -> decl-list-end -> declaration decl-listdecl-list-end -> decl-list property      -> IDENT ws value0        -> value value0value0        -> value1        -> value value0 value         -> anyvalue         -> blockvalue         -> ATKEYWORD ws any0          -> any any0any0          -> any1          -> any any0 any           -> IDENT wsany           -> NUMBER wsany           -> PERCENTAGE wsany           -> DIMENSION wsany           -> STRING wsany           -> CHAR wsany           -> URI wsany           -> HASH wsany           -> UNICODE-RANGE wsany           -> INCLUDES wsany           -> DASHMATCH wsany           -> PREFIXMATCH wsany           -> SUFFIXMATCH wsany           -> SUBSTRINGMATCH wsany           -> FUNCTION ws any0 ')' wsany           -> '(' ws any0 ')' wsany           -> '[' ws any0 ']' ws ws            -> S wsws            -> Differences from the specification---------------------------------- 1) The start non-terminal has been introduced. It eats any leading whitespace   and handles EOF.2) The "stylesheet -> S stylesheet" production has been removed.3) The "stylesheet -> CDO stylesheet" production has been changed to   "stylesheet -> CDO ws stylesheet".4) The "stylesheet -> CDC stylesheet" production has been changed to   "stylesheet -> CDC ws stylesheet". Essentially, the above changes remove the expectation of leading whitespacefrom the stylesheet non-terminal. This is handled by either the startnon-terminal, or by the changes made to the production rules for the stylesheetnon-terminal. Note that the "stylesheet -> statement stylesheet" productiondoes not require modification as the statement production rule already consumesany whitespace following the statement. If '{', '}', '[', ']', '(', ')', and ';' are omitted from any, then the abovegrammar is LL(1). Nullable productions-------------------- stylesheet, block-content, decl-list, decl-list-end, value0, any0, ws FIRST sets---------- start		CDO, CDC, S, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFstylesheet	CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORDstatement	IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORDruleset		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{'ruleset-end	IDENT, ';'at-rule		ATKEYWORDat-rule-end	'{', ';'block		'{'block-content	IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORD, ';'selector	IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '['declaration	IDENTdecl-list	';', '}'decl-list-end   IDENT, ';', '}'property	IDENTvalue0		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORDvalue1		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORDvalue		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORDany0		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '['any1		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '['any		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '['ws		S FOLLOW sets----------- startstylesheet	EOFstatement	CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFruleset		CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFruleset-end	CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFat-rule		CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFat-rule-end	CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOFblock		CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOF, ';', '}'block-content	'}'selector	'{'declaration	';', '}'decl-list	'}'decl-list-end	'}'property	':'value0		';', '}'value1		';', '}'value		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ATKEYWORD, ';', '}'any0		'{', ';', ')', ']'any1		'{'any		IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING, CHAR, URI, HASH,		UNICODE-RANGE, INCLUDES, DASHMATCH, PREFIXMATCH, SUFFIXMATCH,		SUBSTRINGMATCH, FUNCTION, '(', '[', '{', ';', ATKEYWORD, '}'ws		CDO, CDC, IDENT, NUMBER, PERCENTAGE, DIMENSION, STRING,		CHAR, URI, HASH, UNICODE-RANGE, INCLUDES, DASHMATCH,		PREFIXMATCH, SUFFIXMATCH, SUBSTRINGMATCH, FUNCTION, '(',		'[', '{', ATKEYWORD, EOF, ';', '}', ':'