11<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
22<html lang="en">
3- <!-- $Id: grammar.src,v 1.7 1997-09-23 14:15:32 ian Exp $ -->
3+ <!-- $Id: grammar.src,v 1.8 1997-09-30 18:31:28 bbos Exp $ -->
44<HEAD>
55<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
66<TITLE>Appendix D: The grammar of CSS2</TITLE>
@@ -57,8 +57,8 @@ ruleset
5757selector
5858 : simple_selector [ '~'? simple_selector]*
5959 [ pseudo_element | solitary_pseudo_element ]?
60- | solitary_pseudo_element
61- ;
60+ | solitary_pseudo_element
61+ ;
6262 /* An "id" is an ID that is attached to an element type
6363 ** on its left, as in: P#p007
6464 ** A "solitary_id" is an ID that is not so attached,
@@ -67,17 +67,23 @@ selector
6767 */
6868simple_selector
6969 : predecessor? element_name id? class* attribs? pseudo_class?
70- predecessor id class* attribtes? pseudo_class? /* eg: /H1/ #xyz33 */
71- predecessor class* attribs? pseudo_class? /* eg: /H1/ .author*/
72- predecessor attribs pseudo_class? /* eg: /H1/ [align]*/
73- predecessor pseudo_class /* eg: /H1/ :link */
74- solitary_id class* pseudo_class? /* eg: #xyz33 */
75- solitary_class class* pseudo_class? /* eg: .author */
76- solitary_pseudo_class /* eg: :link */
77- ;
70+ | predecessor id class* attribs? pseudo_class? /* eg: /H1/ #xyz33 */
71+ | predecessor class* attribs? pseudo_class? /* eg: /H1/ .author*/
72+ | predecessor attribs pseudo_class? /* eg: /H1/ [align]*/
73+ | predecessor pseudo_class /* eg: /H1/ :link */
74+ | solitary_id class* pseudo_class? /* eg: #xyz33 */
75+ | solitary_class class* pseudo_class? /* eg: .author */
76+ | solitary_pseudo_class /* eg: :link */
77+ ;
78+ predecessor
79+ : '/' element_name '/'
80+ ;
7881element_name
7982 : IDENT
8083 ;
84+ attribs
85+ : [ IDENT [ [ '=' | '==' ] STRING ]? ]+
86+ ;
8187pseudo_class /* as in: A:link */
8288 : LINK_PSCLASS_AFTER_IDENT
8389 | VISITED_PSCLASS_AFTER_IDENT
0 commit comments