Saya tidak yakin apa itu "C ++ Code DOM", jika memang ada. Yang penting adalah bahwa MSVS menggunakan ujung depan EDG untuk mengurai dan menentukan arti simbol, untuk mendukung tindakan MSVS IDE. EDG IIRC membangun struktur data internalnya sendiri yang mewakili program; Saya tidak punya alasan untuk percaya bahwa struktur data tersebut adalah "C ++ Code DOM", atau bahwa mereka terlihat oleh Anda atau Anda akan dapat mengetahuinya di MSDN.
Masalah sebenarnya yang Anda nyatakan adalah Anda ingin menganalisis kode sumber C ++. Saya setuju, memiliki informasi ujung depan EDG akan menjadi bantuan yang signifikan untuk melakukan itu; Anda benar- benar tidak ingin mencoba menulis pengurai C ++ Anda sendiri (dan Anda memerlukan banyak hal setelah penguraian, google esai saya tentang "kehidupan setelah penguraian").
Jadi, Anda memiliki pilihan berikut:
- Temukan pintu ke mesin EDG di MSVS. Karena Anda tidak memiliki banyak keberuntungan dan tampaknya tidak ada yang didokumentasikan dari MS yang mengatakan ini tersedia, Anda mungkin tidak akan beruntung dengan cara ini. Jika saya berada di posisi MS, saya tidak akan mempublikasikannya; itu hanya akan menjadi sakit kepala dukungan lainnya, dan pada perangkat lunak yang bahkan bukan milik mereka.
- Gunakan ujung depan EDG komersial, langsung dari EDG . Pemahaman saya adalah mereka menawarkan lisensi penggunaan individu tanpa biaya. (Pemahaman saya mungkin salah). Dengan cara ini Anda melewati batasan apa pun yang mungkin dimiliki MS pada akses ... dengan harga harus mengonfigurasi front end EDG sendiri. Sisi negatifnya: EDG ingin menjadi ujung depan kompiler, bukan ujung depan penganalisis. Perbedaan itu mungkin tampak halus tetapi mungkin akan menggigit Anda. Misalnya, saya curiga EDG membuang komentar; compiler front end tidak membutuhkannya. Jika Anda ingin memeriksa komentar di penganalisis Anda, ini mungkin masalah yang nyata.
- Gunakan Clang . Ini adalah parser C ++ open source, dirancang untuk digunakan untuk berbagai tujuan analisis program serta untuk front end kompiler C ++. Saya tidak memiliki pengalaman dengan ini, tetapi tampaknya dipikirkan dengan cukup matang, dan tampaknya menawarkan banyak fasilitas. Saya tidak tahu apakah itu memiliki dukungan khusus untuk dialek MS C ++.
- Gunakan front end komersial lainnya, (DMS) C ++ Front End kami. Menjadi arsitek ini, saya cukup yakin itu dipikirkan dengan baik (termasuk dukungan untuk MS Visual C ++); ada pengalaman khusus dalam menggunakan ini untuk menjalankan tugas analisis dan transformasi C ++ yang kompleks. Tidak seperti EDG, EDG dirancang untuk mendukung analisis, transformasi, dan pembuatan (misalnya, menangkap komentar dan bahkan radix literal sehingga dapat dibuat ulang dengan benar). Fondasi, DMS, memiliki banyak mesin yang dibangun untuk mendukung analisis kustom: AST dan konstruksi tabel simbol, tata bahasa atribut, kerangka aliran data, kontrol intraprosedural dan analisis aliran data di tingkat AST, manajemen BDD, kecocokan pola sumber, sumber-ke transformasi -source. Clang dan EDG menawarkan konstruksi tabel AST dan simbol; Dentang (tapi menurut saya EDG) tidak memiliki analisis aliran (di tingkat LLVM), tetapi bukan analisis aliran di tingkat AST (AFAIK). Baik Clang maupun EDG tidak menawarkan pola sumber / kemampuan transformasi, jadi mana yang lebih baik bergantung pada tugas jangka panjang Anda. Dibandingkan dengan opsi lain, front end C ++ kami bukanlah open source atau gratis; seseorang bisa mendapatkan lisensi penelitian.