anchor.diff:  
   typename
   	:	var_or_type_dot
  -	|	'strong' '[' typename ']'
  -	|	'weak' '[' typename ']'
  -	|	'ptr' '[' typename ']'
  -	|	'array' '[' typename (',' expr)? ']'
  +	|	'strong' '[' typename ']' -> ^('strong' typename)
  +	|	'weak' '[' typename ']'  -> ^('weak' typename)
  +	|	'ptr' '[' typename ']'  -> ^('ptr' typename)
  +	|	'array' '[' typename (',' expr)? ']'  -> ^('array' typename expr?)
  +	|	'int' | 'uint' | 'uintptr' | 'int8' | 'int32' | 'uint32' | 'int16' | 'uint16' | 'int64' | 'uint64' | 'uint8'
   	;
   	
   	
  
positive.code: 	
  module_part 
  	:	var_decl
  	;
  	
  var_decl
  	:	'var' var_init (',' var_init)* -> ^('var' var_init)+	
  	;		
  	
  var_init
  	:	typename ID ('=' expr)?	-> ^(ID typename ^('=' expr)?)
  	|	ID '=' expr		-> ^(ID ^('=' expr))
  	;
  	
  var_or_type_dot
  
negative.code: 	|	'[' e=expr ']' -> ^('[' $postf_op $e))*
  	;	
  
  type_decl
  	:	'type' ID '=' typename (',' ID '=' typename)* -> ^('type' ID typename)+ 
  	|	'struct' ID '{' field_decl* '}' -> ^('struct' ID field_decl*)
  	;
  	
  field_decl
  	:	typename ID (',' ID)* -> ^(FIELD_DECL typename ID)+
  	;