anchor.diff:      |   funcCall                                    # funcCallExpr
       |   atom                                        # atomExpr
       |   variable                                    # varExpr
  -    |   { NotifyErrorListeners("Invalid expression"); } . # errorExpr
       ;
   
   expressionList
  
positive.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
  
negative.code: 
  newCollection
      :   '[' expressionList? ']'     # newArray
      |   LBRACE keyValueList? RBRACE # newDict
      // array errors:
      |   '[' expressionList? ']' { NotifyErrorListeners("Too many brackets"); } ']' # newArrayError
      |   '[' expressionList?     { NotifyErrorListeners("Missing closing ']'"); }   # newArrayError
  