anchor.diff:  booleanEquallity
       : booleanEquallity ( ( EQ | NE | LE | GE ) booleanEquallity )
       | datasetExpression
  +    | constant
       // typed constant?
       ;
   
  
positive.code: //          component as string role = MEASURE,
  //          component as string role = ATTRIBUTE
  // ]
  renameParam : from=componentRef 'as' to=componentRef ( 'role' '=' role )? ;
  
  role : ( 'IDENTIFIER' | 'MEASURE' | 'ATTRIBUTE' ) ;
  
  
negative.code:            | joinUnfoldExpression               # joinUnfoldClause
             ;
  
  joinFoldExpression      : 'fold' elements=componentRefs 'to' dimension=identifier ',' measure=identifier ;
  componentRefs : componentRef (',' componentRef)* ;
  
  joinUnfoldExpression    : 'unfold' dimension=componentRef ',' measure=componentRef 'to' elements=foldUnfoldElements ;
  // TODO: The spec writes examples with parentheses, but it seems unecessary to me.
  // TODO: The spec is unclear regarding types of the elements, we support strings only for now.
  