2008-09-19 16 views
23

Ometa "पैटर्न मिलान के लिए एक नई ऑब्जेक्ट उन्मुख भाषा है।" मुझे ओज़ टूल्स जैसी भाषाओं में मिलान पैटर्न का सामना करना पड़ा है जो लीक्स/वाईएसी या पाइपरिंग जैसे व्याकरण को पार्स करने के लिए है। उदाहरण कोड देखने, चर्चाओं को पढ़ने और किसी मित्र से बात करने के बावजूद, मैं अभी भी ओमेटा विशेष (या कम से कम, कुछ लोगों को क्यों लगता है) की वास्तविक समझ प्राप्त करने में सक्षम नहीं हूं। कोई स्पष्टीकरण?ओमेटा विशेष क्या बनाता है?

उत्तर

8

यह एक धातुभाषा है, जो मैं बता सकता हूं। आप नई भाषा संरचनाएं बना सकते हैं, और डीएसएल बना सकते हैं; लेकिन सबसे आकर्षक बात यह है कि आप मौजूदा पार्सर्स से एक भाषा का विस्तार करने के लिए उपclass कर सकते हैं। वैसे भी, मैं इसके बारे में याद रख सकता हूं।

मैंने पाया इस दिलचस्प होने के लिए: http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html

+1

सबक्लासिंग एकमात्र तरीका नहीं है जिसमें आप व्याकरण को जोड़ सकते हैं, ओमेटा भी एक विदेशी नियम आमंत्रण तंत्र प्रदान करता है। यह तब उपयोगी होता है जब आप एक से अधिक कक्षाओं से "व्युत्पन्न" करना चाहते हैं। –

11

इसके अलावा, मेरे लिए सबसे महत्वपूर्ण, Ometa की स्क्वीक बंदरगाह बाएं पुनरावर्ती नियमों के लिए अनुमति देता है।

अपनी पीईजी विरासत से यह बैकट्रैकिंग और असीमित लुकहेड प्राप्त करता है। पिछले पार्स परिणामों के ज्ञापन रैखिक पार्स समय (लगभग हर समय (*)) के लिए अनुमति देता है।

उच्च-आदेश प्रस्तुतियों में से एक को व्याकरण को आसानी से दोबारा करने की अनुमति मिलती है।

This paper - पैकेट पार्सर्स बाएं रिकर्सन का समर्थन कर सकते हैं - बाएं रिकर्सिव गुणों को बताते हैं।

(*) पेपर की धारा 5 बताती है कि कोई सुपरलाइनर पार्स टाइम्स का सामना कर सकता है, लेकिन यह समस्या व्यावहारिक व्याकरण में प्रकट नहीं होती है।

+0

संभवतः आप दोनों बाएं रिकर्सन और रैखिक पार्स टाइम्स नहीं हो सकते हैं, हालांकि? –

+0

हाँ, आप यादों के कारण कर सकते हैं। वैसे, अधिकतर। पेपर की धारा 5 आगे बताती है। हाइट ऑर्डर प्रोडक्शंस के लिए –

+0

+1 :) – elias

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