anchor.diff:           | NUMBER                       # ExprNumber
            ;
   
  -// TODO: add escaping
  -string : QUOTE content+=(ALPHA|NUMBER|TAG_MARKER|COMMA|FUNCTION_MARKER|COLON|LPAREN|RPAREN|LBRACE|RBRACE|PLUS|MINUS|MULTIP|DIVIS|WS)* QUOTE
  +string : QUOTE content+=(ALPHA|NUMBER|TAG_MARKER|COMMA|FUNCTION_MARKER|COLON|LPAREN|RPAREN|LBRACE|RBRACE|PLUS|MINUS|MULTIP|DIVIS|ESCAPED_QUOTE|BACKSLASH|WS)* QUOTE
          ;
   
   ws : WS*
  
positive.code: DIVIS : '/';
  WS : [ \n\r\t];
  NUMBER : ('0'|[1-9][0-9]*)('.'[0-9]+)?;
  ALPHA : ~(','|':'|'('|')'|'{'|'}'|'"'|' '|'+'|'-'|'*'|'/'|'\n'|'\r'|'\t')+;
  
  
negative.code: tagIdens : names+=ALPHA(ALPHA|NUMBER)* (ws COMMA ws names+=ALPHA(ALPHA|NUMBER)*)*
           ;
  
  text : content+=(ALPHA|NUMBER|COMMA|COLON|QUOTE|LPAREN|RPAREN|LBRACE|RBRACE|PLUS|MINUS|MULTIP|DIVIS|ESCAPED_QUOTE|BACKSLASH|WS)+
       ;
  
  funcArgs : argumentNodes+=funcArg (ws COMMA ws argumentNodes+=funcArg)*
  