biome_css_parser 0.5.8

Biome's CSS parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
---
source: crates/biome_css_parser/tests/spec_test.rs
expression: snapshot
---
## Input

```css
.class {
	text-shadow: 0 1px rgb(0 0 0 / var(--glass-text-shadow-opacity, 5%))
}

.class {
	box-shadow: 0 0 0 1px rgb(255 255 255 / var(--glass-border-opacity, 10%)) inset,
	0 0 0 2px rgb(0 0 0 / 5%)
}

```


## AST

```
CssRoot {
    bom_token: missing (optional),
    rules: CssRuleList [
        CssQualifiedRule {
            prelude: CssSelectorList [
                CssCompoundSelector {
                    nesting_selectors: CssNestedSelectorList [],
                    simple_selector: missing (optional),
                    sub_selectors: CssSubSelectorList [
                        CssClassSelector {
                            dot_token: DOT@0..1 "." [] [],
                            name: CssCustomIdentifier {
                                value_token: IDENT@1..7 "class" [] [Whitespace(" ")],
                            },
                        },
                    ],
                },
            ],
            block: CssDeclarationOrRuleBlock {
                l_curly_token: L_CURLY@7..8 "{" [] [],
                items: CssDeclarationOrRuleList [
                    CssDeclarationWithSemicolon {
                        declaration: CssDeclaration {
                            property: CssGenericProperty {
                                name: CssIdentifier {
                                    value_token: IDENT@8..21 "text-shadow" [Newline("\n"), Whitespace("\t")] [],
                                },
                                colon_token: COLON@21..23 ":" [] [Whitespace(" ")],
                                value: CssGenericComponentValueList [
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@23..25 "0" [] [Whitespace(" ")],
                                    },
                                    CssRegularDimension {
                                        value_token: CSS_NUMBER_LITERAL@25..26 "1" [] [],
                                        unit_token: IDENT@26..29 "px" [] [Whitespace(" ")],
                                    },
                                    CssFunction {
                                        name: CssIdentifier {
                                            value_token: IDENT@29..32 "rgb" [] [],
                                        },
                                        l_paren_token: L_PAREN@32..33 "(" [] [],
                                        items: CssParameterList [
                                            CssParameter {
                                                any_css_expression: CssBinaryExpression {
                                                    left: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@33..35 "0" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@35..37 "0" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@37..39 "0" [] [Whitespace(" ")],
                                                            },
                                                        ],
                                                    },
                                                    operator_token: SLASH@39..41 "/" [] [Whitespace(" ")],
                                                    right: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssFunction {
                                                                name: CssIdentifier {
                                                                    value_token: IDENT@41..44 "var" [] [],
                                                                },
                                                                l_paren_token: L_PAREN@44..45 "(" [] [],
                                                                items: CssParameterList [
                                                                    CssParameter {
                                                                        any_css_expression: CssListOfComponentValuesExpression {
                                                                            css_component_value_list: CssComponentValueList [
                                                                                CssDashedIdentifier {
                                                                                    value_token: IDENT@45..72 "--glass-text-shadow-opacity" [] [],
                                                                                },
                                                                            ],
                                                                        },
                                                                    },
                                                                    COMMA@72..74 "," [] [Whitespace(" ")],
                                                                    CssParameter {
                                                                        any_css_expression: CssListOfComponentValuesExpression {
                                                                            css_component_value_list: CssComponentValueList [
                                                                                CssPercentage {
                                                                                    value_token: CSS_NUMBER_LITERAL@74..75 "5" [] [],
                                                                                    percent_token: PERCENT@75..76 "%" [] [],
                                                                                },
                                                                            ],
                                                                        },
                                                                    },
                                                                ],
                                                                r_paren_token: R_PAREN@76..77 ")" [] [],
                                                            },
                                                        ],
                                                    },
                                                },
                                            },
                                        ],
                                        r_paren_token: R_PAREN@77..78 ")" [] [],
                                    },
                                ],
                            },
                            important: missing (optional),
                        },
                        semicolon_token: missing (optional),
                    },
                ],
                r_curly_token: R_CURLY@78..80 "}" [Newline("\n")] [],
            },
        },
        CssQualifiedRule {
            prelude: CssSelectorList [
                CssCompoundSelector {
                    nesting_selectors: CssNestedSelectorList [],
                    simple_selector: missing (optional),
                    sub_selectors: CssSubSelectorList [
                        CssClassSelector {
                            dot_token: DOT@80..83 "." [Newline("\n"), Newline("\n")] [],
                            name: CssCustomIdentifier {
                                value_token: IDENT@83..89 "class" [] [Whitespace(" ")],
                            },
                        },
                    ],
                },
            ],
            block: CssDeclarationOrRuleBlock {
                l_curly_token: L_CURLY@89..90 "{" [] [],
                items: CssDeclarationOrRuleList [
                    CssDeclarationWithSemicolon {
                        declaration: CssDeclaration {
                            property: CssGenericProperty {
                                name: CssIdentifier {
                                    value_token: IDENT@90..102 "box-shadow" [Newline("\n"), Whitespace("\t")] [],
                                },
                                colon_token: COLON@102..104 ":" [] [Whitespace(" ")],
                                value: CssGenericComponentValueList [
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@104..106 "0" [] [Whitespace(" ")],
                                    },
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@106..108 "0" [] [Whitespace(" ")],
                                    },
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@108..110 "0" [] [Whitespace(" ")],
                                    },
                                    CssRegularDimension {
                                        value_token: CSS_NUMBER_LITERAL@110..111 "1" [] [],
                                        unit_token: IDENT@111..114 "px" [] [Whitespace(" ")],
                                    },
                                    CssFunction {
                                        name: CssIdentifier {
                                            value_token: IDENT@114..117 "rgb" [] [],
                                        },
                                        l_paren_token: L_PAREN@117..118 "(" [] [],
                                        items: CssParameterList [
                                            CssParameter {
                                                any_css_expression: CssBinaryExpression {
                                                    left: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@118..122 "255" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@122..126 "255" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@126..130 "255" [] [Whitespace(" ")],
                                                            },
                                                        ],
                                                    },
                                                    operator_token: SLASH@130..132 "/" [] [Whitespace(" ")],
                                                    right: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssFunction {
                                                                name: CssIdentifier {
                                                                    value_token: IDENT@132..135 "var" [] [],
                                                                },
                                                                l_paren_token: L_PAREN@135..136 "(" [] [],
                                                                items: CssParameterList [
                                                                    CssParameter {
                                                                        any_css_expression: CssListOfComponentValuesExpression {
                                                                            css_component_value_list: CssComponentValueList [
                                                                                CssDashedIdentifier {
                                                                                    value_token: IDENT@136..158 "--glass-border-opacity" [] [],
                                                                                },
                                                                            ],
                                                                        },
                                                                    },
                                                                    COMMA@158..160 "," [] [Whitespace(" ")],
                                                                    CssParameter {
                                                                        any_css_expression: CssListOfComponentValuesExpression {
                                                                            css_component_value_list: CssComponentValueList [
                                                                                CssPercentage {
                                                                                    value_token: CSS_NUMBER_LITERAL@160..162 "10" [] [],
                                                                                    percent_token: PERCENT@162..163 "%" [] [],
                                                                                },
                                                                            ],
                                                                        },
                                                                    },
                                                                ],
                                                                r_paren_token: R_PAREN@163..164 ")" [] [],
                                                            },
                                                        ],
                                                    },
                                                },
                                            },
                                        ],
                                        r_paren_token: R_PAREN@164..166 ")" [] [Whitespace(" ")],
                                    },
                                    CssIdentifier {
                                        value_token: IDENT@166..171 "inset" [] [],
                                    },
                                    CssGenericDelimiter {
                                        value: COMMA@171..172 "," [] [],
                                    },
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@172..176 "0" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")],
                                    },
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@176..178 "0" [] [Whitespace(" ")],
                                    },
                                    CssNumber {
                                        value_token: CSS_NUMBER_LITERAL@178..180 "0" [] [Whitespace(" ")],
                                    },
                                    CssRegularDimension {
                                        value_token: CSS_NUMBER_LITERAL@180..181 "2" [] [],
                                        unit_token: IDENT@181..184 "px" [] [Whitespace(" ")],
                                    },
                                    CssFunction {
                                        name: CssIdentifier {
                                            value_token: IDENT@184..187 "rgb" [] [],
                                        },
                                        l_paren_token: L_PAREN@187..188 "(" [] [],
                                        items: CssParameterList [
                                            CssParameter {
                                                any_css_expression: CssBinaryExpression {
                                                    left: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@188..190 "0" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@190..192 "0" [] [Whitespace(" ")],
                                                            },
                                                            CssNumber {
                                                                value_token: CSS_NUMBER_LITERAL@192..194 "0" [] [Whitespace(" ")],
                                                            },
                                                        ],
                                                    },
                                                    operator_token: SLASH@194..196 "/" [] [Whitespace(" ")],
                                                    right: CssListOfComponentValuesExpression {
                                                        css_component_value_list: CssComponentValueList [
                                                            CssPercentage {
                                                                value_token: CSS_NUMBER_LITERAL@196..197 "5" [] [],
                                                                percent_token: PERCENT@197..198 "%" [] [],
                                                            },
                                                        ],
                                                    },
                                                },
                                            },
                                        ],
                                        r_paren_token: R_PAREN@198..199 ")" [] [],
                                    },
                                ],
                            },
                            important: missing (optional),
                        },
                        semicolon_token: missing (optional),
                    },
                ],
                r_curly_token: R_CURLY@199..201 "}" [Newline("\n")] [],
            },
        },
    ],
    eof_token: EOF@201..202 "" [Newline("\n")] [],
}
```

## CST

```
0: CSS_ROOT@0..202
  0: (empty)
  1: CSS_RULE_LIST@0..201
    0: CSS_QUALIFIED_RULE@0..80
      0: CSS_SELECTOR_LIST@0..7
        0: CSS_COMPOUND_SELECTOR@0..7
          0: CSS_NESTED_SELECTOR_LIST@0..0
          1: (empty)
          2: CSS_SUB_SELECTOR_LIST@0..7
            0: CSS_CLASS_SELECTOR@0..7
              0: DOT@0..1 "." [] []
              1: CSS_CUSTOM_IDENTIFIER@1..7
                0: IDENT@1..7 "class" [] [Whitespace(" ")]
      1: CSS_DECLARATION_OR_RULE_BLOCK@7..80
        0: L_CURLY@7..8 "{" [] []
        1: CSS_DECLARATION_OR_RULE_LIST@8..78
          0: CSS_DECLARATION_WITH_SEMICOLON@8..78
            0: CSS_DECLARATION@8..78
              0: CSS_GENERIC_PROPERTY@8..78
                0: CSS_IDENTIFIER@8..21
                  0: IDENT@8..21 "text-shadow" [Newline("\n"), Whitespace("\t")] []
                1: COLON@21..23 ":" [] [Whitespace(" ")]
                2: CSS_GENERIC_COMPONENT_VALUE_LIST@23..78
                  0: CSS_NUMBER@23..25
                    0: CSS_NUMBER_LITERAL@23..25 "0" [] [Whitespace(" ")]
                  1: CSS_REGULAR_DIMENSION@25..29
                    0: CSS_NUMBER_LITERAL@25..26 "1" [] []
                    1: IDENT@26..29 "px" [] [Whitespace(" ")]
                  2: CSS_FUNCTION@29..78
                    0: CSS_IDENTIFIER@29..32
                      0: IDENT@29..32 "rgb" [] []
                    1: L_PAREN@32..33 "(" [] []
                    2: CSS_PARAMETER_LIST@33..77
                      0: CSS_PARAMETER@33..77
                        0: CSS_BINARY_EXPRESSION@33..77
                          0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@33..39
                            0: CSS_COMPONENT_VALUE_LIST@33..39
                              0: CSS_NUMBER@33..35
                                0: CSS_NUMBER_LITERAL@33..35 "0" [] [Whitespace(" ")]
                              1: CSS_NUMBER@35..37
                                0: CSS_NUMBER_LITERAL@35..37 "0" [] [Whitespace(" ")]
                              2: CSS_NUMBER@37..39
                                0: CSS_NUMBER_LITERAL@37..39 "0" [] [Whitespace(" ")]
                          1: SLASH@39..41 "/" [] [Whitespace(" ")]
                          2: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@41..77
                            0: CSS_COMPONENT_VALUE_LIST@41..77
                              0: CSS_FUNCTION@41..77
                                0: CSS_IDENTIFIER@41..44
                                  0: IDENT@41..44 "var" [] []
                                1: L_PAREN@44..45 "(" [] []
                                2: CSS_PARAMETER_LIST@45..76
                                  0: CSS_PARAMETER@45..72
                                    0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@45..72
                                      0: CSS_COMPONENT_VALUE_LIST@45..72
                                        0: CSS_DASHED_IDENTIFIER@45..72
                                          0: IDENT@45..72 "--glass-text-shadow-opacity" [] []
                                  1: COMMA@72..74 "," [] [Whitespace(" ")]
                                  2: CSS_PARAMETER@74..76
                                    0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@74..76
                                      0: CSS_COMPONENT_VALUE_LIST@74..76
                                        0: CSS_PERCENTAGE@74..76
                                          0: CSS_NUMBER_LITERAL@74..75 "5" [] []
                                          1: PERCENT@75..76 "%" [] []
                                3: R_PAREN@76..77 ")" [] []
                    3: R_PAREN@77..78 ")" [] []
              1: (empty)
            1: (empty)
        2: R_CURLY@78..80 "}" [Newline("\n")] []
    1: CSS_QUALIFIED_RULE@80..201
      0: CSS_SELECTOR_LIST@80..89
        0: CSS_COMPOUND_SELECTOR@80..89
          0: CSS_NESTED_SELECTOR_LIST@80..80
          1: (empty)
          2: CSS_SUB_SELECTOR_LIST@80..89
            0: CSS_CLASS_SELECTOR@80..89
              0: DOT@80..83 "." [Newline("\n"), Newline("\n")] []
              1: CSS_CUSTOM_IDENTIFIER@83..89
                0: IDENT@83..89 "class" [] [Whitespace(" ")]
      1: CSS_DECLARATION_OR_RULE_BLOCK@89..201
        0: L_CURLY@89..90 "{" [] []
        1: CSS_DECLARATION_OR_RULE_LIST@90..199
          0: CSS_DECLARATION_WITH_SEMICOLON@90..199
            0: CSS_DECLARATION@90..199
              0: CSS_GENERIC_PROPERTY@90..199
                0: CSS_IDENTIFIER@90..102
                  0: IDENT@90..102 "box-shadow" [Newline("\n"), Whitespace("\t")] []
                1: COLON@102..104 ":" [] [Whitespace(" ")]
                2: CSS_GENERIC_COMPONENT_VALUE_LIST@104..199
                  0: CSS_NUMBER@104..106
                    0: CSS_NUMBER_LITERAL@104..106 "0" [] [Whitespace(" ")]
                  1: CSS_NUMBER@106..108
                    0: CSS_NUMBER_LITERAL@106..108 "0" [] [Whitespace(" ")]
                  2: CSS_NUMBER@108..110
                    0: CSS_NUMBER_LITERAL@108..110 "0" [] [Whitespace(" ")]
                  3: CSS_REGULAR_DIMENSION@110..114
                    0: CSS_NUMBER_LITERAL@110..111 "1" [] []
                    1: IDENT@111..114 "px" [] [Whitespace(" ")]
                  4: CSS_FUNCTION@114..166
                    0: CSS_IDENTIFIER@114..117
                      0: IDENT@114..117 "rgb" [] []
                    1: L_PAREN@117..118 "(" [] []
                    2: CSS_PARAMETER_LIST@118..164
                      0: CSS_PARAMETER@118..164
                        0: CSS_BINARY_EXPRESSION@118..164
                          0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@118..130
                            0: CSS_COMPONENT_VALUE_LIST@118..130
                              0: CSS_NUMBER@118..122
                                0: CSS_NUMBER_LITERAL@118..122 "255" [] [Whitespace(" ")]
                              1: CSS_NUMBER@122..126
                                0: CSS_NUMBER_LITERAL@122..126 "255" [] [Whitespace(" ")]
                              2: CSS_NUMBER@126..130
                                0: CSS_NUMBER_LITERAL@126..130 "255" [] [Whitespace(" ")]
                          1: SLASH@130..132 "/" [] [Whitespace(" ")]
                          2: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@132..164
                            0: CSS_COMPONENT_VALUE_LIST@132..164
                              0: CSS_FUNCTION@132..164
                                0: CSS_IDENTIFIER@132..135
                                  0: IDENT@132..135 "var" [] []
                                1: L_PAREN@135..136 "(" [] []
                                2: CSS_PARAMETER_LIST@136..163
                                  0: CSS_PARAMETER@136..158
                                    0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@136..158
                                      0: CSS_COMPONENT_VALUE_LIST@136..158
                                        0: CSS_DASHED_IDENTIFIER@136..158
                                          0: IDENT@136..158 "--glass-border-opacity" [] []
                                  1: COMMA@158..160 "," [] [Whitespace(" ")]
                                  2: CSS_PARAMETER@160..163
                                    0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@160..163
                                      0: CSS_COMPONENT_VALUE_LIST@160..163
                                        0: CSS_PERCENTAGE@160..163
                                          0: CSS_NUMBER_LITERAL@160..162 "10" [] []
                                          1: PERCENT@162..163 "%" [] []
                                3: R_PAREN@163..164 ")" [] []
                    3: R_PAREN@164..166 ")" [] [Whitespace(" ")]
                  5: CSS_IDENTIFIER@166..171
                    0: IDENT@166..171 "inset" [] []
                  6: CSS_GENERIC_DELIMITER@171..172
                    0: COMMA@171..172 "," [] []
                  7: CSS_NUMBER@172..176
                    0: CSS_NUMBER_LITERAL@172..176 "0" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")]
                  8: CSS_NUMBER@176..178
                    0: CSS_NUMBER_LITERAL@176..178 "0" [] [Whitespace(" ")]
                  9: CSS_NUMBER@178..180
                    0: CSS_NUMBER_LITERAL@178..180 "0" [] [Whitespace(" ")]
                  10: CSS_REGULAR_DIMENSION@180..184
                    0: CSS_NUMBER_LITERAL@180..181 "2" [] []
                    1: IDENT@181..184 "px" [] [Whitespace(" ")]
                  11: CSS_FUNCTION@184..199
                    0: CSS_IDENTIFIER@184..187
                      0: IDENT@184..187 "rgb" [] []
                    1: L_PAREN@187..188 "(" [] []
                    2: CSS_PARAMETER_LIST@188..198
                      0: CSS_PARAMETER@188..198
                        0: CSS_BINARY_EXPRESSION@188..198
                          0: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@188..194
                            0: CSS_COMPONENT_VALUE_LIST@188..194
                              0: CSS_NUMBER@188..190
                                0: CSS_NUMBER_LITERAL@188..190 "0" [] [Whitespace(" ")]
                              1: CSS_NUMBER@190..192
                                0: CSS_NUMBER_LITERAL@190..192 "0" [] [Whitespace(" ")]
                              2: CSS_NUMBER@192..194
                                0: CSS_NUMBER_LITERAL@192..194 "0" [] [Whitespace(" ")]
                          1: SLASH@194..196 "/" [] [Whitespace(" ")]
                          2: CSS_LIST_OF_COMPONENT_VALUES_EXPRESSION@196..198
                            0: CSS_COMPONENT_VALUE_LIST@196..198
                              0: CSS_PERCENTAGE@196..198
                                0: CSS_NUMBER_LITERAL@196..197 "5" [] []
                                1: PERCENT@197..198 "%" [] []
                    3: R_PAREN@198..199 ")" [] []
              1: (empty)
            1: (empty)
        2: R_CURLY@199..201 "}" [Newline("\n")] []
  2: EOF@201..202 "" [Newline("\n")] []

```