anchor.diff:      ;
       
   ruleSetElement
  -    : declarationBlockElement
  -    ;
  -    
  -declarationBlockElement
  -    : (combinatorNonWs)=>innerSelectorList WS* LBRACE (WS* ruleSetElement)* WS* RBRACE    -> ^(RULESET innerSelectorList ruleSetElement*)
  -    | (selectorList WS* LBRACE)=>selectorList WS* LBRACE (WS* ruleSetElement)* WS* RBRACE -> ^(RULESET selectorList      ruleSetElement*)
  +    : (innerSelectorList WS* LBRACE)=>innerSelectorList WS* LBRACE (WS* ruleSetElement)* WS* RBRACE    -> ^(RULESET innerSelectorList ruleSetElement*)
       | (mixinSelectorList WS* SEMI)=>mixinSelectorList WS!* SEMI!
       | declaration
       | variableDef
  
positive.code:     ;
      
  page
      : '@' PAGE_SYM (WS+ COLON pseudoPage)? WS* LBRACE WS* (declarationBlockElement WS*)* RBRACE
      -> ^(PAGE_SYM pseudoPage? declarationBlockElement*)
      ;
  
  pseudoPage
      : ident
      ;
      
  combinator
      : WS* combinatorNonWs WS*
      | WS+
  
negative.code:         ( (fontStyle WS*)* fontSize (WS!* SOLIDUS WS!* lineHeight)? WS* fontFamily (WS!* COMMA WS* fontFamily)* )
          | ident
        )
      ;
      
  fontFamily
  