क्या वीसी ++ से डोम + कोड डोम सुलभ है?


100

वीसी ++ के लिए विजुअल स्टूडियो इंटेलीजेंसी में "पूर्ण" ईडीजी सी ++ पार्सर (इंटेल और अन्य द्वारा उपयोग किया गया) भी शामिल है। चूँकि C # कोड DOM, addons तक पहुँच योग्य है (अगर मैं गलत हूँ तो मुझे सही करें), क्या C ++ कोड DOM भी सुलभ है? क्या इसका उपयोग VS वातावरण में एक खुले VC ++ प्रोजेक्ट का विश्लेषण करने के लिए किया जा सकता है?


25
बस अपने दूसरे धागे से आया था ; यह अच्छा प्रश्न है।
Qix - MONICA WAS MISTREATED

81
फिर, "स्पष्ट करें कि आप क्या पूछ रहे हैं?" - वास्तव में लोग? "मुझे इस प्रश्न के आधार के बारे में कुछ भी पता नहीं है" इसका मतलब यह नहीं है "अस्पष्ट आप क्या पूछ रहे हैं"।
टिम पोस्ट

9
@ क्या - मैंने यह साबित करने के लिए एक जवाब जोड़ा है कि गैर-एमएस-कर्मचारी इस मुद्दे को भी हल कर सकते हैं। ऐसे लोग हैं जो मैंने जो चाहा है, उसके करीब पहुंच गए हैं।
TheFlash

55
@DaveHillier यदि यह विषय पर है, तो यह पूरी तरह से यहाँ स्वागत है। उससे आगे कोई चर्चा नहीं है। यदि हम "यहाँ कोई किसी को भी इस का जवाब दे सकते हैं?" तब हम तेजी से इस तरह के चिपचिपे कोण पर पहुंचते हैं जहां कुछ भी संभवतया अचूक होता है। जब तक हम वास्तव में जवाब के लिए सवाल नहीं खोलते, तब तक हमें स्पष्ट रूप से इस पर कोई ठोस विचार नहीं है कि इसका जवाब कौन दे सकता है। यह पहली जगह में पूछने की पूरी बात है।
टिम पोस्ट

49
@bmargulies इस प्रश्न को केवल मौजूदा द्वारा क्या नुकसान पहुँचा रहा है? यह विषय पर है, यह दिलचस्प है, और कोई व्यक्ति इसका उत्तर दे सकता है। हेक, एमएस से कोई इसे देख सकता है और इसका जवाब दे सकता है, और फिर यह साइट के लिए एक बढ़िया अतिरिक्त है। कृपया कुछ भी सकारात्मक देखने का प्रयास करने से पहले एक प्रश्न के बारे में संभावित नकारात्मक कुछ भी देखना बंद करें।
टिम पोस्ट

जवाबों:


22

विजुअल C ++ पुनर्रचना विस्तार परियोजना चौड़ा एक सदस्य का नाम बदलने के लिए सक्षम है। इसका निर्माण MS द्वारा किया गया था लेकिन जाहिर है कि उन्होंने इसे प्राप्त करने के लिए आंतरिक कोड DOM का उपयोग किया था। तो यह संभव है, मैं अभी नहीं जानता कि कैसे, अभी तक।

CppLister विस्तार एक वर्ग के भीतर विभिन्न सदस्यों को सूचीबद्ध करने के वी.एस. द्वारा बनाई IntelliSense डेटाबेस को पढ़ने में सक्षम है।

आप हमेशा खुले स्रोत Clang C ++ पार्सर (वास्तव में संकलक) का उपयोग कर सकते हैं और एएसटी को C # ऑब्जेक्ट मॉडल में पढ़ सकते हैं। Cang के लिए C # बाइंडिंग के लिए CppSharp और ClangSharp देखें ।


8

मुझे यकीन नहीं है कि "सी ++ कोड डोम" क्या है, अगर यह मौजूद है। क्या मायने रखता है कि MSVS IDE क्रियाओं का समर्थन करने के लिए MSVS पार्स और प्रतीकों का अर्थ निर्धारित करने के लिए EDG फ्रंट एंड का उपयोग कर रहा है। EDG IIRC कार्यक्रम का प्रतिनिधित्व करने वाले अपने आंतरिक डेटा संरचनाओं का निर्माण करता है; मेरे पास यह मानने का कोई कारण नहीं है कि वे डेटा संरचनाएं "C ++ कोड DOM" हैं, या वे आपको दिखाई दे रहे हैं या आप MSDN पर उनके बारे में पता लगा पाएंगे।

आपकी वास्तविक समस्या यह है कि आप C ++ स्रोत कोड का विश्लेषण करना चाहते हैं। मैं सहमत हूँ, EDG के सामने की अंतिम जानकारी होना एक महत्वपूर्ण सहायता होगी; आप वास्तव में अपने खुद के सी ++ पार्सर लिखने का प्रयास नहीं करना चाहते हैं (और आपको बहुत सारे सामान पिछले पार्सिंग की ज़रूरत है, "मेरे जीवन पर निबंध" पार्स करने के बाद)।

तो आपके पास निम्नलिखित विकल्प हैं:

  • MSVS में EDG मशीनरी में एक दरवाजा खोजें। चूंकि आपके पास बहुत अधिक भाग्य नहीं है और ऐसा प्रतीत होता है कि एमएस से कुछ भी दस्तावेज नहीं है यह कहते हुए कि यह उपलब्ध है, आपके पास शायद इस तरह से बहुत भाग्य नहीं होगा। अगर मैं एमएस के जूते में होता, तो मैं इसे सार्वजनिक नहीं करता; यह सिर्फ एक और समर्थन सिरदर्द होगा, और सॉफ्टवेयर के एक टुकड़े पर जो उनका भी नहीं है।
  • से सीधे, वाणिज्यिक ईडीजी सामने अंत का उपयोग करें ईडीजी । मेरी समझ से वे बिना किसी शुल्क के व्यक्तिगत उपयोग लाइसेंस प्रदान करते हैं। (मेरी समझ गलत हो सकती है)। इस तरह से आप किसी भी प्रतिबंध को छोड़ सकते हैं जो एमएस तक पहुँच पर हो सकता है ... ईडीजी फ्रंट एंड को स्वयं कॉन्फ़िगर करने की कीमत पर। एक नकारात्मक पक्ष: ईडीजी एक कंपाइलर के सामने का छोर बनना चाहता है, न कि एक विश्लेषक के सामने का छोर। यह भेद सूक्ष्म लग सकता है लेकिन यह आपको काटेगा। उदाहरण के लिए, मुझे संदेह है कि EDG ने टिप्पणियां दूर फेंकी; संकलक सामने के छोरों को उनकी आवश्यकता नहीं है। यदि आप अपने विश्लेषक में टिप्पणियों का निरीक्षण करना चाहते हैं, तो यह एक वास्तविक समस्या हो सकती है।
  • क्लैंग का उपयोग करें । यह एक खुला स्रोत C ++ पार्सर है, जिसका उपयोग विभिन्न प्रकार के प्रोग्राम विश्लेषण उद्देश्यों के साथ-साथ C ++ कंपाइलर को समाप्त करने के लिए किया गया है। मुझे इसके साथ कोई अनुभव नहीं है, लेकिन यह बहुत अच्छी तरह से सोचा हुआ लगता है, और बहुत सारी सुविधाएं प्रदान करता है। मैं नहीं जानता कि क्या इसे C ++ की एमएस बोली के लिए विशिष्ट समर्थन प्राप्त है।
  • एक और वाणिज्यिक फ्रंट एंड का उपयोग करें, हमारा (डीएमएस) सी ++ फ्रंट एंड। इस के वास्तुकार होने के नाते, मुझे पूरा यकीन है कि इसे अच्छी तरह से सोचा जा रहा है (एमएस विज़ुअल सी ++ के लिए समर्थन सहित); जटिल C ++ विश्लेषण और परिवर्तन कार्यों को करने के लिए इसका उपयोग करने के साथ विशिष्ट अनुभव है। EDG के विपरीत, यह विश्लेषण, परिवर्तन और पीढ़ी का समर्थन करने के लिए डिज़ाइन किया गया है (उदाहरण के लिए, यह टिप्पणियों और यहां तक ​​कि शाब्दिकों के मूलांक को पकड़ता है ताकि उन्हें सही तरीके से पुनर्जीवित किया जा सके)। फाउंडेशन, डीएमएस, में बहुत सारी मशीनरी हैं, जो कस्टम विश्लेषण का समर्थन करने के लिए बनाई गई हैं: एएसटी और प्रतीक तालिका निर्माण, विशेषता व्याकरण, डेटा प्रवाह ढांचे, एएसटी स्तर पर डेटा प्रवाह विश्लेषण और डेटा प्रवाह विश्लेषण, बीडीडी प्रबंधन, स्रोत पैटर्न मैच, सोर्स-टू -सूत्र परिवर्तन क्लैंग और ईडीजी एएसटी और प्रतीक तालिका निर्माण प्रदान करता है; क्लैंग (लेकिन मुझे नहीं लगता कि EDG) में इसका प्रवाह विश्लेषण है (LLVM स्तर पर), एएसटी स्तर (AFAIK) पर प्रवाह विश्लेषण नहीं। न तो क्लैंग और न ही ईडीजी स्रोत पैटर्न / परिवर्तन क्षमता प्रदान करते हैं, इसलिए जो बेहतर है वह आपके दीर्घकालिक कार्यों पर निर्भर करता है। अन्य विकल्पों की तुलना में, हमारा C ++ फ्रंट एंड ओपन सोर्स या फ्री नहीं है; एक अनुसंधान लाइसेंस प्राप्त कर सकते हैं।

2
"डोम" मूल रूप से एएसटी के लिए एचटीएमएल-स्पीक है। हालांकि, यह माना जाता है कि एक विहित वाक्यविन्यास है, जबकि C ++ कंपाइलर आमतौर पर थोड़ा अलग सिंटैक्स का उपयोग करते हैं। (उदाहरण के लिए बेहतर त्रुटि संदेश बनाने के लिए।)
MSalters

3
C # में DOM का अर्थ है "खराब रिज़ॉल्यूशन के साथ AST" कोड पीढ़ी के लिए उपयोग किया जाता है। आप C # डोम ऑफ़र के रिज़ॉल्यूशन के साथ C ++ प्रोग्राम्स का वास्तविक विश्लेषण नहीं कर सकते।
इरा बैक्सटर

देख inevitablesoftware.com/Products.aspx क्या एक अच्छा सी # codedom प्रस्तावों के लिए
TheFlash

@Geotarget: और C # DOM को प्रश्न के साथ क्या करना है?
इरा बैक्सटर

@IraBaxter - जब मैं "कोड DOM" कहता हूं, तो मैं क्या देख रहा हूं - कई लोगों ने टिप्पणी की है कि उन्हें समझ में नहीं आता है कि एक कोड DOM क्या है और / या वे इसे JS HTML DOM के साथ भ्रमित करते हैं। बेशक, मैं एक C ++ विशेषज्ञ नहीं हूं (जैसा कि मैंने पहले कहा है) इसलिए मुझे नहीं पता कि C ++ कोड DOM में क्या आवश्यक हो सकता है, हालांकि मैं समझता हूं कि Inevitablesoftware एक बहुत ही सरल और आसान DOM कोड का उपयोग करता है, और मैं इसी तरह के एपीआई वाले C ++ कोड DOM की तलाश में हूं।
TheFlash
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.