یک ارزیاب برای زیرمجموعهی بسیار سادهای از Forth پیادهسازی کنید.
Forth یک زبان برنامهنویسی مبتنی بر پشته است. یک ارزیاب بسیار پایهای برای زیرمجموعهی کوچکی از Forth پیادهسازی کنید.
ارزیاب شما باید از واژههای زیر پشتیبانی کند:
+، -، *، / (محاسبات اعداد صحیح)DUP، DROP، SWAP، OVER (دستکاری پشته)ارزیاب شما همچنین باید تعریف واژههای جدید را با نحوهی نگارش معمول پشتیبانی کند: : word-name definition ;.
برای اینکه کارها ساده بماند، تنها نوع دادهای که باید پشتیبانی کنید اعداد صحیح علامتدار با اندازهی حداقل ۱۶ بیت است.
برای نحوهی نگارش باید از این قواعد استفاده کنید: یک عدد دنبالهای از یک یا چند رقم (ASCII) است و یک واژه دنبالهای از یک یا چند حرف، رقم، نماد یا نشانهگذاری است که عدد نباشد. (Forth احتمالاً قواعد کمی متفاوتی دارد، اما این بهقدر کافی نزدیک است.)
واژه به بزرگی و کوچکی حروف حساس نیست.
برای کامل کردن این تمرین، باید نوع دادهی ForthState را بسازید و توابع زیر را پیادهسازی کنید:
emptyState یک ForthState خالی برمیگرداند.evalText یک Text ورودی را ارزیابی میکند و حالت جدید را برمیگرداند.toList پشتهی فعلی را به صورت یک فهرست برمیگرداند، به طوری که عنصری که روی پشته است، راستترین (آخرین) عنصر باشد.یک اعلان دادهی ساختگی و امضاهای نوع از قبل در جای خود قرار دارند، اما تعریف توابع و ساختن یک نوع داده، newtype یا مترادف نوع معنادار به عهدهی خودتان است.