الإصدارة 1.6 من مُفسِّر أُبْدِع

نشره م. وائل حسن -أ… في

تم بحمد الله تعالي بناء الإصدارة 1.6 من مُفسِّر أُبْدِع و رُفِعَتْ علي مواقعها علي الشبكة،
و الجديد في هذه الإصدارة ما يلي:

* دعم إمكانية إسناد مؤشرات جداولٍ للأبعاد الداخلية لجداولٍ أخري بشكلٍ مُجمَّع داخل الأصناف، بما يُشبه جداول الجداول، أي أنها سدت النقص الذي كان موجوداً في الإصدارة 1.5
    مثال:


    صنف1 كائن1 = صنف1()
    صنف1 كائن2 = صنف1()

    كائن1_أرقام1_بعد1{1} =  10
    كائن2_أرقام1_بعد1{1} =  50

    أكتب.نص.سطر("كائن1_أرقام1_بعد1{1} =  " + إلي.نص(كائن1_أرقام1_بعد1{1}))
    أكتب.نص.سطر("كائن2_أرقام1_بعد1{1} =  "+ إلي.نص(كائن2_أرقام1_بعد1{1}))

    أكتب.نص.سطر("كائن1_أرقام3{1  1  1} =  " + إلي.نص(كائن1_أرقام3{1  1  1}))
    أكتب.نص.سطر("كائن2_أرقام3{1  1  1} =  "+ إلي.نص(كائن2_أرقام3{1  1  1}))

    صنف صنف1 :
        رقم{2} عام ثابت أرقام1 = {بعد1={ 79  2  3 } بعد2={ 4  5  6 }}   |
                             أرقام2 = {{7  8  9} {10  11  12}}
        رقم{3} عام أرقام3 = {أرقام1   أرقام2 }


    فسيكون الناتج:

    كائن1_أرقام1_بعد1{1} =  10.0
    كائن2_أرقام1_بعد1{1} =  50.0
    كائن1_أرقام3{1  1  1} =  10.0
    كائن2_أرقام3{1  1  1} =  50.0

    مع التنبه إلي أنه لا يصح كتابة كودٍ كالتالي في الإصدارات الحالية من أُبْدِع:

    رقم{3} عام أرقام3 = {أرقام1   {{7  8  9}  {10  11  12}}}

    لأنه لا يمكن وضع قيمة مباشرة  مثل  {{7  8  9}  {10  11  12}} في البُعد أرقام3{2} بينما نقوم بإسناد مؤشر الجدول (أرقام1) إلي البُعد أرقام3{1}.
    فإما أن نجعل الإسناد كله قيم مباشرة، مثل:

    رقم{2} عام  أرقام2 =   {{7  8  9}  {10  11  12}}

    أو أن نجعله كله إسناد مؤشرات جداولٍ لأبعادٍ داخل جداول أخري (أي صنع: جدول جداول ~ array of arrays)، مثل:

    رقم{3} عام أرقام3 = { أرقام1   أرقام2 }

    إلا أنه من الممكن في المستقبل بإذن الله تعالي إتاحة المزج بين نوعي الإسناد في نفس السطر لو توافر الوقت اللازم لذلك.

    
 * تغيير رسالة الخطأ:

    unhandled run-time ERROR: STACK ISN'T EMPTY AT THE END OF EXECUTING !

    التي يُفترَض أن الوظيفة الرئيسة لها هي تنبيهي (كمُبرمِجٍ للمُفسِّر) إلي أن هناك تعاملاً قد تم مع المُكَدِّس stack (الذي هو جزءٌ من البناء الداخلي لأُبْدِع) غير مرغوبٍ فيه، و لكن هذا لا يؤثر علي نتيجة عمل المُفسِّر. و المشكلة أن نصها السابق الذِكر يُوحي بحدوث خطأٍ في الكود الذي كتبه المستخدم !،
    و لهذا تم تغيير نَصها و طريقة عرضها لتكون كما يلي:

    STACK ISN'T EMPTY AT THE END OF EXECUTING !
    executing completed successfully.

    أي أنها تُنبِّه إلي التعامل الخاطيء مع المُكدِّس و لكنها تخبر المستخدم العادي أن برنامجه تم تنفيذه بشكلٍ صحيح.
    و في المستقبل بمشيئة الله تعالي سأجعل أُبْدِع يعرض هذه الرسالة فقط حينما أتعامل أنا معه؛ حتي لا يُربِك المستخدم العادي بأمورٍ لا تهمه في قليلٍ أو كثير.


يمكنكم تحميل  مُفسِّر أُبْدِع من مركز التحميلات علي الموقع الرسمي:
http://ebda3lang.blogspot.com/p/blog-page_5.html