मैं सेमीकेक और विजुअल स्टूडियो 10 के साथ विंडोज़ के लिए सफलतापूर्वक चिपकने में कामयाब रहा। मैं एक एक्सएमएल फाइल को स्रोत कोड के एएसटी प्रतिनिधित्व के रूप में प्राप्त करना चाहता हूं।क्या मुझे कंपाइलर का उपयोग किये बिना क्लैंग के साथ सी/सी ++ कोड का एक्सएमएल एएसटी डंप मिल सकता है?
clang -cc1 -ast-print-xml source.c
हालांकि, इस संकलन मंच (जो मैं से बचने के लिए चाहते हैं) लागू किया गया है: वहाँ एक विकल्प है कि लिनक्स के तहत जीसीसी (ubuntu) के साथ बजना के साथ परिणाम प्रदान करता है, लेकिन खिड़कियों बॉक्स पर काम नहीं करता है । स्रोत कोड में खुदाई ने मुझे अब तक मदद नहीं की है क्योंकि मैं झुकाव के लिए काफी नया हूं। मैं का उपयोग करके AST के द्विआधारी संस्करण उत्पन्न करने के लिए प्रबंधन कर सकते हैं:
clang -emit-ast source.c
दुर्भाग्य से, इस प्रारूप पार्स करने के लिए सीधे व्यर्थ है। क्या क्लैंग में बाइनरी के बजाय सीधे एक्सएमएल पेड़ उत्पन्न करने के लिए कुछ मौजूदा तरीका है?
लक्ष्य .NET पर्यावरण में अन्य उपकरणों में XML प्रस्तुति का उपयोग करना है, इसलिए मुझे बाइनरी एएसटी तक पहुंचने के लिए देशी क्लैंग लिब के आसपास कुछ लपेटना होगा। हो सकता है कि कोई तीसरा विकल्प है अगर किसी ने पहले ही .NET के लिए कुछ बाइनरी क्लैंग एएसटी पार्सर लिखा है?
क्या यह संभव है कि मुझे ऐसा कुछ याद आ रहा है जैसे क्लैंग फ्रंट एंड द्वारा उत्पन्न एएसटी संकलन चरण में उत्पन्न एक के बराबर नहीं है।
मेरी कंपनी सी ++ फ्रंट सिरों का निर्माण करती है, और हम * एएसटी के पूर्ण एक्सएमएल डंप उत्सर्जित कर सकते हैं। हमारे पास यह चेक-बॉक्स आइटम है, क्योंकि लोग इसके लिए पूछते हैं। कोई भी वास्तव में इसका उपयोग नहीं करता है, क्योंकि वास्तविक सी ++ प्रोग्राम (जिसमें सभी हेडर फाइलें शामिल हैं) के आउटपुट की मात्रा बस * विशाल * है, जो इसे धीमा करने के लिए धीमी और बेकार है। वास्तविक सवाल यह है कि आप ऐसा क्यों करना चाहते हैं?क्लेंग संभवतः सी ++ एएसटी को संसाधित करने के लिए बड़ी मात्रा में मशीनरी प्रदान करता है (जैसा कि हमारे संबंधित उपकरण करता है); आप उस काम को दोहराने की कोशिश क्यों करना चाहेंगे? अपने उद्देश्य के लिए क्लैंग का उपयोग क्यों न करें? –
... http://stackoverflow.com/a/17393852/120163 पर एक सी ++ पेड़ डंप देखें यह एक्सएमएल नहीं है, लेकिन टूल एक्सएमएल को सटीक उसी सामग्री के साथ भी उत्पन्न कर सकता है। –