Skip to content

Commit 0b5c2b1

Browse files
committed
[css3-syntax] Split up some parsing railroad diagrams.
1 parent 91d6e29 commit 0b5c2b1

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

css3-syntax/Diagrams.src.html

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,19 +176,24 @@ <h3>Parsing</h3>
176176
NT('Style rule'), NT('At-rule'), NT('WHITESPACE'), NT('CDO'), NT('CDC')))));
177177

178178
add('Style rule', Diagram(
179+
NT('Style rule prelude'),
180+
NT('{'), NT('Declaration/at-rule list'), NT('}')));
181+
182+
add('Style rule prelude', Diagram(
179183
Optional(Sequence(
180184
NT('Component value, except AT-KEYWORD or {} block'),
181-
ZeroOrMore(NT('Component value, except {} block')))), // selector
182-
NT('{'), NT('Declaration/at-rule list'), NT('}')));
185+
ZeroOrMore(NT('Component value, except {} block'))))));
183186

184187
add('At-rule', Diagram(
185-
NT('AT-KEYWORD'),
186-
ZeroOrMore(NT('Component value, except SEMICOLON or {} block')),
188+
NT('AT-KEYWORD'), NT('At-rule prelude'),
187189
Choice(0,
188190
Sequence(NT('{'), NT('Declaration/at-rule list'), NT('}')),
189191
Sequence(NT('{'), NT('Rule list'), NT('}')),
190192
NT('SEMICOLON'))));
191193

194+
add('At-rule prelude', Diagram(
195+
ZeroOrMore(NT('Component value, except SEMICOLON or {} block'))));
196+
192197
add('Rule list', Diagram(
193198
ZeroOrMore(Choice(0, NT('Style rule'), NT('At-rule'), NT('WHITESPACE')))));
194199

@@ -206,10 +211,15 @@ <h3>Parsing</h3>
206211

207212
add('Declaration', Diagram(
208213
NT('IDENT'), NT('WS*'), NT('COLON'), NT('WS*'),
209-
ZeroOrMore(NT('Component value, except SEMICOLON or DELIM(!)')),
210-
Optional(Sequence(
211-
// XXX Mention ASCII case-insensitivity?
212-
NT('DELIM(!)'), NT('WS*'), NT('IDENT(important)')))));
214+
NT('Declaration value'),
215+
Optional(NT('!important'))));
216+
217+
add('Declaration value', Diagram(
218+
ZeroOrMore(NT('Component value, except SEMICOLON or DELIM(!)'))));
219+
220+
add('!important', Diagram(
221+
NT('DELIM(!)'), NT('WS*'),
222+
NT('IDENT(ASCII case-insensitive match for "important")')));
213223

214224
add('Component value', Diagram(Choice(0,
215225
NT("IDENT"),

0 commit comments

Comments
 (0)