python - पायथन में लेक्सिंग, टोकनिंग और पार्सिंग के लिए संसाधन




parsing resources (5)

मध्यम-जटिल व्याकरण के लिए, PyParsing शानदार है। आप पाइथन कोड के भीतर सीधे व्याकरण परिभाषित कर सकते हैं, कोड जनरेशन की कोई आवश्यकता नहीं है:

>>> from pyparsing import Word, alphas
>>> greet = Word( alphas ) + "," + Word( alphas ) + "!" # <-- grammar defined here
>>> hello = "Hello, World!"
>>>> print hello, "->", greet.parseString( hello )
Hello, World! -> ['Hello', ',', 'World', '!']

(PyParsing होम पेज से लिया उदाहरण)।

पार्स क्रियाओं के साथ (फ़ंक्शंस जो एक निश्चित व्याकरण नियम ट्रिगर होने पर लागू होते हैं), आप पार्स को सीधे अमूर्त वाक्यविन्यास पेड़, या किसी अन्य प्रतिनिधित्व में परिवर्तित कर सकते हैं।

ऐसे कई सहायक कार्य हैं जो पुनरावर्ती पैटर्न को समाहित करते हैं, जैसे ऑपरेटर पदानुक्रम, उद्धृत तार, घोंसले या सी-शैली टिप्पणियां।

क्या लोग मुझे पायथन के साथ लेक्सिंग, पार्सिंग और टोकनिंग पर संसाधनों के बारे में बता सकते हैं?

मैं एक ओपन सोर्स प्रोजेक्ट ( hotwire ) पर थोड़ा हैकिंग कर रहा हूं और उस कोड में कुछ बदलाव करना चाहता था जो lexes , पार्स और टोकन को इसमें दर्ज किए गए कमांड को लॉन्च करता है। चूंकि यह वास्तविक कामकाजी कोड है, यह काफी जटिल है और काम करने में थोड़ा मुश्किल है।

मैंने पहले कोड पर लेक्स / पार्स / टोकनिस पर काम नहीं किया है, इसलिए मैं सोच रहा था कि इस दृष्टिकोण पर एक ट्यूटोरियल या दो के माध्यम से एक दृष्टिकोण काम करना होगा। मैं उस कोड के चारों ओर नेविगेट करने के लिए पर्याप्त सीखने की उम्मीद करता हूं जिसे मैं वास्तव में बदलना चाहता हूं। क्या वहां कुछ भी उपयुक्त है? (आदर्श रूप से यह दोपहर में पहले ड्रैगन पुस्तक को खरीदने और पढ़ने के बिना किया जा सकता है ...)

संपादित करें: (7 अक्टूबर 2008) नीचे दिए गए उत्तरों में से कोई भी मुझे जो कुछ चाहिए वो दे। उनके साथ मैं स्क्रैच से पार्सर्स उत्पन्न कर सकता हूं, लेकिन मैं सीखना चाहता हूं कि कैसे अपना खुद का मूल पार्सर स्क्रैच से लिखना है, लेक्स और वाईएसी या इसी तरह के टूल का उपयोग नहीं करना। ऐसा करने के बाद मैं मौजूदा कोड को बेहतर समझ सकता हूं।

तो क्या कोई मुझे एक ट्यूटोरियल में इंगित कर सकता है जहां मैं सिर्फ अजगर का उपयोग करके स्क्रैच से मूल पार्सर बना सकता हूं?


मानक मॉड्यूल shlex पर एक नज़र shlex और अपने खोल के लिए उपयोग किए गए वाक्यविन्यास से मेल खाने के लिए इसकी एक प्रति संशोधित करें, यह एक अच्छा प्रारंभिक बिंदु है

यदि आप लेक्सिंग / पार्सिंग के लिए एक पूर्ण समाधान की सभी शक्ति चाहते हैं, तो ANTLR भी पाइथन उत्पन्न कर सकता है।


मैं PLY का एक खुश उपयोगकर्ता हूँ। यह लेक्स और वाईएसीसी का शुद्ध-पायथन कार्यान्वयन है, जिसमें बहुत से छोटे नस्लों हैं जो इसे काफी पाइथनिक और उपयोग में आसान बनाते हैं। चूंकि लेक्स और वाईएसी सबसे लोकप्रिय लेक्सिंग और पार्सिंग उपकरण हैं और अधिकांश परियोजनाओं के लिए उपयोग किए जाते हैं, पीएलवाई का दिग्गजों के कंधों पर खड़े होने का लाभ होता है। लेक्स और वाईएसीसी पर बहुत सारे ज्ञान ऑनलाइन मौजूद हैं, और आप इसे पीएलवाई पर स्वतंत्र रूप से लागू कर सकते हैं।

पीएलवाई के पास आपके पास शुरू करने के लिए कुछ सरल उदाहरणों के साथ एक अच्छा प्रलेखन पृष्ठ भी है।

पाइथन पार्सिंग टूल के बहुत सारे लिस्टिंग के लिए, इसे देखें।


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

"पाइथन में स्क्रैच से एक सरल इंट्रेटर:" भाग 1 , भाग 2 , भाग 3 , और भाग 4


pygments एक स्रोत कोड वाक्यविन्यास हाइलाइटर है जो पायथन में लिखा गया है। इसमें लेक्सर्स और फॉर्मेटर्स हैं, और स्रोत पर नजर डालना दिलचस्प हो सकता है।







lex