anchor.diff:  
   newCollection
       :   '[' expressionList? ']'     # newArray
  -    |   LBRACE keyValueList? RBRACE  # newDict
  +    |   LBRACE keyValueList? RBRACE # newDict
       // array errors:
       |   '[' expressionList? ']' { NotifyErrorListeners("Too many brackets"); } ']' # newArrayError
       |   '[' expressionList?     { NotifyErrorListeners("Missing closing ']'"); }   # newArrayError
  
positive.code:     :   '{%' 'endif' '%}'
      ;
  
  expr:   <assoc=right> left=expr '^' right=expr      # powExpr
      |   op=(MINUS|NOT) expr                         # unaryExpr 
      |   left=expr op=('*' | '/' | '%') right=expr   # mulDivModExpr
      |   left=expr op=('+'|'-') right=expr           # addSubExpr
      |   left=expr op=('<'|'>'|'<='|'>=') right=expr # relationalExpr
  
negative.code: /**
   * Display something in the text (variable, expression, function return, ...)
   **/
  display
      : '{{' expr '}}'
      ;
  
  command
      :   '{%' 'set' variable ('='|'to') expr '%}'    # assignStmt
      |   '{%' COMMAND expressionList? '%}'           # langCmd // {% formatted on %}, {% br %}, ...
      ;
  
  funcCall
  