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:     :  MINUS? NUMBER
      ;
      
  declaration
      : (propPrefix? FONT)=>fontDeclaration
      | (property WS* COLON (WS* propertyValue (WS* important)?)? WS* SEMI
      -> ^(DECLARATION property ^(PROP_VALUE propertyValue)? important?))
      ;
  
negative.code:     ;
      
  page
      : '@' PAGE_SYM (WS+ COLON pseudoPage)? WS* LBRACE WS* (pageElement WS*)* RBRACE
      -> ^(PAGE_SYM pseudoPage? pageElement*)
      ;
  
  pseudoPage
      : ident
      ;
      
  pageElement
      : mixinSelectorList WS!* SEMI!
      | declaration
      | variableDef
      ;
  
  combinator
      : WS* combinatorNonWs WS*
      | WS+
  