anchor.diff:      ;
   
   global
  -    :   (namespace | stmts)
  +    :   (namespace | statements)
       ;
   
   namespace
  -    :   ID INDENT namespace DEDENT
  -    |   ID flow
  +    :   Identifier flow
       ;
   
   block
  
positive.code:     ;
  
  call
      :   ID '(' params ')'
      ;
  
  params
      :   exprs?
      ;
  
  INT
      :   [1-0] [0-9]*
      ;
  
  ID  :   [a-zA-Z0-9]+
      ;
  
  WS  :   [ \t]+ -> skip
      ;
  
  NL  :   '\r'? '\n' ' '*
      ;
  
negative.code:     ;
  
  flow
      :   INDENT statements DEDENT
      ;
  
  inline
      :   '{' statement (';' statement)* '}'
      ;
  
  statements
      :   statement ( (NL | ';') statement)* NL*
      ;
  
  statement
      :   namespace
      |   block
      |   if_block
      |   while_block
      |   dowhile_block
      |   RETURN expression?
      |   PRINT expression?
      |   DEBUG expression?
      |   TRACE expression?
      |   expression
      ;
  
  if_block
      :   IF expression block (ELSIF expression block)* (ELSE block)?
      ;
  
  while_block
      :   WHILE expression block
      ;
  
  dowhile_block
      :   DO block WHILE expression
      ;
  
  expressions
      :   expression ( (NL | ',') expression)*
      ;
  
  expression
      :   primary
      |   PRINT '(' expression ')'
      |   DEBUG '(' expression ')'
      |   TRACE '(' expression ')'
      |   expression '.' Identifier
      |   expression '[' expression ']'
      |   func
      |   call
      |   expression ('++' | '--')
      |   ('+'|'-'|'++'|'--') expression
      |   ('~'|'!') expression
      |   expression ('*'|'/'|'%') expression
      |   expression ('+'|'-') expression
      |   expression ('<' '<' | '>' '>' '>' | '>' '>') expression
      |   expression ('<=' | '>=' | '>' | '<') expression
      |   expression 'is' type
      |   expression ('==' | '!=') expression
      |   expression '..' expression
      |   expression '&' expression
      |   expression '^' expression
      |   expression '|' expression
      |   expression '&&' expression
      |   expression '||' expression
      |   expression '?' expression ':' expression
      |   expression
          (   '='<assoc=right>
          |   '+='<assoc=right>
          |   '-='<assoc=right>
          |   '*='<assoc=right>
          |   '/='<assoc=right>
          |   '&='<assoc=right>
          |   '|='<assoc=right>
          |   '^='<assoc=right>
          |   '>>='<assoc=right>
          |   '>>>='<assoc=right>
          |   '<<='<assoc=right>
          |   '%='<assoc=right>
          )
          expression
      ;
  
  primary
      :   '(' expression ')'
      |   literal
      |   Identifier
      ;
  
  literal
      :   IntegerLiteral
      |   FloatingPointLiteral
      |   CharacterLiteral
      |   StringLiteral
      |   BooleanLiteral
      |   'null'
      ;
  
  func
  