Wednesday, 15 January 2014

parsing - Parse PHP source codes and extract some informations -


मेरे पास इस संरचना के साथ कुछ फ़ाइलें हैं:

  & lt;? Php "something" ; स्विच करें ($ _ GET ['कार्रवाई']) {केस 'चरण 1': गूंज 'somethings'; टूटना; मामले 'step2': गूंज 'somethings'; स्विच ($ _ GET ['अनुभाग']) {मामला 'खंड 1': गूंज 'somethings'; टूटना; } टूटना; मामला 'कदम 3': गूंज 'somethings'; टूटना; }? & Gt;   

मेरे बैकऑफ़िस में, मैं इन फ़ाइलों को पार्स करना चाहता हूं और प्रत्येक के लिए "स्विच ($ _ GET ['action']) के" केस "दिखाता हूं। इस उदाहरण में यह "चरण 1", "चरण 2" और "चरण 3" होगा।

N.B: मैं स्विच ($ _ GET ['अनुभाग']) को पार्स करने के लिए नहीं हूं। मैं बस स्विच के मामलों को निकालने के लिए वान करता हूँ ($ _ GET ['action'])।

मैंने "token_get_all" की कोशिश की, लेकिन मैंने उस नतीजे को समाप्त नहीं किया जिसके परिणाम मैं देख रहा हूं।

आपकी मदद के लिए धन्यवाद, मैं सराहना करूंगा।

ऐसा करने के लिए, आपको संभवतः एक पूर्ण PHP पार्सर की जरूरत है, जो कि एएसटी के बराबर है।

तब आप एएसटी पर चल सकते हैं, स्विच स्टेटमेंट पा सकते हैं, उन लोगों की जांच करें जिनके पास नोड्स का निरीक्षण करने के लिए पिक प्रक्रियात्मक कोड लिखकर $ _GET ['कार्रवाई'] वाले एक उप-रेखा का संदर्भ लें, ऊपर और नीचे चढ़ो पेड़, आदि, मामलों को चुनना और अंत में उन्हें प्रिंट, अपने लक्ष्य को प्राप्त करने के लिए।

token_get_all शुरू करने के लिए एक जगह है, अगर आप अपने स्वयं के PHP पार्सर लिखना चाहते हैं इससे आपको लगता है कि इससे कहीं अधिक प्रयास लगते हैं; भाषा जटिल है और बहुत अच्छी तरह से प्रलेखित नहीं है।

पीपीए में एक PHP पार्सर है, जो टॉन्क_गेट_ऑल का उपयोग करते हुए कोडित है; देख । मुझे नहीं पता कि यह कैसे मजबूत है; मैंने यहां पर ऐसे व्यक्ति के साथ बातचीत की है जो इसे लिखा है, जो चतुर लगता है पर्याप्त है यह दावा करता है कि यह अभिव्यक्ति को विस्तार से नहीं समझाता है, लेकिन आप उस से अधिक की आवश्यकता नहीं दिखाई देते। आप स्विच के लिए खोज करने के लिए कोड और मामलों को ऊपर और नीचे जो कुछ भी सिंटैक्स पेड़ ने परिभाषित किया है, के लिए मिल जाएगा। [असल में, आप अभिव्यक्ति की सामग्री, यदि आप स्विच एक्सप्रेशन की सामग्री पर भेद करना चाहते हैं]।

यदि आप एक और अधिक परिष्कृत PHP पार्सर चाहते हैं, तो एक आग से परीक्षण किया गया है, जो इन प्रकार के कार्यों को करने के लिए डिज़ाइन किया गया है जिन्हें आप अधिक जानकारी के लिए पूछ सकते हैं और मैं आपको हमारे व्यावसायिक संस्करण के बारे में बताऊंगा। [मैं यहां एक लिंक डालूंगा ताकि आप इसे इस नृत्य के बिना पा सकें, लेकिन कुछ तो मध्यस्थों को ऐसा पसंद नहीं है, इसलिए आपको पूछना है]। हमारा भी आपको सतह सिंटेक्स के संदर्भ में पैटर्न को परिभाषित करने देता है, उदा।,

  पैटर्न लक्षित_स्विट्स (मामलों: मामले_कांगें) = "स्विच ($ _GET ['कार्रवाई']) {\ cases}";   

आप एएसटीएस के लिए इस पद्धति से मेल खाते के लिए हमारे उपकरण से पूछ सकते हैं, और शीर्ष खंड ("मामलों") में सूचीबद्ध पैटर्न चर को उप-आधार बाँध सकते हैं और पैटर्न बॉडी में इस्तेमाल किया जा सकता है ( "\ मामलों") के रूप में प्लेसहोल्डर। के साथ \ मामलों बाध्य, आप अन्य पैटर्न से मेल खा सकते हैं:

  पैटर्न मामलों (case_target: अभिव्यक्ति, s: कथन, rest_of_cases: case_clauses) = "केस \ case_target: \s \ rest_of_cases";   

जो "\ मामलों" की सूची में पहला मामला मिलेगा, बाध्य करें \ case_target को उस मूल्य के लिए जिसे आप प्रिंट करना चाहते हैं, और शेष \ rest_of_cases को बाकी मामले की सूची में बाँध लें। आप उस बाउंड \ केस_ट्रेज को मुद्रित करने के लिए टूल का उपयोग कर सकते हैं, अपना परिणाम बना सकते हैं, और फिर इस सूची को बाकी की सूची पर दोहरा सकते हैं।

No comments:

Post a Comment