anchor.diff:  				| invocation
   				| lambda
   				| atom
  -				| ID
  +				| name
   				| expression operand expression
  +				| expression bool_operand expression
   				| unary_operand expression
  +				| expression trail_operand
   				| '(' expression ')'
   				| table_definition
  -				| meta_definition
   				| table_access
   				;
   
  -definition		: type ID ;
  +definition		: type name ;
   
  -assignment		: ID ':=' expression 
  +assignment		: name ':=' expression 
   				| table_access ':=' expression
   				;
   
  -definition_assignment : type ID ':=' expression ;
  +definition_assignment : type name ':=' expression ;
   
  -invocation		: ID '(' expression_list? ')' ;
  +invocation		: name '(' expression_list? ')' ;
   
   lambda			: '(' argument_list? ')' '->' ( '(' type_list ')' | type )? (block | ':' expression) ;
   
  
positive.code: 
  statement		: if_statement
  				| for_loop
  				| expression ';'
  				| 'return' expression ';'
  				;
  
  if_statement	: 'if' expression block ('else if' expression block)* ('else' block)? ;
  
  for_loop		: 'for' (definition | ID) 'in' expression (expression ';' | block) ;
  
  expression		: definition
  				| assignment
  
negative.code: 
  operand			: '*' | '/' | '+' | '-' ;
  
  bool_operand	: '||' | '&&' | '>' | '<' | '>=' | '<=' | '!=' | '==' ;
  
  unary_operand	: '&' | '!' | '-' ;
  
  trail_operand	: '++' | '--' ;
  
  type			: '*' type
  				|  'int' | 'uint' | 'float' | 'bool' | 'byte' | 'fn' 
  				| 'string' | 'list' | 'table' | 'meta' | name
  				;
  
  keyword			: 'return'
  				| 'include'
  				;
  
  name			: ID
  				| name '.' name
  				| name ':' name
  				| name '->' name
  				;
  
  atom			: INT
  