2009-02-14 21 views
6

क्या किसी को एक पार्सर के बारे में पता है जो विकी स्वरूपित पाठ को इनपुट के रूप में ले सकता है और इकाइयों के पेड़ का उत्पादन कर सकता है, वैसे ही एक एक्सएमएल पार्सर एक इकाई के पेड़ का उत्पादन करता है? स्पष्ट करने के लिए, मैं कुछ ऐसे ही पाठ ले जाएगा के लिए देख रहा हूँ:कौन सा विकी पार्सर?

-Intro- 
Textual stuff in ''italics'' 
--Subhead-- 
Yet more text 

और एक पेड़ तीन बच्चे नोड्स जिनमें से एक (उपशाखा) अपने आप में एक बच्चा है के साथ पहचान में निहित उत्पादन। मैं ऐसा कुछ ढूंढ रहा हूं जो http://meta.wikimedia.org/wiki/Help:Wikitext पर वर्णित "सरल" विकी प्रारूप को समझ सके।

मुझे विकी टेक्स्ट के लिए कई लेक्सर्स के बारे में पता है, लेकिन कोई पेड़ पार्सर्स नहीं है। मैं कुछ ओपन सोर्स की तलाश में हूं और सी या सी ++ में लिखा है।

उत्तर

2

आप इसे सीधे विकी-स्वरूपित पृष्ठ से नहीं कर सकते हैं क्योंकि विकी प्रारूप में पूरी जानकारी नहीं है। इसके बजाए, विकी प्रारूप पाठ का मूल रूप से नियमित अभिव्यक्ति नियमों के समूह द्वारा अनुवाद किया जाता है और HTML या XHTML में पूर्वनिर्धारित पृष्ठ ढांचे में डाला जाता है।

कुछ हल्के पाठ प्रारूप (जैसे वस्त्र या क्रोल) के लिए उपयुक्त फॉर्मेटर ढूंढना सबसे आसान तरीका है, एक्सएचटीएमएल उत्पन्न करने के माध्यम से पास करें, और फिर किसी भी नियमित पार्सर का उपयोग करके एक्सएचटीएमएल को पार्स करें।

1

आप इस पर्ल मॉड्यूल से बाहर कुछ उपाय प्राप्त हो सकता है:

http://search.cpan.org/dist/HTML-WikiConverter-MediaWiki/

मैं समझता हूँ कि आप C/C++ के लिए देख रहे हैं, लेकिन हे, आप कुछ अच्छाई मिल सकता है।

2

मैं क्या करना होगा क्या

  1. कि विकी भाषा के लिए एक BNF वाक्यविन्यास लिखें है। चूंकि यह आसान है, बीएनएफ भी सरल होगा।
  2. इसके लिए एक पार्सर बनाने के लिए The Spirit Framework का उपयोग करें। यह वास्तव में सरल है (उस साधारण चीजों के लिए), और बीएनएफ वाक्यविन्यास का अनुवाद सी ++ में स्वाभाविक रूप से किया जाता है। Java Wikipedia API

    हो सकता है कि आप अपने सी या सी ++ कार्यान्वयन के लिए कुछ विचार प्राप्त कर सकते हैं:

2

मैं एक पार्सर, जो आंतरिक रूप से जावा में इस तरह के एक पेड़ बनाता लिखा है?

HTMLConverter class आंतरिक नोड्स पेड़ को HTML मार्कअप में बदलने के लिए लेता है।

2

आप Mylyn WikiText पर एक नज़र डालना चाहते हैं, जो कि एक पार्सर है जो विकी मार्कअप को विभिन्न एक्सएमएल प्रारूपों में परिवर्तित करने के लिए बिल्डर डिजाइन पैटर्न का उपयोग करता है। यह HTML, ग्रहण सहायता, डीआईटीए और डॉकबुक के लिए बिल्डरों के साथ जहाज करता है। आउटपुट को अनुकूलित करने के लिए आप अपने खुद के निर्माता का उपयोग कर सकते हैं।

पार्सर वस्त्र, मीडियाविकि, ट्रैकविकि, TWiki और संगम मार्कअप को संभाल सकता है। यह एक्स्टेंसिबल है ताकि आप चाहें तो नई भाषाएं जोड़ सकें।

पुस्तकालय जावा

0

Wiki Parser है आप वास्तव में क्या जरूरत है: यह नियमित XML करने के लिए मीडिया विकि वाक्य रचना अनुवाद करता है। यह बहुत अधिक पेज संरचना और हैंडल टेम्पलेट्स, छवि दीर्घाओं, रीडायरेक्ट और अधिक संभालता है।

यह अन्य पार्सर्स की तुलना में तीव्रता के आदेश भी है, वर्तमान अंग्रेजी विकिपीडिया के सभी 55 जीबी पार्स करने के लिए लगभग 2-3 घंटे लगते हैं।

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