के भीतर फ्लेक्स/बायसन जैसी कार्यक्षमता मैं PHP में फ्लेक्स/बायसन (या लेक्स/वाईएसी, एट अल।) समर्थन प्राप्त करने का एक तरीका ढूंढ रहा हूं। विशेष रूप से, मैं एक वेब यूआई में एक बुलियन क्वेरी पार्सर को कार्यान्वित कर रहा हूं और सभी ऑपरेशन को PHP के अंदर रखना चाहूंगा (जैसा कि सी पार्सर को कॉल करने के लिए, या चीजों को पाइथन आदि से गुजरने के विपरीत)।PHP
PHP
उत्तर
LIME पार्सर PHP के लिए जनरेटर:
पूरा LALR (1) पार्सर जेनरेटर और इंजन (बाइसन या YACC की तरह), लेकिन यह सभी PHP में किया है, और इनपुट व्याकरण आसान और अधिक maintainable है । PHP में अपने कार्यों को लिखें। PHP आउटपुट कोड जेनरेट करें। PHP के साथ अपने पार्सर को ड्राइव करें। एक भाषा बनाना चाहते हैं?
अद्यतन:
जब से मैं ऊपर लिखा है, मैं वहाँ पार्सर पीढ़ी के लिए कुछ अन्य उपकरण हैं कि देखते हैं, यहाँ की घोषणा की:
http://wezfurlong.org/blog/2006/nov/parser-and-lexer-generators-for-php/
सुनिश्चित नहीं हैं कि अगर इन कर रहे हैं 2014 में अब बेहतर बनाए रखा गया है, लेकिन मुझे वेज़ फर्लोंग पता है, वह पीडीओ का मूल डेवलपर था, और वह एक बहुत अच्छा डेवलपर है।
पीईआर पुस्तकालय में कक्षाएं LexerGenerator और ParserGenerator हैं। लेक्सर जेनरेटर सिंटैक्स re2c के साथ संगत है, पार्सर जेनरेटर सिंटैक्स Lemon Parser generator के साथ संगत है।
क्या आपने PHP में पीईजी पार्सर जनरेटर को देखने का प्रयास किया है: https://github.com/maetl/php-peg?
या एक पार्सर संयोजक दृष्टिकोण: http://qntm.org/locoparser?
क्या आपने कभी इसका इस्तेमाल किया है? इसे लगभग दो वर्षों में अपडेट नहीं किया गया है, और इसमें कोई दायर बग, खुली या बंद नहीं है, इसलिए मुझे विश्वास करने में संकोच नहीं है कि इसका परीक्षण किया गया है या वास्तव में उपयोग किया जाता है। – Wang
नहीं, मुझे कभी भी PHP में एक पूर्ण उड़ा पार्सर लागू करने की आवश्यकता नहीं है। तथ्य यह है कि यह छोड़ दिया गया है, और कोई अन्य उपकरण मौजूद नहीं है, यह एक सुराग हो सकता है कि PHP नौकरियों को पार करने के लिए सही उपकरण नहीं है। –
कोई इसे अपडेट करने का प्रयास कर रहा है: https://github.com/rvanvelzen/lime (2 साल में छुआ नहीं गया है, लेकिन यह एक शुरुआत है!) – Andrea