re b) I have seen, that cpp-related code is not only in the parser-subfolder, but also in the main-folder of this plugin. But this would probably be the easiest way to go.
Sorry, I have never used D language.
But I have some kind of familiar with the current CC plug-in's code.
There are two major parts of CC, the first part (we say part A) was collecting tags. we use the parser class and other helper classes(all the code was under parser- subfolder as you said) to analyze all the source code, then we store all the tags(some times, we call Tokens).
The second part( we say Part B) was doing the completion and other UI tips( eg, when the mouse hover on some ids, there is a function tip or when you enter some text, then there is a completion list prompt below your caret), it need to resolve the current code statement syntax.
Currently CC's code is quite mixing. So, if you want to implement a D language, you need to implement a part A for D language, and only modify some code in Part B.