मुझे एक छोटी 'मिनी भाषा' को पार्स करने की ज़रूरत है जो उपयोगकर्ता मेरी साइट पर टाइप कर सकते हैं। मैं सोच रहा था कि लेक्स और जेएसी या एंटरल के समकक्ष php की दुनिया के लिए क्या हैं।php के लिए एक अच्छा पार्सर जेनरेटर क्या है?
उत्तर
मैं LIME Parser generator for PHP कुछ साल पहले करता था, और यह पहले से ही परिपक्व और स्थिर था।
पार्सर जेनरेटर स्वयं PHP में लिखा गया है, जो किसी भी तकनीकी अर्थ में वास्तव में कोई फर्क नहीं पड़ता - क्योंकि हमें केवल जेनरेटेड पार्सर PHP में होना चाहिए - लेकिन मुझे यह विवरण पसंद है।
मैं जोड़ने चाहिए:
मैं कहाँ "पुराना" लिखा यह अधिक है कि मैं कहना सही होगा यह मेरे पीएचपी ;-)
संपादित में सॉफ्टवेयर लेखन के बारे में कम क्षमाप्रार्थी लगता है "के साथ खेला गया"। मैंने अभी तक चूने का उपयोग करके कोई उत्पादन कोड नहीं लिखा है। लेकिन मुझे ऐसा करने का कोई कारण नहीं दिखता है।
चूने के साथ प्रदान किया गया "कैलकुलेटर उदाहरण" एक टोकनिज() विधि का उपयोग करता है जो कि लेक्स की शक्ति के लिए वास्तविक विकल्प से बहुत दूर है। लेकिन अगर आपको वास्तविक टोकननाइज़र की आवश्यकता है तो "बैक एंड" पर चूने को टोकन खाने के लिए "फ्रंट एंड" पर लेक्स का उपयोग करना संभव होना चाहिए।
मैंने जेसन, जैस्क्रिप्ट में एक बाइसन क्लोन को PHP में जेसन को पोर्ट किया है। परिणाम एक हत्यारा पार्सर हैं, जो बहुत ही सरल और बहुत जटिल लेक्सिंग/पार्सिंग को संभालने में सक्षम हैं। यह अब जेसन का हिस्सा है, लेकिन मेरे कांटा में कुछ अपडेट हैं - https://github.com/robertleeplummerjr/jison। फाइलें यहां हैं - https://github.com/robertleeplummerjr/jison/tree/master/ports/php
उस पृष्ठ में रीडमी देखें, आप एक ही समय में एक जावास्क्रिप्ट और PHP पार्सर बनाते हैं जो समान या अलग-अलग चीजों को करने में सक्षम हैं। ठंडा!
मैं आपको अपना खुद का पार्सर लिखने की सलाह देता हूं, क्योंकि यह आज काफी आसान है।
ऐसा करने का सबसे आसान तरीका मेरी वाक्य में प्रत्येक वाक्यविन्यास प्रकार (अभिव्यक्ति, परीक्षण, पाश, आदि) के लिए एक वर्ग बनाने के लिए मेरी राय में होगा।
प्रत्येक वर्ग मेंफिर, कोड निम्न विधियों:
- एक विधि एक स्ट्रिंग से निर्धारण करेगा अगर स्ट्रिंग दिए गए प्रकार का है (
a+b
प्रकार 'अभिव्यक्ति' की,if(b)
है नहीं) इस प्रकार के "रन" के लिए
- एक विधि (
a+b
a->run() + b->run()
वापस आ जाएगी, औरa->run()
मान प्रदान करेगा)
- 1. एक अच्छा सी # कंपाइलर-कंपाइलर/पार्सर जेनरेटर क्या है?
- 2. PHP लेक्सर और पार्सर जेनरेटर?
- 3. PHP के लिए कोई पीडीएफ पार्सर है?
- 4. जावास्क्रिप्ट पार्सर जेनरेटर
- 5. क्या .NET के लिए कोई अच्छा yacc/bison प्रकार LALR पार्सर जेनरेटर है?
- 6. पायथन पार्सर जेनरेटर पर सलाह
- 7. क्या एएनटीएलआर पार्सर जनरेटर एक सी ++ ऐप के लिए बाध्य स्मृति के साथ सबसे अच्छा है?
- 8. एलएएलआर पार्सर जेनरेटर कार्यान्वयन समस्या
- 9. एक अच्छा पता पार्सर
- 10. एक अच्छा ओकंपल पार्सर?
- 11. जावा के लिए एक अच्छा हल्के एचएल 7 पार्सर है?
- 12. पर्ल के लिए सबसे अच्छा एक्सएमएल पार्सर क्या है?
- 13. जावा के लिए सबसे अच्छा एचटीएमएल पार्सर क्या है?
- 14. एक साधारण सीरियल नंबर जेनरेटर/सत्यापनकर्ता के विकास के लिए एक अच्छा तरीका क्या है?
- 15. पायथन: क्या एक एक्सएमएल पार्सर जेनरेटर के रूप में लागू किया गया है?
- 16. क्या PHP के लिए jsoup-like HTML पार्सर है?
- 17. पार्सर जेनरेटर और रैगेल ... अपना खुद का डी पार्सर बनाना
- 18. एक अच्छा जावास्क्रिप्ट आरडीएफए पार्सर कार्यान्वयन क्या है?
- 19. एक अच्छा सी/सी ++ सीएसएस पार्सर क्या है?
- 20. PHP के डोम पार्सर
- 21. कैशग्रंड फ़ाइलों के लिए PHP पार्सर?
- 22. PHP एपीआई कुंजी जेनरेटर
- 23. PHP MIDI जेनरेटर
- 24. PHP में नियमित अभिव्यक्तियों के लिए एक पार्सर?
- 25. केवल कॉन्फ़िगर करने योग्य-पार्सर्स के बजाय पार्सर जेनरेटर क्यों?
- 26. Google जैसी खोज क्वेरी के लिए एक अच्छा पायथन पार्सर क्या है?
- 27. एक PHP ढांचा क्या है और क्या अच्छा है?
- 28. क्या Google Play के लिए कुछ "फ़ीचर ग्राफिक" जेनरेटर है?
- 29. एक अच्छा PHP विकी इंजन
- 30. पर्ल के लिए एक अच्छा विकास वातावरण क्या है?
मैं इस जनरेटर देखा था, लेकिन यह 4 साल पुराना है। मैं सोच रहा था कि – Toad
कुछ और अद्यतित हो सकता है अगली बार लिंक के केवल एक गुच्छा के बजाय कुछ सामग्री देखें। –
@ts। मुझे लगता है कि अब आप जानते हैं, लेकिन यह पूरी तरह से आपकी ज़िम्मेदारी है, और आपका अकेला, एक पोस्ट लेखक के रूप में :) –