I'm currently working on the field name completion for the SQLTool. The aim is to make it easy to load Lexer/Parsers to cater for the variations in SQL syntax that occur across the major database offerings, and I am going to use the same approach as I have used elsewhere for this - essentially to use a factory for the parser that uses the invariant name as a key.
At the moment it is looking like the best approach to the Lexer/Parser is to use antlr, since the existing parsing support in #D is very C# specific. There are already quite a few grammars available for SQL, including those for MSSQL and Oracle. If anyone has any other ideas or advice please let me know.