2011-11-03 19 views
13

मुझे पता है कि Lex and Yacc in PHP से पहले 1 साल पहले पूछा गया था।PHP लेक्सर और पार्सर जेनरेटर?

क्या कोई नया परिपक्व PHP पार्सर जनरेटर है? मेरी खोजों ने मुझे निम्नलिखित लोगों तक पहुंचाया, आप उनके बारे में क्या सोचते हैं, कोई अन्य?

  • code.google.com/p/antlrphpruntime/: एएनटीएलआर PHP संस्करण लेकिन यह बहुत बीटा संस्करण प्रतीत होता है और मुझे लगता है कि ऐसा करने के लिए बहुत सारे काम हैं। लाभ यह है कि मैं एएनटीएलआर वर्क्स टूल में व्याकरण लिख सकता हूं।
  • pear.php.net/package/PHP_ParserGenerator/docs/0.1.7/: मैंने कोशिश की लेकिन यह PHP_LexerGenerator के साथ उपयोग करने के लिए बहुत जटिल लगता है।
  • sourceforge.net/projects/lime-php/: मैं कोशिश नहीं की
  • bitbucket.org/wez/lemon-php/downloads: मैं कोशिश नहीं की
  • bitbucket.org/wez/jlexphp/ डाउनलोड: मैं कोशिश नहीं की

[उत्तर:]: Is there an alternative for flex/bison that is usable on 8-bit embedded systems?

इस पोस्ट मुझे उत्पन्न ANTLR कोड के सबसे समझने के लिए अनुमति दी किसी ने मुझे एक पुराने सवाल करने के लिए इस अद्भुत लिंक दे दी है। तो मेरी पसंद वही रहती है: एएनटीएलआर हालांकि परियोजना मृत लगती है। मुझे उम्मीद है कि मुझे कोड को बदलना नहीं होगा क्योंकि मैं इसे बनाए रखने योग्य रखना चाहता हूं।

मैं थोड़ा इंतजार करेंगे देखने के लिए अगर वहाँ एक और उत्तर अन्यथा मैं अपने सलाह को स्वीकार करेंगे ANTLR

+0

यदि आपके पास PHP के लिए जिम्मेदार व्याकरण है, तो CoCo/R (ssw.jku.at/coco/) आज़माएं। मैं अभी काम पर एक परियोजना के लिए इसका उपयोग कर रहा हूं और यह बेहतर काम करता है। – xbonez

+0

मैं code.google.com/p/antlrphpruntime का उपयोग नहीं करता: यह (AFAIK) सक्रिय रूप से विकसित नहीं किया जा रहा है, और यह केवल न्यूनतम एएनटीएलआर-लक्ष्य समर्थन का सबसे कम समर्थन करता है। यही कारण है कि यह डिफ़ॉल्ट रूप से एएनटीएलआर उपकरण में शामिल नहीं है। PHP_ParserGenerator के लिए यह वही है: मैं इसके लिए नहीं जाऊंगा (अधिक दस्तावेज नहीं, और यह एक त्याग दिया गया प्रोजेक्ट है)। अन्य 3 टूल्स मेरे साथ भी अपरिचित हैं: मेरा सुझाव है कि आप उन्हें आज़माएं। –

+0

@xbonez: मैं 100% निश्चित नहीं हूं लेकिन मुझे नहीं लगता कि आप मेरी जरूरतों को समझ चुके हैं। मुझे एक विशिष्ट व्याकरण को पार्स करने के लिए PHP में लिखे गए एक पार्सर को उत्पन्न करने की आवश्यकता है (PHP भाषा को पार्स नहीं करना)। CoCo/R अच्छा लग रहा है लेकिन मुझे एक PHP जनरेटर नहीं मिल रहा है। –

उत्तर

6

का उपयोग कर रहा ANTLR आजमाइए करने का प्रस्ताव था रखने के लिए है। ANTLRWorks सहायक हो सकता है।

मैंने शुद्ध PHP में एक एलएल (1) पार्सर जेनरेटर लिखा था, क्योंकि मुझे अन्य PHP- आधारित समाधानों से अवगत नहीं था।

+0

मैं इस समय एएनटीएलआर की कोशिश कर रहा हूं लेकिन जेनरेट कोड में बहुत सारी त्रुटियां हैं। उदाहरण के लिए, कुछ अपवाद गायब हैं और पार्सर अप्रत्याशित अपवाद उठाता है। क्या आपने उस घटक का उपयोग किया था? http://code.google.com/p/antlrphpruntime/ –

+0

एचएम, वास्तव में नहीं। मैंने हाल ही में एक्शनस्क्रिप्ट रनटाइम की कोशिश की - जो वर्तमान में टूटा हुआ है। लेकिन मुझे याद है, कि मैंने एएनटीएलआर और PHP रनटाइम के साथ खेला। उस समय, चीजें काम करने लगती थीं। – SteAp

+0

यूआरएल टूटा हुआ है –

2
+0

धन्यवाद। हालांकि अब मैं एएनटीएलआर जेनरेट पार्सर से काफी खुश हूं, फिर भी मुझे दूसरों के साथ दिलचस्पी है क्योंकि एंटरल बहुत धीमा दिखता है। क्या आपने पीईजी की कोशिश की, क्या इसमें अच्छा प्रदर्शन है। –

+0

वैसे, मुझे लगता है कि यह परियोजना पीईजी लगभग मर चुका है .... अंतिम प्रतिबद्धता 03/2011, अगस्त 2011 में घोषित 10 बग। –

+0

मुझे प्रदर्शन के बारे में पता नहीं है, लेकिन मुझे पीईजी पसंद है और यह है, मुझे लगता है, PHP में एकमात्र पीईजी कार्यान्वयन। – jcubic

6

मैं Jison, जावास्क्रिप्ट में एक बाइसन क्लोन, पोर्ट किया है php के लिए PEG है। परिणाम एक हत्यारा पार्सर हैं, जो बहुत ही सरल और बहुत जटिल लेक्सिंग/पार्सिंग को संभालने में सक्षम हैं। यह अब जेसन का हिस्सा है, लेकिन my fork में कुछ अपडेट हैं।

फ़ाइलें here हैं। उस पृष्ठ में रीडमी देखें, आप एक ही समय में एक जावास्क्रिप्ट और PHP पार्सर बनाते हैं जो समान या अलग-अलग चीजों को करने में सक्षम हैं।

यह स्थिर, तेज़, आसान और उपयोग करने में मजेदार है।

+0

मैं जितनी जल्दी हो सके जांचूंगा, यह बहुत अच्छा पढ़ता है। –

+0

पोर्ट किए गए PHP पर मृत लिंक: / – Dennis

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