anchor.diff:  	|	BYTES
   	;
   
  -multiplicitive_advanced_type:
  -    |   NORMAL -> FLOAT["float"]
  -    |   VECTOR2F -> FLOAT["float"]
  -    |   VECTOR2D -> DOUBLE["double"]
  -    |   VECTOR3F -> FLOAT["float"]
  -    |   VECTOR3D -> DOUBLE["double"]
  -    |   VECTOR4F -> FLOAT["float"]
  -    |   VECTOR4D -> DOUBLE["double"]
  -    |   QUATERNION -> FLOAT["float"]
  -    |   BOUNDINGSPHERE3F -> FLOAT["float"]
  -    |   BOUNDINGSPHERE3D -> DOUBLE["double"]
  -    |   BOUNDINGBOX3F3F -> FLOAT["float"]
  -    |   BOUNDINGBOX3D3F -> DOUBLE["double"]
  -    ;
  -
  -advanced_numeric_type:	UINT8 -> UINT32["uint32"]
  -	|	INT8 -> INT32["int32"]
  -	|	SINT8 -> SINT32["sint32"]
  -	|	FIXED8 -> INT32["uint32"]
  -	|	SFIXED8 -> INT32["sint32"]
  -	|	INT16 -> INT32["int32"]
  -	|	SINT16 -> SINT32["sint32"]
  -	|	FIXED16 -> INT32["uint32"]
  -	|	SFIXED16 -> INT32["sint32"]
  -    |   UINT16 -> UINT32["uint32"]
  -    |   ANGLE -> FLOAT["float"]
  -    |   TIME -> FIXED64["fixed64"]
  -    |   DURATION -> SFIXED64["sfixed64"]
  +multiplicitive_advanced_type 
  +    :   NORMAL 
  +    |   VECTOR2F
  +    |   VECTOR2D
  +    |   VECTOR3F
  +    |   VECTOR3D
  +    |   VECTOR4F
  +    |   VECTOR4D
  +    |   QUATERNION 
  +    |   BOUNDINGSPHERE3F 
  +    |   BOUNDINGSPHERE3D 
  +    |   BOUNDINGBOX3F3F 
  +    |   BOUNDINGBOX3D3F 
  +    ;
  +
  +advanced_numeric_type:	UINT8 
  +	|	INT8 
  +	|	SINT8
  +	|	FIXED8
  +	|	SFIXED8
  +	|	INT16 
  +	|	SINT16 
  +	|	FIXED16
  +	|	SFIXED16
  +    |   UINT16 
  +    |   ANGLE 
  +    |   TIME 
  +    |   DURATION 
       ; 
   
  -advanced_array_type:	   UUID -> BYTES["bytes"]
  -    |   SHA256 -> BYTES["bytes"]
  +advanced_array_type:	   UUID 
  +    |   SHA256 
       ; 
   
   literal_value
  
positive.code:     ;
  
  field_type
      : numeric_type
      {
          $field::isNumericType=1;
          $field::fieldType=stringDup($numeric_type.text);
      }
      | array_type
      {
          $field::isNumericType=0;
          $field::fieldType=stringDup($array_type.text);
      }
      | advanced_numeric_type
      {
         $field::isNumericType=1;
         $field::fieldType=stringDup($advanced_numeric_type.text);
      }
      | advanced_array_type
      {
         $field::isNumericType=0;
         $field::fieldType=stringDup($advanced_array_type.text);
      }
      | ( IDENTIFIER 
          -> {SCOPE_TOP(Symbols)->flag_sizes->get(SCOPE_TOP(Symbols)->flag_sizes,$IDENTIFIER.text->chars)!=NULL
              && *(unsigned int*)SCOPE_TOP(Symbols)->flag_sizes->get(SCOPE_TOP(Symbols)->flag_sizes,$IDENTIFIER.text->chars)<28}?
                UINT32["uint32"] 
  
negative.code: QUOTE : '"' ;
  
  COMMA : ',' ;
  