2011-03-25 13 views
7

मुझे QML -format फ़ाइलों (wiki) के कुछ स्थिर विश्लेषण करने की आवश्यकता है, लेकिन मुझे उनके लिए कोई पार्सर्स नहीं मिल रहा है। मुझे देखने का एकमात्र तरीका Qt Declarative मॉड्यूल के स्रोत कोड का पुन: उपयोग करना है या अपना खुद का पार्सर लिखना है। मुझे वेब पर कुछ भी नहीं मिला। क्या कोई मुझे कुछ टूल पर इंगित कर सकता है, क्यूएमएल फाइलों के तत्वों को आसानी से पार्स करने के लिए एक्सएमएल या पर्ल/पायथन मॉड्यूल में कनवर्टर?QML- प्रारूप फ़ाइलों के लिए एक पार्सर खोज रहे हैं

आपकी मदद के लिए बहुत बहुत धन्यवाद!

+0

क्या QT घोषणात्मक मॉड्यूल से कोड का उपयोग करने का कोई कारण नहीं है? मैं इस आधार पर एक पार्सर लिखने से बचूंगा कि आपको सटीक व्याकरण को जानने की संभावना नहीं है (जब तक वह कहीं क्यूटी स्रोतों में छिपा नहीं जाता)। –

+0

यह संभावित समाधानों में से एक है, लेकिन मेरी पसंदीदा भाषाएं पर्ल और पायथन हैं और मैं अपनी परियोजना में एक सी ++ कोड लिखने से बचने की कोशिश करूंगा। इसके अलावा मैं सर्वर पर विश्लेषण चलाने के लिए क्यूटी पर निर्भर नहीं होना चाहता हूं जो इसे स्थापित नहीं कर सकता है। – aponomarenko

+1

[इस बग] से जुड़ा एक व्याकरण है (https://bugreports.qt.io/browse/QTBUG-12602), हालांकि व्याकरण में व्हाइटस्पेस जानकारी और अर्धविराम-समान-रेखा-संपत्ति-घोषणाएं गायब हैं, इसलिए यह बिल्कुल सही नहीं है। – Phrogz

उत्तर

3

आप एसडीके के साथ आने वाले QML Viewer के स्रोत कोड को देख सकते हैं। source code गिटोरियस पर उपलब्ध है। क्यूएमएल व्यूअर कोड सी ++ में पायथन और न ही पर्ल नहीं है।

क्यूटी के साथ कोई निर्भरता वाले पायथन का उपयोग करने के लिए एक और संभावित समाधान, एक मानक जावास्क्रिप्ट पार्सर का उपयोग करना और इसे संशोधित करना है ताकि यह QML को समझ सके। आपके द्वारा प्रदत्त विकी लिंक से:

क्योंकि क्यूएमएल और जावास्क्रिप्ट बहुत समान हैं, जावास्क्रिप्ट का समर्थन करने वाले लगभग सभी कोड संपादक काम करेंगे।

मुझे pynarcissus मिला जो पाइथन में जावास्क्रिप्ट दुभाषिया है। हो सकता है कि आप इसे थोड़ा संशोधित कर सकें ताकि यह क्यूएमएल फाइलों को संक्षेप में समझा सके?

+0

जावास्क्रिप्ट पार्सर का उपयोग करना एक उत्कृष्ट विचार है! धन्यवाद! – aponomarenko

6

qt-declarative में पार्सर src/qml/qml/parser में है, और इसका एक बड़ा हिस्सा qlalr (पिछले लिंक के समान स्थान के साथ उत्पन्न होता है, लेकिन qtdeclarative के बजाय qlalr के साथ) उत्पन्न होता है। आप qt-creator src/libs/qmljs/पार्सर में उपयोग किए गए पार्सर को भी देखना चाहते हैं जो कि क्यूटी-घोषणात्मक से प्राप्त होता है।

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