2010-07-26 21 views
15

लंबे समय से अब मैं अपने सी ++ स्रोत कोड को पार्स और आत्मनिरीक्षण करने के लिए pygccxml का उपयोग कर रहा हूं: यह मुझे हमारी निर्माण प्रक्रिया के दौरान कुछ चालाक कोड-पीढ़ी करने में मदद करता है।क्या पीईजीएक्सएक्सएमएल की नस में पाइथन क्लैंग रैपर है जो जीसीसी-एक्सएमएल को लपेटता है?

हाल ही में मैंने एलएलवीएम स्टैक के लाभों के बारे में बहुत कुछ पढ़ा है, और विशेष रूप से लाभ जो एलएलवीएम क्लैंग पार्सर सी ++ संकलन में लाता है। अब मैं सोच रहा हूं कि क्लैंग के लिए कोई पायथन इंटरफ़ेस है या नहीं कि मैं इसे अपने मौजूदा कोड जनरेशन कार्यों के आधार के रूप में उपयोग कर सकता हूं?

+0

शायद आप SWIG के साथ एक इंटरफेस उत्पन्न करने का प्रयास कर सकते हैं? – Zifre

+1

@Zifre: दरअसल यह दूसरी तरफ है ... मैं एसडब्ल्यूआईजी इंटरफेस उत्पन्न करने की कोशिश कर रहा हूं इसलिए मुझे सी ++ कोड को लपेटना है जिसे मैं लपेटना चाहता हूं। मैंने अभी इस के लिए pygccxml का उपयोग किया है ... मैं कुछ एलएलवीएम-आधारित का उपयोग करना चाहता हूं। – jkp

+0

नहीं, मेरा मतलब था SWIG का उपयोग कर क्लैंग पुस्तकालयों के लिए पाइथन बाइंडिंग उत्पन्न करना। यदि आप पाए गए वास्तविक पायथन बाइंडिंग बहुत अपूर्ण हैं तो आप इसे आजमा सकते हैं (लेकिन एसडब्ल्यूआईजी जेनरेटिंग बाइंडिंग आमतौर पर उपयोग करने में कठिन होती हैं, क्योंकि वे सीधे सी/सी ++ एपीआई दर्पण करते हैं)। – Zifre

उत्तर

5

आगे खुदाई मैंने पाया कि LLVM 2.7 release में वहाँ कुछ उपयोगी के beginings हो सकता है के बाद:

LLVM 2.7 समय-सीमा में, बजना टीम कई सुधार किए है ....

सींडेक्स एपीआई और पायथन बाइंडिंग: क्लेंग में अब सीआईडीएक्स लाइब्रेरी के हिस्से के रूप में एक सी एपीआई शामिल है। हालांकि हम भविष्य में एपीआई में कुछ बदलाव करते हैं, लेकिन यह स्थिर होना है और बाहरी परियोजनाओं के उपयोग के लिए डिजाइन किया गया है। अधिक जानकारी के लिए क्लैंग डॉक्सिजन सिंडेक्स दस्तावेज देखें। सिंडेक्स एपीआई में पाइथन बाइंडिंग का प्रारंभिक सेट भी शामिल है।

मुझे यकीन है कि कैसे उपयोगी इस अभ्यास में है नहीं कर रहा हूँ, निश्चित रूप से ऐसा लगता है कि यह एक pygccxml बराबर LLVM के आधार पर निर्माण के लिए नींव हो सकता है, लेकिन यह अपने आप में इस तरह के एक पुस्तकालय नहीं है की तरह।

+1

मैं देखना चाहता था कि यह कितना व्यवहार्य था अब कुछ महीने बीत चुके हैं: इस पायथन मॉड्यूल के रूप में (https://llvm.org/svn/llvm-project/cfe/trunk/bindings/python/clang/cindex .py) ऐसा लगता है कि अब यह पूरी तरह से व्यवहार्य है। – jkp

संबंधित मुद्दे