@@ -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
120120add ( '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
181181document . getElementsByTagName ( 'textarea' ) [ 0 ] . value = '\t' + preview . outerHTML
@@ -190,78 +190,53 @@ <h3>Parsing</h3>
190190var NT = NonTerminal
191191
192192add ( '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+
196199add ( '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
203203add ( '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
220217add ( '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
225221add ( '!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
230226add ( '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
263238add ( 'Function block' , Diagram (
264- NT ( 'FUNCTION ' ) ,
239+ NT ( '〈function〉 ' ) ,
265240 ZeroOrMore ( NT ( 'Component value' ) ) ,
266241 ')' ) ) ;
267242
0 commit comments