anchor.diff:  	  case refac_syntax:type(N) of
   	    atom ->
   		{refac_syntax:atom_value(N), refac_syntax:rule_arity(Node)};
  -	    _ -> throw(syntax_error)
  +	      _ -> {Ln, _} = refac_syntax:get_pos(Node),
  +		   throw("Unrecognised rule in line " ++ integer_to_list(Ln))
   	  end;
  -      _ -> throw(syntax_error)
  +	_ -> {Ln, _} = refac_syntax:get_pos(Node),
  +	     throw("Unrecognised rule in line " ++ integer_to_list(Ln))
       end.
   
   %% =====================================================================
  
positive.code: 	  N = refac_syntax:function_name(Node),
  	  case refac_syntax:type(N) of
  	    atom ->
  		{refac_syntax:atom_value(N),
  		 refac_syntax:function_arity(Node)};
  	    _ -> throw(syntax_error)
  	  end;
        _ -> throw(syntax_error)
      end.
  
  %% =====================================================================
  
negative.code: 		case refac_syntax:attribute_arguments(Node) of
  		  [V] ->
  		      {refac_syntax:atom_value(N), refac_syntax:concrete(V)};
  		  _ -> {Ln, _} = refac_syntax:get_pos(Node),
  		       throw("Unrecognised attribute in line " ++ integer_to_list(Ln))
  		end;
  	    _ -> {Ln, _} = refac_syntax:get_pos(Node),
  		 throw("Unrecognised attribute in line " ++ integer_to_list(Ln))
  	  end;
        _ -> {Ln, _} = refac_syntax:get_pos(Node),
  	   throw("Unrecognised attribute in line " ++ integer_to_list(Ln))
      end.
  
  %% =====================================================================
  