Skip to content

Commit 90f0b05

Browse files
committed
[css-syntax] Update railroad diagram to formatting/naming changes.
1 parent 5a4fe20 commit 90f0b05

3 files changed

Lines changed: 398 additions & 528 deletions

File tree

css-syntax/Diagrams.src.html

Lines changed: 45 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -70,26 +70,26 @@ <h3>Parsing</h3>
7070
OneOrMore(NonTerminal('hex digit'), Comment('1-6 times')),
7171
Optional(NonTerminal('whitespace character'), 'skip')))));
7272

73-
add('WHITESPACE', Diagram(OneOrMore(NonTerminal('whitespace character'))));
73+
add('〈whitespace〉', Diagram(OneOrMore(NonTerminal('whitespace character'))));
7474

75-
add('IDENT', Diagram(
75+
add('〈ident〉', Diagram(
7676
Choice(0, Skip(), '-'),
7777
Choice(0, NonTerminal('a-z A-Z _ or non-ASCII'), NonTerminal('escape')),
7878
ZeroOrMore(Choice(0,
7979
NonTerminal('a-z A-Z 0-9 _ - or non-ASCII'), NonTerminal('escape')))));
8080

81-
add('FUNCTION', Diagram(
82-
NonTerminal('IDENT'), '('));
81+
add('〈function〉', Diagram(
82+
NonTerminal('〈ident〉'), '('));
8383

84-
add('AT-KEYWORD', Diagram(
85-
'@', NonTerminal('IDENT')));
84+
add('〈at-keyword〉', Diagram(
85+
'@', NonTerminal('〈ident〉')));
8686

87-
add('HASH', Diagram(
87+
add('〈hash〉', Diagram(
8888
'#', OneOrMore(Choice(0,
8989
NonTerminal('a-z A-Z 0-9 _ - or non-ASCII'),
9090
NonTerminal('escape')))));
9191

92-
add('STRING', Diagram(
92+
add('〈string〉', Diagram(
9393
Choice(0,
9494
Sequence(
9595
'"',
@@ -108,21 +108,21 @@ <h3>Parsing</h3>
108108
Sequence('\\', NonTerminal('newline')))),
109109
'\''))));
110110

111-
add('URL', Diagram(
112-
NonTerminal('IDENT(url)'),
111+
add('〈url〉', Diagram(
112+
NonTerminal('〈ident "url"〉'),
113113
'(',
114-
Optional(NonTerminal('WHITESPACE'), 'skip'),
114+
Optional(NonTerminal('〈whitespace〉'), 'skip'),
115115
Optional(Sequence(
116116
Choice(0, NonTerminal('url-unquoted'), NonTerminal('STRING')),
117-
Optional(NonTerminal('WHITESPACE'), 'skip'))),
117+
Optional(NonTerminal('〈whitespace〉'), 'skip'))),
118118
')'));
119119

120120
add('url-unquoted', Diagram(OneOrMore(
121121
Choice(0,
122122
NonTerminal('not " \' ( ) \\ whitespace or non-printable'),
123123
NonTerminal('escape')))));
124124

125-
add('NUMBER', Diagram(
125+
add('〈number〉', Diagram(
126126
Choice(1, '+', Skip(), '-'),
127127
Choice(0,
128128
Sequence(
@@ -140,13 +140,13 @@ <h3>Parsing</h3>
140140
Choice(1, '+', Skip(), '-'),
141141
OneOrMore(NonTerminal('digit'))))));
142142

143-
add('DIMENSION', Diagram(
144-
NonTerminal('NUMBER'), NonTerminal('IDENT')));
143+
add('〈dimension〉', Diagram(
144+
NonTerminal('〈number〉'), NonTerminal('〈ident〉')));
145145

146-
add('PERCENTAGE', Diagram(
147-
NonTerminal('NUMBER'), '%'));
146+
add('〈percentage〉', Diagram(
147+
NonTerminal('〈number〉'), '%'));
148148

149-
add('UNICODE-RANGE', Diagram(
149+
add('〈unicode-range〉', Diagram(
150150
Choice(0,
151151
'U',
152152
'u'),
@@ -161,21 +161,21 @@ <h3>Parsing</h3>
161161
'-',
162162
OneOrMore(NonTerminal('hex digit'), Comment('1-6 times'))))));
163163

164-
add('INCLUDE-MATCH', Diagram('~='));
164+
add('〈include-match〉', Diagram('~='));
165165

166-
add('DASH-MATCH', Diagram('|='));
166+
add('〈dash-match〉', Diagram('|='));
167167

168-
add('PREFIX-MATCH', Diagram('^='));
168+
add('〈prefix-match〉', Diagram('^='));
169169

170-
add('SUFFIX-MATCH', Diagram('$='));
170+
add('〈suffix-match〉', Diagram('$='));
171171

172-
add('SUBSTRING-MATCH', Diagram('*='));
172+
add('〈substring-match〉', Diagram('*='));
173173

174-
add('COLUMN', Diagram('||'));
174+
add('〈column〉', Diagram('||'));
175175

176-
add('CDO', Diagram('<' + '!--'));
176+
add('〈cdo〉', Diagram('<' + '!--'));
177177

178-
add('CDC', Diagram('-' + '->'));
178+
add('〈cdc〉', Diagram('-' + '->'));
179179

180180

181181
document.getElementsByTagName('textarea')[0].value = '\t' + preview.outerHTML
@@ -190,78 +190,53 @@ <h3>Parsing</h3>
190190
var NT = NonTerminal
191191

192192
add('Stylesheet', Diagram(ZeroOrMore(Choice(3,
193-
NT('CDO'), NT('CDC'), NT('WHITESPACE'),
193+
NT('〈cdo〉'), NT('〈cdc〉'), NT('〈whitespace〉'),
194194
NT('Qualified rule'), NT('At-rule')))));
195195

196+
add('Rule list', Diagram(ZeroOrMore(Choice(1,
197+
NT('〈whitespace〉'), NT('Qualified rule'), NT('At-rule')))));
198+
196199
add('At-rule', Diagram(
197-
NT('AT-KEYWORD'), ZeroOrMore(NT('Component value')),
198-
Choice(0,
199-
Sequence(NT('{'), NT('Rule list'), NT('}')),
200-
Sequence(NT('{'), NT('Declaration/at-rule list'), NT('}')),
201-
NT('SEMICOLON'))));
200+
NT('〈at-keyword〉'), ZeroOrMore(NT('Component value')),
201+
Choice(0, NT('{} block'), ';')));
202202

203203
add('Qualified rule', Diagram(
204204
ZeroOrMore(NT('Component value')),
205-
NT('{'), NT('Declaration/at-rule list'), NT('}')));
206-
207-
add('Rule list', Diagram(ZeroOrMore(Choice(0,
208-
NT('Qualified rule'), NT('At-rule'), NT('WHITESPACE')))));
205+
'{', NT('Declaration list'), '}'));
209206

210-
add('Declaration/at-rule list', Diagram(
207+
add('Declaration list', Diagram(
211208
NT('ws*'),
212209
Choice(0,
213210
Sequence(
214211
Optional(NT('Declaration')),
215-
Optional(Sequence(NT(';'), NT('Declaration/at-rule list')))),
212+
Optional(Sequence(';', NT('Declaration list')))),
216213
Sequence(
217214
NT('At-rule'),
218-
NT('Declaration/at-rule list')))));
215+
NT('Declaration list')))));
219216

220217
add('Declaration', Diagram(
221-
NT('IDENT'), NT('ws*'), NT('COLON'), NT('ws*'),
222-
ZeroOrMore(NT('Component value')),
223-
Optional(NT('!important'))));
218+
NT('〈ident〉'), NT('ws*'), ':',
219+
ZeroOrMore(NT('Component value')), Optional(NT('!important'))));
224220

225221
add('!important', Diagram(
226-
NT('DELIM(!)'), NT('ws*'), NT('IDENT(important)'), NT('ws*')));
222+
'!', NT('ws*'), NT('〈ident "important"〉'), NT('ws*')));
227223

228-
add('ws*', Diagram(ZeroOrMore(NT('WHITESPACE'))));
224+
add('ws*', Diagram(ZeroOrMore(NT('〈whitespace〉'))));
229225

230226
add('Component value', Diagram(Choice(0,
231-
NT('IDENT'),
232-
NT('AT-KEYWORD'),
233-
NT('HASH'),
234-
NT('STRING'),
235-
NT('URL'),
236-
NT('DELIM'),
237-
NT('NUMBER'),
238-
NT('PERCENTAGE'),
239-
NT('DIMENSION'),
240-
NT('UNICODE-RANGE'),
241-
NT('INCLUDE-MATCH'),
242-
NT('DASH-MATCH'),
243-
NT('PREFIX-MATCH'),
244-
NT('SUFFIX-MATCH'),
245-
NT('SUBSTRING-MATCH'),
246-
NT('WHITESPACE'),
247-
NT('CDO'),
248-
NT('CDC'),
249-
NT('COLON'),
250-
NT('SEMICOLON'),
251-
NT('COMMA'),
252-
227+
NT('Preserved token'),
253228
NT('{} block'),
254229
NT('() block'),
255230
NT('[] block'),
256231
NT('Function block'))));
257232

258233

259-
add('{} block', Diagram(NT('{'), ZeroOrMore(NT('Component value')), NT('}')));
260-
add('() block', Diagram(NT('('), ZeroOrMore(NT('Component value')), NT(')')));
261-
add('[] block', Diagram(NT('['), ZeroOrMore(NT('Component value')), NT(']')));
234+
add('{} block', Diagram('{', ZeroOrMore(NT('Component value')), '}'));
235+
add('() block', Diagram('(', ZeroOrMore(NT('Component value')), ')'));
236+
add('[] block', Diagram('[', ZeroOrMore(NT('Component value')), ']'));
262237

263238
add('Function block', Diagram(
264-
NT('FUNCTION'),
239+
NT('〈function〉'),
265240
ZeroOrMore(NT('Component value')),
266241
')'));
267242

0 commit comments

Comments
 (0)