anchor.diff:          expression
       ;
   
  +m
  +    :   M expression SLASH expression SLASH params
  +    ;
  +
  +s   :   S expression SLASH expression SLASH expression SLASH params
  +    ;
  +
   assign
       :   Identifier '=' expression
  +    ;
  +
  +tuple
  +    :   '(' expressions? ')'
  +    ;
  +
  +list
  +    :   '[' expressions? ']'
  +    ;
  +
  +seq
  +    :   '<' expressions? '>'
  +    ;
  +
  +dict
  +    :   '{' expressions? '}'
       ;
   
   primary
  
positive.code:     :   Identifier (ASSIGN expression)?
      ;
  
  if_block
      :   IF expression block (ELIF expression block)* (ELSE block)?
      ;
  
  foreach_block
      :   FOREACH Identifier IN expression block
      ;
  
  while_block
      :   WHILE expression block
      ;
  
  dowhile_block
      :   DO block WHILE expression
      ;
  
  expressions
      :   expression ( (NL | COMMA) expression)*
      ;
  
  expression
  
negative.code:     |   PRINT '(' expression ')'
      |   DEBUG '(' expression ')'
      |   TRACE '(' expression ')'
      |   m
      |   s
      |   match
      |   func
      |   call
      |   tuple
      |   list
      |   seq
      |   dict
      |   expression '.' Identifier
      |   expression '[' expression ']'
      |   expression ('++' | '--')
  