2012-01-27 14 views
5

कभी-कभी, रनटाइम पर लाइब्रेरी उत्पन्न करने वाले पार्सर्स को शामिल करने के बजाय रेगेक्स खोज के लिए अत्यधिक अनुकूलित फ़ंक्शन होना सुविधाजनक होगा। क्या कोई पार्सर जनरेटर है जो ऐसी भूमिका में फिट होगा?नियमित अभिव्यक्ति पार्सर जनरेटर

आदर्श रूप में, यह होगा:

  • एक एकल सी समारोह
  • बनाने एक DFA दिया नियमित अभिव्यक्ति के लिए इसी
  • साधारण मामलों में KMP या बोयर-मूर के रूप में के रूप में कुशल हो उत्पन्न

उत्तर

6

यहाँ उपकरण है कि सब आपकी आवश्यकताओं के अनुरूप की सूची है:

  1. लेक्स/Flex शायद है नियमित अभिव्यक्तियों से पार्सर्स बनाने के लिए सबसे प्रसिद्ध उपकरण। लेक्स कई परिदृश्यों में उपयोगी है लेकिन यह हेवीवेट प्रोसेसिंग लूप की वजह से सरल पार्सिंग अनुप्रयोगों के लिए बहुत अधिक ओवरहेड लगा सकता है जो स्ट्रीम "पुल" मॉडल और इनपुट बफरिंग को लगाता है। यह सरल तारों की बजाय पूरी फाइलों को पार्स करने के लिए डिज़ाइन किया गया था।

  2. । यह एक प्री-प्रोसेसर है जो नियमित अभिव्यक्तियों से सी-आधारित पहचानकर्ता उत्पन्न करता है। जेनरेटेड राज्य मशीनें बहुत तेजी से चलती हैं और निर्भरता से मुक्त किसी भी कार्यक्रम में आसानी से एकीकृत होती हैं।

  3. Ragel State Machine Compiler। एक और प्री-प्रोसेसर जो उच्च स्तर की नियमित भाषा नोटेशन से एफएसएम कोड उत्पन्न करता है (नियमित अभिव्यक्ति इस परिभाषा का एक मामला है)। यह कई भाषाओं (सी, सी ++, ऑब्जेक्टिव-सी, डी, जावा और रूबी) के लिए काम करता है, विभिन्न एफएसएम घटनाओं आदि पर उपयोगकर्ता क्रियाएं निष्पादित कर सकता है। और भी, यह विज़ुअलाइज़ेशन के लिए ग्राफ़विज़ के प्रारूप में राज्य मशीन परिभाषा उत्पन्न कर सकता है राज्यों और संक्रमणों के।

5

लेक्स और Flex प्रभावी ढंग से regexp-to-C कंपाइलर हैं।

+0

किसी भी तरह, मैंने उन्हें विशेष रूप से टोकननाइज़र के रूप में सोचा था। –

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