أنشئ مُقيِّمًا لمجموعة فرعية بسيطة جدًا من Forth.
Forth لغة برمجة تعتمد على المكدّس. أنشئ مُقيِّمًا أساسيًا جدًا لمجموعة صغيرة من Forth.
على مُقيِّمك أن يدعم الكلمات التالية:
+، -، *، / (العمليات الحسابية على الأعداد الصحيحة)DUP، DROP، SWAP، OVER (التعامل مع المكدّس)كما على مُقيِّمك أن يدعم تعريف كلمات جديدة باستخدام الصيغة المعتادة: : word-name definition ;.
ولتبسيط الأمور، نوع البيانات الوحيد الذي تحتاج إلى دعمه هو الأعداد الصحيحة المُوقّعة بحجم 16 بت على الأقل.
عليك استخدام القواعد التالية للصيغة: العدد هو متتالية من رقم (ASCII) واحد أو أكثر، والكلمة متتالية من حرف أو رقم أو رمز أو علامة ترقيم واحدة أو أكثر، ولا تكون عددًا. (ربما تستخدم Forth قواعد مختلفة قليلًا، لكن هذا قريب بما يكفي.)
الكلمات غير حساسة لحالة الأحرف.
في Forth تُسمّى الدوال words، وهي تعمل على مكدس بيانات.
كل كلمة تأخذ معاملاتها من المكدس وتُرجع نتائجها على المكدس.
تحتوي وثائق Forth دائمًا على حالة مكدس البيانات قبل تنفيذ الكلمة وبعده بالصيغة التالية ( p1 p2 ... pN --- r1 r2 ... rN ).
تُمثّل القيم من p1 إلى pN معاملات الكلمة على المكدس قبل الاستدعاء (قد يحتوي المكدس على بيانات إضافية في مواضع أعلى منه، غير ممثَّلة هنا)، وتُمثّل القيم من r1 إلى rN القيم التي تُرجعها الكلمة على المكدس بعد الاستدعاء.
ويميّز الفاصل --- بين حالة المكدس قبل تنفيذ الكلمة وبعدها.
الكلمات المطلوب تنفيذها معرّفة كما يلي:
| الكلمة | حالة المكدس | الوصف |
|---|---|---|
+ |
( 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 ) |
duplicate the value on the ToS |
drop |
( a --- ) |
drop the value on the ToS |
swap |
( a b --- b a ) |
swap the two values on the ToS |
over |
( a b c --- a b c b ) |
نسخ القيمة الثانية إلى ToS |
إذا أردت أن تجرّب مفسّر Forth عبر الإنترنت أو أن تتعلّم المزيد عن الكلمات المطلوب تنفيذها، جرّب Easy Forth (وتحديدًا قسم Adding Some Numbers وDefining Words وStack Manipulation).
سجّل في Exercism لتتعلّم وتتقن Odin عبر 73 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.