anchor.diff:  
   field : name (',' name)* ':' expression;
   
  -primary:'nil' | 'true' | 'false' |int_literal | real_literal | string_literal| idn | (idn (constant (',' constant)*) | (primary '.' name) | primary expression?| invocation | (type_spec '$' field (',' field)*
  -  | (type_spec '$' '[' (expression ':')? (expression (',' expression)* ']')  | (type_spec '$' '[' constant (',' constant)* ']') | ('force' type_spec?)| ('up' '(' expression ')' )  | ('down' '(' expression ')' ) ;
  -
  -expression : primary;
  +
  +expression : primary
   | ('(' expression ')')
   | ('~' expression)
   | ( '-' expression ) 
  
positive.code: ;
  
  
  
  idn:
  STRING;
  
negative.code: 
  
  
  tag_arm: 'tag' name (',' name)*  ( '(' idn ':' type_spec ')') ? ':' body;
  
  when_handler : ('when' name (',' name)* (decl (',' decl)*)? ':' body)
                 | ('when' name (',' name)* '(' '*' ')' ':' body);
  
  others_handler: 'others' ('(' idn ':' type_spec ')')? ':' body;
  
  
  body : equate* statement*;
  