इंस्टेंट या अन्य क्लोजर लाइब्रेरी का उपयोग इंडेंटेशन-आधारित भाषा को पार्स करने के लिए किया जा सकता है? मैंने ईबीएनएफ/एबीएनएफ में व्यक्त व्याकरण को पार्स करने के लिए Instaparse का उपयोग करने के उदाहरण देखे हैं। क्या पाइथन जैसे इंडेंटेशन-जागरूक भाषा को पार्स करने के लिए इसका उपयोग करने का कोई अच्छा तरीका है?क्या मैं Instaparse, या किसी अन्य क्लोजर लाइब्रेरी का उपयोग करके इंडेंटेशन-आधारित भाषा का विश्लेषण कर सकता हूं?
उत्तर
जाहिर है, आप इस मुद्दे को Instaparse के साथ रखने वाले पहले व्यक्ति नहीं हैं।
अधिकांश पार्सर जेनरेटर के साथ, आप @andrewcooke द्वारा प्रस्तावित योजना पर कुछ भिन्नता का उपयोग करके, इस समस्या को कस्टम लेक्सर के साथ हल करेंगे। हालांकि, Instaparse को एक लेक्सर की आवश्यकता से बचने के लिए डिज़ाइन किया गया था और इसके परिणामस्वरूप एक इंटरफ़ेस प्रदान नहीं करता है जो एक का उपयोग करता है।
यह कमी विशेष रूप से issue 9 में उठाई गई थी, जिसे issue 10 से हटा दिया गया था; बाद में, Instaparse लेखक एक वर्कअराउंड का सुझाव देता है:
इस बीच, एक कामकाज है जिसे आप संभावित रूप से नियोजित कर सकते हैं। आप इंडेंट और डेडेंट जैसे टोकन को अप्रयुक्त वर्णों पर मैप कर सकते हैं और फिर इसे एक स्ट्रिंग के रूप में पुनर्निर्माण कर सकते हैं, फिर उस पर इंस्टैपर्स चलाएं। मेरा मानना है कि एएससीआईआईआई अक्षर 0-8 और 11-31 अप्रयुक्त हैं और टोकन के रूप में काम कर सकते हैं।
यह निश्चित रूप से एक संभावना है, हालांकि यह एक सौंदर्य निर्णय है कि यह "कुछ हैकी कर रहा है।" फिर भी, आप उम्मीदों में इस तरह के एक हैक लिख सकते हैं कि एक बार समस्या 10 हल हो जाने पर इसे हटाया जा सकता है। आप उस मुद्दे की चर्चा में शामिल होना चाह सकते हैं।
हैकी द्वारा, मैं ज्यादातर हाथ से एक पार्सर रोलिंग मतलब था। यह आशाजनक लग रहा है, मैं इसे आगे बढ़ाऊंगा। बहुत बहुत धन्यवाद। –
आम तौर पर खरोज आधारित पार्स करने के लिए आप तीन चीजों की जरूरत है:
प्रत्येक के लिए,
प्रक्रिया टोकन की धारा प्रत्येक पंक्ति पर प्रमुख रिक्त स्थान से एक टोकन बनाने के लिए tokenizer का विस्तार वर्तमान संदर्भ के मुकाबले अग्रणी रिक्त स्थान की तुलना करें और यह इंगित करता है कि कोई वृद्धि या कमी है (इसलिए आप को टोकन रखने के लिए प्रत्येक पंक्ति की शुरुआत में टोकन रखते हैं जब इंडेंटेशन स्तर परिवर्तन)
एक "सामान्य" पार्सर लिखना जो कि टोकन से अवगत है जो इंडेंट स्तर में परिवर्तन दर्शाता है।
उस भाषा के आधार पर जो आपको तीसरे भाग से दूसरे भाग में कुछ जानकारी फीडबैक करने की आवश्यकता हो सकती है।
मैं instaparse बारे में कुछ भी पता नहीं है (एकमात्र कारण मैं जवाब दे रहा हूँ कि जो लोग पूछते हैं "क्या आप अब तक की कोशिश की है?" है इस जैसे प्रश्नों पर वास्तव में मुझसे दूर पेशाब) ताकि आप नहीं करनी होंगी देखें कि टोकननाइज़र और पार्सर के बीच दूसरे चरण को रखने का कोई तरीका है (मैंने दस्तावेज़ों को स्कैन किया है और ऐसा लगता है कि आपके लिए दूसरा भाग नहीं है, लेकिन आप इसे स्वयं लिख सकते हैं)। लेकिन यह पहले और तीसरे भागों को ठीक करने में सक्षम होना चाहिए।
धन्यवाद, यह बहुत उपयोगी है। –
+1 'वास्तव में मुझे बंद कर दें' के लिए +1। :) –
- 1. क्या मैं किसी भी जेवीएम भाषा का उपयोग कर एंड्रॉइड के लिए प्रोग्राम कर सकता हूं?
- 2. क्लोजर का उपयोग करके एचटीएमएल फाइल का विश्लेषण कैसे करें?
- 3. एक्सएसएलटी का उपयोग करके मैं यूट्यूब यूआरएल का विश्लेषण कैसे कर सकता हूं?
- 4. फॉर्मफ्लो का उपयोग करके मैं अन्य भाषाओं का समर्थन कैसे कर सकता हूं?
- 5. हम instaparse का उपयोग कर क्लोजर कोड के लिए व्याकरण कैसे परिभाषित करते हैं?
- 6. मैं codebird.js ट्विटर लाइब्रेरी का उपयोग कैसे कर सकता हूं?
- 7. क्या मैं उन्हें अन्य मॉडलों में आयात करके ईकोर मॉडल का पुन: उपयोग कर सकता हूं?
- 8. डेल्फी 7 का उपयोग करके मैं किसी अन्य एप्लिकेशन को चाबियाँ कैसे भेज सकता हूं?
- 9. मैं java.util में अंतिम रिकॉर्ड कैसे प्राप्त कर सकता हूं। उपसूची() या किसी अन्य विधि का उपयोग करके सूची?
- 10. रूबी स्प्रेडशीट लाइब्रेरी का उपयोग करके मैं एक विशिष्ट सेल को कैसे प्रारूपित कर सकता हूं?
- 11. UIWebView का उपयोग करके, क्या मैं एक कस्टम फ़ॉन्ट का उपयोग कर सकता हूं?
- 12. मैं अजीब का उपयोग करके क्या कर सकता हूं कि मैं पर्ल में नहीं कर सकता?
- 13. क्या मैं PHP और OData का उपयोग करके MySQL डेटा का पर्दाफाश कर सकता हूं?
- 14. मैं एक डीबगर या अन्य उपकरण का पता कैसे लगा सकता हूं जो मेरे सॉफ़्टवेयर का विश्लेषण कर सकता है?
- 15. अमरूद का उपयोग करके मैं यह कैसे कर सकता हूं?
- 16. क्या Arduino IDE का उपयोग कर किसी अन्य लाइब्रेरी से लाइब्रेरी को शामिल करना संभव है?
- 17. मैं पाइथन का उपयोग कर जावास्क्रिप्ट चर का विश्लेषण कैसे कर सकता हूं?
- 18. iText या एंड्रॉइड पर किसी अन्य लाइब्रेरी का उपयोग करके पीडीएफ फ़ाइल कैसे बनाएं?
- 19. पॉको सी ++ लाइब्रेरी का उपयोग करके, मैं डेटा को थ्रेड में कैसे पास कर सकता हूं?
- 20. मैं php का उपयोग कर फ़ाइल को किसी अन्य फ़ोल्डर में कैसे स्थानांतरित कर सकता हूं?
- 21. क्या मैं किसी भी तरह जावा एंड्रॉइड प्रोजेक्ट में सी # कोड या सी # लाइब्रेरी का उपयोग कर सकता हूं?
- 22. फेसबुक ग्राफ़ एपीआई का उपयोग करके, मैं किसी पृष्ठ की सामग्री कैसे प्राप्त कर सकता हूं?
- 23. मैं जावास्क्रिप्ट में "कक्षाएं" का अनुकरण कैसे कर सकता हूं? (किसी तृतीय-पक्ष लाइब्रेरी के साथ या उसके बिना)
- 24. मैं किसी अन्य वर्चुअलबॉक्स अतिथि से एक योनेंट अतिथि का उपयोग कैसे कर सकता हूं?
- 25. किसी अन्य क्लोजर नेमस्पेस
- 26. क्या मैं जेस्ट का उपयोग करके विशिष्ट तर्कों के साथ कार्यों का नकल कर सकता हूं?
- 27. मैं यूआईपीपीरेंस का उपयोग करके प्रॉपर्टी सेट का उपयोग शुरू कर सकता हूं?
- 28. जीआईटी का उपयोग करके, मैं किसी अन्य 'कांटा' से परिवर्तनों को चुनिंदा रूप से खींच/विलय कैसे कर सकता हूं?
- 29. क्या मैं आईफोन ऐप विकास के लिए नेट भाषा का उपयोग कर सकता हूं?
- 30. डलोपेन का उपयोग करके, मैं लोड की गई लाइब्रेरी फ़ाइल में परिवर्तनों का सामना कैसे कर सकता हूं?
@chollida: मैं कुछ समस्या हैक करने की बजाय इस समस्या पर सलाह लेने की कोशिश कर रहा हूं। –
आपको कुछ हैकी नहीं मिलेगा क्योंकि आपने जो कुछ हासिल करने की कोशिश की थी, उसमें आप थोड़ा सा पोस्ट किया था। – octopusgrabbus
@ ऑक्टोपसग्रैबस: मुझे यकीन नहीं है कि आपका क्या मतलब है। मेरे विकल्प जैसे कि मैं उन्हें देखता हूं, हाथ से (हैकी), या एक पार्सर जनरेटर का उपयोग करने के लिए, जिसमें Instaparse सबसे अच्छी तरह विकसित होता है।लेकिन यह बिल्कुल स्पष्ट नहीं था कि ए/ईबीएनएफ में इंडेंटेशन-आधारित व्याकरण को व्यक्त करने के बारे में कैसे जाना है, या क्या Instaparse एक उपयुक्त उपकरण होगा। इसलिए सवाल है। –