تم بحمد الله تعالي بناء الإصدارة 1.7 من مُفسِّر أُبْدِع و رُفِعَتْ علي مواقعها علي الشبكة،
و الجديد في هذه الإصدارة ما يلي:
* بناء خاصيةٍ تجعل رسالة التنبيه لوجود خطأٍ في التعامل مع المُكدِّس stack لا تظهر للمستخدم العادي و تظهر لي أنا فقط لأني أحتاجها أثاء برمجتي للمُفسِّر، و كانت الرسالة قد أصبحت في الإصدارة 1.6 علي الشكل التالي:
STACK ISN'T EMPTY AT THE END OF EXECUTING !
executing completed successfully.
أي أنها تُنبِّه إلي التعامل الخاطيء مع المُكدِّس و لكنها تخبر المستخدم العادي أن برنامجه تم تنفيذه بشكلٍ صحيح.
و قد وعدتُ حينها أنني سأجعل أُبْدِع يعرض هذه الرسالة فقط حينما أتعامل أنا معه؛ حتي لا يُربِك المستخدم العادي بأمورٍ لا تهمه في قليلٍ أو كثير. و قد فعلتُ في هذه الإصدارة.
* إصلاح عِلَّةٍ في بناء قواعد تغطية إجراءٍ لإجراءٍ آخر، و هي الخاصة بأن "الإجراء المُغطِّي يجب أن يكون له مُستوَي وصول مساوٍ لمُستوَي وصول الإجراء المُغطَّي أو أكبر منه". فكان مثلاً في الإصدارات الأقدم يُسمح بتغطية إجراءٍ خاصٍ لإجراءٍ عام !
* بناء القاعدة التي تنص علي أنه "لا يمكن قراءة قيمة كائن لقب لم يُعطَ قيمةً و إلا حصل المبرمج علي خطأ زمن تشغيل".
فمثلاً البرنامج:
يوم الإجازة
لو الإجازة = يوم_جمعة :
أكتب.نص.سطر("الإجازة = يوم_جمعة")
لقب يوم :
سبت أحد اثنين ثلاثاء أربعاء خميس جمعة
ينتج عنه خطأٌ عند تنفيذه لأنه يتم فيه قراءة قيمة كائن اللقب (الإجازة) قبل إعطائه أي قيمة.
* إتاحة إمكانية ترك ما بين أقواس قيمة الجدول فارغاً بما معناه أن قيمة الجدول تساوي لاشيء، أو وضع كلمة لاشيء للحصول علي نفس النتيجة.
مثال1:
رقم{2} الأرقام = {لاشيء {} }
فهنا قيمة البُعد الأرقام{1} تساوي لاشيء، و كذا فقيمة الأرقام{2} تساوي لاشيء بدورها.
مثال2:
رقم{2} ثابت أرقام3 = {بعد1 = {} بعد2 = {}}
و هنا عرَّفنا جدولاً مُلقَّباً خالياً من القيم، بدون الاضطرار لملئه بقيمٍ لا لزوم لها. و هو ما سيحتاجه المبرمجون في بعض الأحيان.
* إصلاح عِلةٍٍ كانت تجعل المُفسِّر يعتبر أن مقارنة مؤشري جدولين باستخدام المُعامِل # خطاً نحوي.
مثال:
رقم{2} الأرقام = {لاشيء {} }
لو الأرقام{1} # لاشيء :
أكتب.نص.سطر("الأرقام{1} # لاشيء")
* إصلاح علةٍ في تعامل تعبير (بينما) مع الجداول التي لم يتم حجز أماكن لها في الذاكرة، حيث كان في البداية ينتج عن ذلك التعامل خطأ زمن تنفيذ، و لكن الآن يتم معاملة الجدول الذي لم يتم حجز مكانٍ له في الذاكرة في تعبير (بينما) علي أنه جدولٌ فارغ بدون قِيم و بالتالي لا يتم الدخول إلي صلب الحلقة التكرارية و لا تُنفذ الأوامر التي فيها نهائياً.
مثلاً البرنامج التالي:
رقم{1} أرقام1
رقم الرقم
بينما الرقم في أرقام1 :
أكتب.نص.سطر("الرقم = " + إلي.نص(الرقم))
عند تنفيذه لا يكتب أي قِيمٍ علي الشاشة، و في نفس الوقت لا ينتج عنه أخطاء زمن تنفيذ.
* إصلاح عِلَّةٍ كانت تتسبب في خطأٍ في التعامل مع الجداول المُلقَّبة في كائنات الأصناف، فمثلاً لو كتبنا الكود التالي:
صنف1 كائن1 = صنف1()
كائن1_أرقام3_بعد1 = {11 22 33}
أكتب.نص.سطر("كائن1_أرقام3_بعد1_طول() = " + إلي.نص(كائن1_أرقام3_بعد1_طول()))
أكتب.نص.سطر("كائن1_أرقام3_بعد1_عدد.الأبعاد() = " + إلي.نص(كائن1_أرقام3_بعد1_عدد.الأبعاد()))
أكتب.نص.سطر("كائن1_أرقام3_طول() = " + إلي.نص(كائن1_أرقام3_طول()))
أكتب.نص.سطر("كائن1_أرقام3_عدد.الأبعاد() = " + إلي.نص(كائن1_أرقام3_عدد.الأبعاد()))
أكتب.نص.سطر("كائن1_أرقام3{1}_طول() = " + إلي.نص(كائن1_أرقام3{1}_طول()))
أكتب.نص.سطر("كائن1_أرقام3{1}_عدد.الأبعاد() = " + إلي.نص(كائن1_أرقام3{1}_عدد.الأبعاد()))
أكتب.نص.سطر("كائن1_أرقام3_بعد1_طول() = " + إلي.نص(كائن1_أرقام3_بعد1_طول()))
أكتب.نص.سطر("كائن1_أرقام3_بعد1_عدد.الأبعاد() = " + إلي.نص(كائن1_أرقام3_بعد1_عدد.الأبعاد()))
أكتب.نص.سطر("كائن1_أرقام3{1 1} = " + إلي.نص(كائن1_أرقام3{1 1}))
أكتب.نص.سطر("كائن1_أرقام3_بعد1{1} = " + إلي.نص(كائن1_أرقام3_بعد1{1}))
صنف صنف1 :
رقم{2} عام ثابت أرقام3 = {بعد1 = {} بعد2 = {}}
كنا سنحصل علي خطأ زمن تنفيذٍ نتيجةً لأن المُفسِّر لم ينفذ الأمر:
كائن1_أرقام3_بعد1 = {11 22 33}
بشكلٍ سليم، و بالتالي بقيت قيمة البُعد (بعد1) تساوي (لاشيء) كما كانت عند تعريفها !
و لكن تم مُعالجة هذا في الإصدارة 1.7 بفضل الله عز و جل، و عند تنفيذ البرنامج السابق علي تلك الإصدارة سيعطينا النتيجة:
كائن1_أرقام3_بعد1_طول() = 3.0
كائن1_أرقام3_بعد1_عدد.الأبعاد() = 1.0
كائن1_أرقام3_طول() = 2.0
كائن1_أرقام3_عدد.الأبعاد() = 2.0
كائن1_أرقام3{1}_طول() = 3.0
كائن1_أرقام3{1}_عدد.الأبعاد() = 1.0
كائن1_أرقام3_بعد1_طول() = 3.0
كائن1_أرقام3_بعد1_عدد.الأبعاد() = 1.0
كائن1_أرقام3{1 1} = 11.0
كائن1_أرقام3_بعد1{1} = 11.0
يمكنكم تحميل مُفسِّر أُبْدِع من خلال الروابط الموجودة في (مركز التحميلات) في صفحته علي الموقع الرسمي:
http://ebda3lang.blogspot.com/p/blog-page_5.html
و كذا يمكنكم معرفة كل ما يخص المشروع من خلال تحميل الكتاب الرسمي له (رسالة البرمجة بإبداع)، من الروابط الموجودة في صفحته علي الموقع الرسمي:
http://ebda3lang.blogspot.com/p/blog-page.html