...parser generator. :)
Yesterday, I started to write a recursive-descent parser for my language, on the grounds that this appears to be the only way to be able to generate useful error messages on syntax errors. Recursive descent is a fairly limited technique, which makes this an inherently annoying process. So I wrote a small program that calculates the LL(1) parse tables for a given grammar and prints them out in HTML, so that I could consult it while hand-rolling the parser. It struck me that this was a tool of a class that I've rarely seen before in development: something whose purpose is not to completely automate a task, but to semi-automate it. In this case, I eliminate the manual scutwork of checking for ambiguities in my grammar, but I am still the one writing the parser.
Can anyone come up with more examples? I'll bet the sysadmins here will be able to come up with a lot, since the job involves taking essentially random human requests and convincing a machine to do them. But I could be wrong....