| Лексема | Определение |
|---|---|
| IDENT | |
| ATKEYWORD | |
| STRING | |
| HASH | |
| NUMBER | |
| PERCENTAGE | |
| DIMENSION | |
| URI | |
| UNICODE-RANGE | |
| CDO | |
| ; | |
| { | |
| } | |
| ( | |
| ) | |
| [ | |
| ] | |
| S | |
| COMMENT | |
| FUNCTION | |
| INCLUDES | |
| DASHMATCH | |
| DELIM | любой другой символ, не совпавший с вышеприведёнными правилами |
Вышеприведённые макросы в фигурных скобках ({}) определены так:
| Макрос | Определение |
|---|---|
| ident | |
| name | |
| nmstart | |
| nonascii | |
| unicode | |
| escape | |
| nmchar | |
| num | |
| string | |
| string1 | |
| string2 | |
| nl | |
| w |
Ниже дан синтаксис ядра CSS. В последующих разделах описывается, как этот синтаксис использовать. Приложение D описывает более ограниченный набор грамматических правил исключительно для уровня 2 языка CSS.
stylesheet : [ CDO | CDC | S | statement ]*;
statement : ruleset | at-rule;
at-rule : ATKEYWORD S* any* [ block | ';' S* ];
block : '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
ruleset : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;
selector : any+;
declaration : property ':' S* value;
property : IDENT S*;
value : [ any | block | ATKEYWORD S* ]+;
any : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING
| DELIM | URI | HASH | UNICODE-RANGE | INCLUDES
| FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
Лексемы КОММЕНТАРИЕВ в грамматике отсутствуют (для сохранения читабельности), но некоторое количество этих лексем может появляться где-либо среди других лексем.
Лексема S в вышеприведённой грамматике стоит вместо пробела. Только символы "space" (Unicode code 32), "tab" (9), "line feed" (10), "carriage return" (13) и "form feed" (12) могут служить пробелами. Другие "пробелоподобные" символы, такие как "em-space" (8195) и "ideographic space" (12288), никогда не могут быть пробелами.
Ключевые слова имеют форму
red
это ключевое слово, а
"red"
- нет (это
width: "auto";
border: "none";
font-family: "serif";
background: "red";
Следующие правила всегда соблюдаются:
[x].
Все таблицы стилей CSS нечувствительны к регистру, за исключением тех частей, которые не контролируются CSS. Например,