Forth के एक बहुत ही सरल उपसमूह के लिए एक एवैल्यूएटर बनाइए।
Forth एक स्टैक पर आधारित प्रोग्रामिंग भाषा है। Forth के एक छोटे उपसमूह के लिए एक बहुत ही बुनियादी एवैल्यूएटर बनाइए।
आपके एवैल्यूएटर को इन शब्दों का समर्थन करना होगा:
+, -, *, / (पूर्णांक अंकगणित)DUP, DROP, SWAP, OVER (स्टैक में बदलाव)आपके एवैल्यूएटर को परंपरागत सिंटैक्स का उपयोग करके नए शब्द बनाने का समर्थन भी करना होगा: : word-name definition ;।
चीज़ों को सरल रखने के लिए आपको केवल एक डेटा टाइप देना है: कम से कम 16 बिट आकार के चिह्नित पूर्णांक।
सिंटैक्स के लिए इन नियमों का पालन कीजिए: संख्या एक या अधिक (ASCII) अंकों का क्रम होती है, और शब्द एक या अधिक अक्षरों, अंकों, प्रतीकों या विराम-चिह्नों का ऐसा क्रम होता है जो संख्या न हो। (Forth में शायद थोड़े अलग नियम हैं, लेकिन यह काफी करीब है।)
शब्दों में छोटे और बड़े अक्षरों का कोई फर्क नहीं होता।
इस अभ्यास को पूरा करने के लिए आपको ForthState डेटा टाइप बनाना होगा और नीचे दिए गए फंक्शन लिखने होंगे:
emptyState एक खाली ForthState लौटाता है।evalText इनपुट में दिए गए Text का मूल्यांकन करता है और नई स्थिति लौटाता है।toList मौजूदा स्टैक को एक ऐरे के रूप में लौटाता है, जिसमें स्टैक का सबसे ऊपर वाला एलिमेंट ऐरे का सबसे दाएँ (अंतिम) एलिमेंट होता है।एक डमी डेटा घोषणा और टाइप सिग्नेचर पहले से मौजूद मिलेंगे, लेकिन फंक्शन बनाना और एक अर्थपूर्ण डेटा टाइप, newtype या टाइप सिनोनिम तैयार करना आपको ही करना है।
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।