@@ -440,36 +440,73 @@ mediaQueryList
440
440
;
441
441
442
442
mediaQuery
443
- :
444
- (mediaQueryOperator ws? )? mediaType ((ws? key_and) => ws? key_and ws? mediaExpression ) *
445
- | mediaExpression ((ws? key_and)=> ws? key_and ws? mediaExpression ) *
443
+ :
444
+ mediaCondition
445
+ | (mediaQueryOperator ws? )? mediaType ((ws? key_and) => ws? key_and ws? mediaConditionWithoutOr)?
446
446
| { isLessSource()} ? cp_variable
447
447
;
448
448
449
449
mediaQueryOperator
450
- : key_only | NOT
451
- ;
450
+ :
451
+ key_only | NOT
452
+ ;
453
+
454
+ mediaCondition
455
+ :
456
+ (NOT ws?) mediaInParens // media-not
457
+ | mediaInParens (ws? (
458
+ ws? key_and ws? mediaInParens // media-and
459
+ | ws? key_or ws? mediaInParens // media-or
460
+ )
461
+ )*
462
+ | LPAREN ws* RPAREN
463
+ ;
464
+
465
+ mediaConditionWithoutOr
466
+ :
467
+ (NOT ws?) mediaInParens // media-not
468
+ | mediaInParens (ws? key_and ws? mediaInParens)* // media-and
469
+ | (HASH) => { isCssPreprocessorSource()} ? sass_interpolation_expression_var
470
+ ;
471
+
472
+ mediaInParens:
473
+ LPAREN ws? (mediaCondition | mediaExpression) ws? RPAREN
474
+ ;
452
475
453
476
mediaType
454
477
: IDENT | GEN | { isCssPreprocessorSource()} ? sass_interpolation_expression_var
455
478
;
456
479
457
480
mediaExpression
458
481
:
459
- (LPAREN) => (LPAREN ws? mediaFeature mediaFeatureValue? ws? RPAREN)
482
+ mediaFeature (ws? (COLON | mediaComparisonOperator) ws? mediaFeatureValue)?
483
+ | mediaFeatureRangeContext
460
484
| (HASH) => { isCssPreprocessorSource()} ? sass_interpolation_expression_var
461
485
;
462
486
463
- mediaFeatureValue
464
- :
465
- ws? COLON ws?
466
- (
467
- { isCssPreprocessorSource()} ? cp_expression
468
- |
469
- expression
470
- )
487
+ mediaComparisonOperator
488
+ :
489
+ OPEQ | LESS | LESS_OR_EQ | GREATER | GREATER_OR_EQ
490
+ ;
491
+
492
+ mediaRangeExplicitValue
493
+ : LENGTH | EMS | REM | RESOLUTION | EXS | DIMENSION
471
494
;
472
495
496
+ mediaFeatureValue
497
+ :
498
+ mediaRangeExplicitValue
499
+ | { isCssPreprocessorSource()} ? cp_expression
500
+ | expression
501
+ ;
502
+
503
+ mediaFeatureRangeContext
504
+ :
505
+ (mediaFeatureValue ws? (LESS | LESS_OR_EQ) ) => mediaFeatureValue ws? (LESS | LESS_OR_EQ) ws? mediaFeature (ws? (LESS | LESS_OR_EQ) ws? mediaFeatureValue)?
506
+ | (mediaFeatureValue ws? (GREATER | GREATER_OR_EQ) ) => mediaFeatureValue ws? (GREATER | GREATER_OR_EQ) ws? mediaFeature (ws? (GREATER | GREATER_OR_EQ) ws? mediaFeatureValue)?
507
+ | mediaFeatureValue ws? OPEQ ws? mediaFeature
508
+ ;
509
+
473
510
mediaFeature
474
511
: IDENT | GEN | { isCssPreprocessorSource()} ? ( cp_variable | sass_interpolation_expression_var )
475
512
;
0 commit comments