.NET में ऐसा कुछ है जो मुझे एक व्याकरण को परिभाषित करने और एक प्रोग्रामिंग भाषा उत्पन्न करने की अनुमति देता है?


18

मेरे पास एक कोर्स है जिसमें प्रोफेसर ने हमें अपने अंतिम प्रोजेक्ट के लिए एक डीएसएल बनाने के लिए कहा है। उन्होंने ग्रहण के साथ हमें पहले पाठ्यक्रम xText में प्रस्तुत किया । यह एक नया पाठ्यक्रम होने के नाते, मैं अभी भी थोड़ा सा फजी हूं कि डोमेन विशिष्ट भाषाओं का क्या अर्थ है।

यह मेरी वर्तमान समझ है: एक डोमेन विशिष्ट भाषा एक भाषा है जो सॉफ्टवेयर विकास में विशिष्ट समस्याओं के लिए बनाई गई है। DSL के उदाहरण PHP, SQL, JavaScript हैं और इसके विपरीत जावा, C #, C ++, रूबी आदि भाषाएँ हैं।

अगर मैं गलत हूं तो कृपया मुझे सुधारने के लिए स्वतंत्र महसूस करें।

मैं क्या जानना चाहूंगा: क्या .NET / Visual Studio के लिए कोई उपकरण है जो Xtext के समान है, जो मुझे एक व्याकरण को परिभाषित करने की अनुमति देता है और एक गतिविधि आरेख के आधार पर प्रोग्रामिंग भाषा उत्पन्न करने की अनुमति दी जाती है?


6
PHP और जावास्क्रिप्ट वास्तव में DSL के नहीं हैं। डीएसएल एक भाषा है जो एक विशेष समस्या डोमेन को संबोधित करती है, जैसे चिकित्सा सेवाएं। एसक्यूएल एक डीएसएल है क्योंकि यह रिलेशनल डेटा सेट के साथ काम करने की समस्या डोमेन के लिए विशिष्ट है। अधिक जानकारी के लिए en.wikipedia.org/wiki/Domain-specific_language देखें ।
रॉबर्ट हार्वे

शायद नेमारल?
cnd

जवाबों:


11

सबसे आसान तरीका एक धाराप्रवाह इंटरफ़ेस है । इसके लिए किसी भी उपकरण की आवश्यकता नहीं है, और आपको महान इंटेलीसेनस समर्थन देता है, लेकिन आपको अभी भी .NET-थोड़े में चीजों को लिखना होगा, जैसे कि

 Mix.Paint(Color.Green).With.Paint(Color.Red);

वैकल्पिक रूप से, आप Boo में सुंदर DSL लिख सकते हैं । नहीं है एक पूरी किताब उस विषय पर।


10

आप ANTLR (या लैंग्वेज रिकॉग्निशन के लिए ANother Tool) एक पार्सर जनरेटर की कोशिश कर सकते हैं जो डॉटनेट के लिए उपलब्ध अन्य लोगों में से है। समुदाय में आप sql, c # और कई अन्य भाषाओं की परिभाषाएँ पा सकते हैं।

गूगल के अनुसार भी ide समर्थन है:


अपडेट: ANTLR4 केवल जावा का उत्सर्जन करता है, जबकि ANTLR3 अभी भी C # का समर्थन करता है, लेकिन यह कोई बड़ा अपडेट नहीं देखेगा।
स्टेफानो सैनफिलिपो

3

आपका पहला सवाल - एक डोमेन विशिष्ट भाषा क्या है ... क्योंकि यह एक टिप्पणी में फिट होने के लिए बहुत बड़ा है।

एक डोमेन विशिष्ट भाषा एक भाषा है जिसे किसी विशेष समस्या डोमेन में काम करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, अवास्तविक इंजन (पहले व्यक्ति निशानेबाजों के लिए प्रयुक्त) के भीतर, अवास्तविक नामक एक डोमेन विशिष्ट भाषा है जो किसी को अवास्तविक इंजन के व्यवहार को संशोधित करने की अनुमति देती है। यह भाषा सामान्य समस्याओं को हल करने के लिए डिज़ाइन की गई है, बल्कि इसके विशिष्ट डोमेन के लिए विवश है। Redcode (corewars के लिए) एक और डोमेन विशिष्ट भाषा होगी। प्रसंग मुक्त कला के भीतर की भाषा अपने डोमेन के लिए विशिष्ट है।

यह विचार यह है कि एक डोमेन विशिष्ट भाषा के साथ, एक डीएसएल बना सकता है जो हाथ में समस्या को बारीकी से दिखाता है। इस बिंदु पर, DLS में प्रोग्राम करना आसान है, क्योंकि समस्या डोमेन को संभालने के लिए जोड़े गए पुस्तकालयों के साथ सामान्य भाषा में भी प्रोग्राम करना है।


आपके दूसरे प्रश्न के रूप में - C # में उपकरण ... मुझे C # नहीं पता है और इस प्रकार वे उपकरण भी नहीं जानते हैं। उस ने कहा, जब मैं कॉलेज में कंपाइलर क्लास ले रहा था, तो दो उपकरण जो इस्तेमाल किए गए थे (और मेरे पास तब से हैं) लेक्स और याक हैं। स्टैक ओवरफ्लो में ... C # के लिए Lex / Yacc?


2

विज़ुअल स्टूडियो के लिए एक विज़ुअलाइज़ेशन और मॉडलिंग एसडीके है जो टेक्स्ट टेम्प्लेटिंग (टी 4 टेम्पलेट) और डोमेन-विशिष्ट भाषाओं का समर्थन करता है।

http://msdn.microsoft.com/en-us/library/dd820703.aspx


1

इस साइट में आप के लिए दिलचस्प हो सकता है: http://nemerle.org । यह अमीर मेटाप्रोग्रामिंग सुविधाओं के साथ .net मंच के लिए भाषा है। हाल ही में, परियोजना JetBrains के विंग के तहत है: http://blogs.jetbrains.com/dotnet/2012/06/jetbrains-and-nemerle/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.