Forth-এর একটি খুব সাধারণ উপসেটের জন্য একটি ইভ্যালুয়েটর তৈরি করুন।
Forth হলো একটি স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষা। Forth-এর একটি ছোট উপসেটের জন্য একটি খুব সাধারণ ইভ্যালুয়েটর তৈরি করুন।
আপনার ইভ্যালুয়েটরকে নিচের শব্দগুলো সাপোর্ট করতে হবে:
+, -, *, / (পূর্ণসংখ্যার গণনা)DUP, DROP, SWAP, OVER (স্ট্যাক ম্যানিপুলেশন)আপনার ইভ্যালুয়েটরকে প্রচলিত সিনট্যাক্স ব্যবহার করে নতুন শব্দ ডিফাইন করার সুবিধাও দিতে হবে: : word-name definition ;.
সহজ রাখতে আপনার শুধু একটি ডেটা টাইপ সাপোর্ট করলেই হয়: অন্তত ১৬ বিট আকারের সাইনড ইন্টিজার।
সিনট্যাক্সের জন্য আপনার নিচের নিয়মগুলো ব্যবহার করা উচিত: একটি সংখ্যা হলো এক বা একাধিক (ASCII) ডিজিটের একটি ক্রম, আর একটি শব্দ হলো এক বা একাধিক অক্ষর, ডিজিট, প্রতীক বা যতিচিহ্নের এমন একটি ক্রম যা সংখ্যা নয়। (Forth সম্ভবত একটু ভিন্ন নিয়ম ব্যবহার করে, কিন্তু এটা যথেষ্ট কাছাকাছি।)
শব্দগুলো কেস-ইনসেনসিটিভ।
Forth-এ ফাংশনকে words বলা হয়, এগুলো একটি ডেটা স্ট্যাক নিয়ে কাজ করে।
প্রতিটি word স্ট্যাক থেকে তার প্যারামিটার নেয় এবং স্ট্যাকে তার ফলাফল রিটার্ন করে।
Forth-এর ডকুমেন্টেশনে সবসময় wordটি রান করার আগে ও পরে ডেটা স্ট্যাকের অবস্থা এভাবে লেখা থাকে ( p1 p2 ... pN --- r1 r2 ... rN ).
p1 থেকে pN মানগুলো কলের আগে স্ট্যাকে থাকা wordটির প্যারামিটার বোঝায় (স্ট্যাকের আরও ভেতরে অতিরিক্ত ডেটা থাকতে পারে, যা এখানে দেখানো হয়নি) এবং r1 থেকে rN মানগুলো কলের পরে স্ট্যাকে থাকা wordটির রিটার্ন ভ্যালু বোঝায়।
--- বিভাজকটি word চালানোর আগে ও পরে স্ট্যাকের অবস্থার পার্থক্য বোঝায়।
যে wordগুলো বাস্তবায়ন করতে হবে, সেগুলো এভাবে সংজ্ঞায়িত:
| word | স্ট্যাকের অবস্থা | বিবরণ |
|---|---|---|
+ |
( a b --- sum ) |
sum = a + b |
- |
( a b --- diff ) |
diff = a - b |
* |
( a b --- prod ) |
prod = a * b |
/ |
( a b --- quot ) |
quot = a / b |
dup |
( a --- a a ) |
ToS-এর মানটি ডুপ্লিকেট করে |
drop |
( a --- ) |
ToS-এর মানটি ফেলে দেয় |
swap |
( a b --- b a ) |
ToS-এর দুটি মান পরস্পর অদলবদল করে |
over |
( a b c --- a b c b ) |
দ্বিতীয় মানটি কপি করে ToS-এ আনে |
আপনি যদি কোনো অনলাইন forth ইন্টারপ্রেটার নিয়ে খেলতে চান বা যে wordগুলো বাস্তবায়ন করতে হবে সে সম্পর্কে আরও জানতে চান, তাহলে Easy Forth দেখুন (বিশেষভাবে Adding Some Numbers, Defining Words এবং Stack Manipulation অংশটি)।
Exercism-এ সাইন আপ করুন, Odin ট্র্যাকের 73টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।