One part should implement getting compilation errors and generating an AST, and another part should be parsing symbols, references, etc from a given AST.
@gracew: If we don't depend on ls-api, we might have to reimplement the Diagnostic interface, and then do a conversion when publishing. Are we okay with that?