Forth

Forth

دشوار

دستورالعمل‌ها

یک ارزیاب برای زیرمجموعه‌ی بسیار ساده‌ای از Forth پیاده‌سازی کنید.

Forth یک زبان برنامه‌نویسی مبتنی بر پشته است. یک ارزیاب بسیار پایه‌ای برای زیرمجموعه‌ی کوچکی از Forth پیاده‌سازی کنید.

ارزیاب شما باید از واژه‌های زیر پشتیبانی کند:

  • +، -، *، / (محاسبات اعداد صحیح)
  • DUP، DROP، SWAP، OVER (دست‌کاری پشته)

ارزیاب شما همچنین باید تعریف واژه‌های جدید را با نحوه‌ی نگارش معمول پشتیبانی کند: : word-name definition ;.

برای اینکه کارها ساده بماند، تنها نوع داده‌ای که باید پشتیبانی کنید اعداد صحیح علامت‌دار با اندازه‌ی حداقل ۱۶ بیت است.

برای نحوه‌ی نگارش باید از این قواعد استفاده کنید: یک عدد دنباله‌ای از یک یا چند رقم (ASCII) است و یک واژه دنباله‌ای از یک یا چند حرف، رقم، نماد یا نشانه‌گذاری است که عدد نباشد. (Forth احتمالاً قواعد کمی متفاوتی دارد، اما این به‌قدر کافی نزدیک است.)

واژه به بزرگی و کوچکی حروف حساس نیست.

پیاده‌سازی

در Forth به توابع words می‌گویند و این‌ها روی یک پشته‌ی داده کار می‌کنند. هر واژه پارامتر یا پارامترهایش را از پشته می‌گیرد و نتیجه یا نتیجه‌هایش را روی پشته برمی‌گرداند.

مستندات Forth همیشه وضعیت پشته‌ی داده را پیش از اجرای واژه و پس از اجرای واژه به این شکل نشان می‌دهد: ( p1 p2 ... pN --- r1 r2 ... rN ). مقدارهای p1 تا pN پارامترهای واژه را روی پشته پیش از فراخوانی نشان می‌دهند (پشته می‌تواند داده‌های بیشتری بالاتر از این‌ها داشته باشد که اینجا نمایش داده نشده‌اند) و مقدارهای r1 تا rN مقدارهای بازگشتی واژه را روی پشته پس از فراخوانی نشان می‌دهند. جداکننده‌ی --- وضعیت پشته را پیش و پس از اجرای واژه از هم متمایز می‌کند.

واژه‌هایی که باید پیاده‌سازی شوند این‌گونه تعریف می‌شوند:

  • ToS مخفف Top of Stack است؛ یعنی بالای پشته.
  • بالای پشته به‌صورت راست‌ترین مقدار نمایش داده می‌شود.
واژه وضعیت پشته توضیح
+ ( 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 سرگرم شوید یا درباره‌ی واژه‌هایی که باید پیاده‌سازی شوند بیشتر بدانید، Easy Forth را امتحان کنید (مخصوصاً بخش‌های «Adding Some Numbers»، «Defining Words» و «Stack Manipulation»).

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Odin Exercism

آماده‌اید Forth را شروع کنید؟

در Exercism ثبت‌نام کنید تا Odin را همراه با 73 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.