anchor.diff:   */
   tree grammar SparqlT; 
   
  -options { 
  +options {
   tokenVocab=Sparql; // reuse token types
   ASTLabelType=CommonTree; // $label will have type CommonTree
   output=template; //template;
  
positive.code: 
  numericLiteral
      : u=numericLiteralUnsigned -> numericLiteral(numericLiteralUnsigned={$u.st})
      | p=numericLiteralPositive -> numericLiteral(numericLiteralUnsigned={$p.st})
      | n=numericLiteralNegative -> numericLiteral(numericLiteralUnsigned={$n.st})
      ;
  
  numericLiteralUnsigned
  
negative.code: expression
      : ^(OR e1=expression e2=expression) -> expression(operator={$OR.text}, expression1={$e1.st},  expression2={$e2.st})
      | ^(AND e1=expression e2=expression) -> expression(operator={$AND.text}, expression1={$e1.st},  expression2={$e2.st})
      | ^(EQUAL e1=expression e2=expression) -> expression(operator={"="}, expression1={$e1.st},  expression2={$e2.st})  
      | ^(NOT_EQUAL e1=expression e2=expression) -> expression(operator={"<>"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(LESS e1=expression e2=expression) -> expression(operator={"<"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(GREATER e1=expression e2=expression) -> expression(operator={">"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(LESS_EQUAL e1=expression e2=expression) -> expression(operator={"<="}, expression1={$e1.st},  expression2={$e2.st})
      | ^(GREATER_EQUAL e1=expression e2=expression) -> expression(operator={">="}, expression1={$e1.st},  expression2={$e2.st})  
      | ^(IN e1=expression e2=expression) -> expression(operator={$IN.text}, expression1={$e1.st},  expression2={$e2.st})
      | ^(NOT IN e1=expression e2=expression) -> expression(operator={"NOT IN"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(PLUS e1=expression e2=expression) -> expression(operator={"+"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(MINUS e1=expression e2=expression) -> expression(operator={"-"}, expression1={$e1.st},  expression2={$e2.st}) 
      | ^(ASTERISK e1=expression e2=expression) -> expression(operator={"*"}, expression1={$e1.st},  expression2={$e2.st})
      | ^(DIVIDE e1=expression e2=expression) -> expression(operator={"/"}, expression1={$e1.st},  expression2={$e2.st})
      | n=numericLiteralPositive -> expression(numericLiteralPositive={$n.st})
      | m=numericLiteralNegative -> expression(numericLiteralNegative={$m.st})
      | u=unaryExpression -> expression(unaryExpression={$u.st})
      ;
      
  