Skip to content

Commit 9647b22

Browse files
committed
[css3-syntax] Fix the diagrams (source only) to match normative text.
* Disallow \ in unquoted URLs * Explicitly allow escaped newlines but not unescaped newlines in quoted strings * Allow escape in HASH * Define escape This only changes Diagrams.src.html, not the spec.
1 parent 8c69e9b commit 9647b22

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

css3-syntax/Diagrams.src.html

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ <h2 id=markup>Markup</h2>
3535
preview.appendChild(document.createTextNode('\n\n\t'));
3636
}
3737

38+
add('escape', Diagram(
39+
'\\', Choice(0,
40+
NonTerminal('not NL or hex digit'),
41+
Sequence(
42+
OneOrMore(NonTerminal('hex digit'), Comment('1-6 times')),
43+
Optional(NonTerminal('WS'))))));
44+
3845
add('IDENT', Diagram(
3946
Choice(0, Skip(), '-'),
4047
Choice(0, NonTerminal('a-z A-Z _ or non-ASCII'), NonTerminal('escape')),
@@ -48,23 +55,27 @@ <h2 id=markup>Markup</h2>
4855
'@', NonTerminal('IDENT')));
4956

5057
add('HASH', Diagram(
51-
'#', OneOrMore(NonTerminal('a-z A-Z 0-9 _ - or non-ASCII'))));
58+
'#', OneOrMore(Choice(0,
59+
NonTerminal('a-z A-Z 0-9 _ - or non-ASCII'),
60+
NonTerminal('escape')))));
5261

5362
add('STRING', Diagram(
5463
Choice(0,
5564
Sequence(
5665
'"',
5766
ZeroOrMore(
5867
Choice(0,
59-
NonTerminal('not " or \\'),
60-
NonTerminal('escape'))),
68+
NonTerminal('not " \\ or NL'),
69+
NonTerminal('escape'),
70+
Sequence('\\', NonTerminal('NL')))),
6171
'"'),
6272
Sequence(
6373
'\'',
6474
ZeroOrMore(
6575
Choice(0,
66-
NonTerminal("not \' or \\"),
67-
NonTerminal('escape'))),
76+
NonTerminal("not ' \\ or NL"),
77+
NonTerminal('escape'),
78+
Sequence('\\', NonTerminal('NL')))),
6879
'\''))));
6980

7081
add('URL', Diagram(
@@ -82,7 +93,7 @@ <h2 id=markup>Markup</h2>
8293
Optional(NonTerminal('WS')),
8394
OneOrMore(
8495
Choice(0,
85-
NonTerminal('not " \' ( ) WS or NPC'),
96+
NonTerminal('not " \' ( ) \\ WS or NPC'),
8697
NonTerminal('escape'))),
8798
Optional(NonTerminal('WS')))),
8899
')'));

0 commit comments

Comments
 (0)