2012-01-30 18 views
7

अभ्यास के लिए कुछ डोमेन विशिष्ट भाषा (डीएसएल) बनाना चाहते हैं, पहले विचार यह है कि Brainfuck के दुभाषिया या कंपाइलर को लिखना है। ">", "<", "+", "-", ".", ",", "[", "]": पहले विचार इस तरह के कार्यों को ओवरराइड करने के Brainfuck कमांड के रूप में वे व्यवहार करेंगे था। दुर्भाग्यवश आप "." के रूप में फ़ंक्शन को डीकलेयर नहीं कर सकते हैं।स्केल में ब्रेनफक कंपाइलर

क्या स्कैला में इसे लिखने का बेहतर समाधान है?

उत्तर

6

आप इसे विशेष रूप से अपने प्रश्न में नहीं कहते हैं, लेकिन ऐसा लगता है कि जब आप डीएसएल कहते हैं, तो आपका मतलब Internal DSL है?

आंतरिक डीएसएल महान हैं, लेकिन मूल रूप से आप हमेशा उस भाषा के वाक्यविन्यास से सीमित रहते हैं जिसका आप उपयोग करने का प्रयास कर रहे हैं। स्कैला एक आंतरिक डीएसएल लिखने के लिए एक विशेष रूप से अच्छी भाषा है, क्योंकि इसमें एक सरल और लचीला वाक्यविन्यास है। लेकिन यह असीम रूप से लचीला नहीं है।

अन्य रास्ते आप पता लगाने के लिए चाहते हो सकता है हो सकता है:

  1. के बजाय एक अलग प्रतीक चुनें "।"। स्कैला यूनिकोड पहचानकर्ताओं का समर्थन कर सकता है, इसलिए यदि आप उस सड़क पर जाने की कल्पना करते हैं, तो शायद आप "∙" का उपयोग कर सकते हैं?
  2. इसके बजाय External DSL बनाएं?
5

मुझे लगता है कि आप इस example से अवगत हैं।

यह example टिप्पणियों में Mikaël Mayer द्वारा सुझाया गया है।

+0

क्या कोई और शानदार तरीका है? –

+0

मुझे नहीं पता, मुझे बस स्कैला आधिकारिक साइट से उस विशेष उदाहरण को याद है। – fiction

1

मैंने एक ब्रेनफक दुभाषिया लिखा जो स्कैला पार्सर संयोजकों का उपयोग करता है। स्रोत कोड here है यदि यह मदद कर सकता है।