به نظر من برنامه شما دقیقا یک کامپایلر است و باید برایش کد مجاز تعریف شود. یعنی همان عباراتی که از فایل خوانده می شود.
برای سادگی می توانید جلوی عبارت :
یک کلمه فانکشن قرار دهید تا برنامه شما بداند با چه نوع دستوری مواجه است(البته این ساده ترین و اولیه ترین پیشنهاد برای شفاف سازی الگوریتم است. وگرنه می توان برنامه ای هوشمند ساخت).
الگوریتمش این طور می شود:
کلمه اول را بخوان.
اگر کلمه اول فانکشن بود به قسمت پردازش فانکشن ها برو.
و اگر کلمه دیگری بود به قسمتهای مربوطه دیگر برو.
الگوریتم قسمت پردازش فانکشن:
عبارت سمت راست علامت مساوی را بگیر.
با توجه به پرانتزها آنها را بخش بخش کن.
هر بخش را به توابع_محاسباتی مربوطه بفرست.و مقدار بازگشتی را دریافت کن.
نتیجه را با توجه به مقدار x چاپ کن.
---------------------------------------
فکر کنم نوشتن برنامه بالا عملی باشد.
بعدا میشه فرهنگ لغات این کامپایلر را افزایش داد تا فقط به کلمه فانکشن حساس نباشد.
البته این راه ساده ای بود که به ذهن من رسید و ممکنه با ابزارهای حرفه ای این کارها بسیار سریع و ساده تر باشد.
============
گام بعدی: می توان اصطلاحات بعدی را علاوه بر ((فانکشن)) تعریف نمود.
مثلا :
حلقه باز. open_loop
حلقه بسته. close_loop
پرینت. print
وقتی کامپایلر ( منظور برنامه شماست) به دستور open_loop می رسد به اندازه شرط حلقه دستورات بعدی مثل فانکشن ها و پرینت ها را تا رسیدن به close_loop اجرا می کند.
مثلا در فایل داریم:
کد:
open_loop x<10
function x=x+1
print x
print "hello"
close_loop
که مراحل احتمالا می تواند به شکل منظمی انجام شود.
جنبه عملی کار:
احتمالا کامپایلر ساخته شده باید به تعداد خطوط فایل ابتدا متغیر ایجاد کند برای نگه داری دستورات.
و برای هر کاری(مثل پروسس فانکشنها یا دیگر دستورات) زیربرنامه های مناسب داشته باشیم.
-----------------
پس از نوشتن مطالب بالا سعی کردم با سرچ سورسی پیدا کنم ولی کلمات سرچ مناسب فعلا پیدا نکردم. لینک زیر شاید حاوی این کلمات باشد که بقیه سرچ را به بعد موکول می کنم.
http://ubuntuforums.org/showthread.php?t=489215