Let them take one at a time:
Look harder for the existing Linq2SOQL provider (my Google-fu can't get me here, otherwise it's just not there, the only .NET shell mentions Linq as pleasant for itself).
Yes, I doubt that it already exists, but I hope you can find it.
Building an expression tree parser. It should support at least the Select and Where calls and must either parse lambdas or manipulate their methods to get the necessary operations and forecasts. This seems to be a fairly large-scale task, but, as I said, it is certainly possible.
This is absolutely the way to go if you are really serious about it in the long run.
Wrap the service in Linq2Sql or a similar existing Linq provider, which will allow me to extract the query string close enough, polish it and pass it to the service. There should be dozens (although none of them come in, AFAIK).
What do you mean by the word "drop in"? You can easily get SQL directly from L2S.
Call Expression.ToString () (or Expression.DebugView) and manipulate this line to create a SOQL query. It will be fragile, it will be ugly (behind the scenes), and it will only support what I am clearly looking for, but it will provide a rudimentary translation that will allow me to move on.
I would strongly discourage you from this approach, because at least it will be at least as difficult as the correct syntactical decomposition of expression trees. In any case, to use this, you first need to put the parsed strings in a suitable object model - that is, the existing expression trees that you start with.
Indeed, you should consider creating a query provider and doing it right. I think that two days are a little stretched, although in order to make something work even in a primitive sense, although it is possible. IMO, you should explore it at home and play with it so that you have some familiarity with the basic items and parts. Then you are unlikely to be able to get a few useful requests in two days.
Honestly, the full implementation of such a project is really in the sphere of several weeks, if not months, not days.
If this is too much, you can consider option 3. I am not an expert in SOQL, so I don’t know what kind of work will be involved in converting ordinary SQL queries to SOQL queries. If you find this more likely algorithmic and reliable, this might be the way to go.