المفردات
منقول من الكتاب المرجعي: docs/handbook/language/01-lexicon.md · الإيداع 7a52f6c
مولَّدة من language.describe_language() (ما يطبعه meem --list-keywords --json)؛ والاختبار
tests/test_language.py يتحقق أنها تطابق ما يعرفه المحلل اللفظي والنحوي.
- امتداد الملفات:
.م. التعليق:#إلى آخر السطر. - الكتل بالمسافة البادئة بعد
:، لا بأقواس: المستوى 4 مسافات، والجدولة تُعدّ 4. - النص بين
"و"، والرمز (حرف واحد) بين'و'. الصيغ داخل النص والرمز:\n\r\t\\\'\"\0(lexer._ESCAPES)، و\xHHبرقمين ست عشريين و\uHHHHبأربعة: الحرف بنقطة ترميزه (\x41هوA، و\u0628هوب) (منذ 0.8.0). صيغة رقمية ناقصة خطأ لفظي، وأي صيغة أخرى تبقى كما كُتبت. - الاسم تتابع أحرف (ومنها الأرقام و
_والكشيدة) ينتهي عند مسافة أو أحد هذه:!"#$%&'()*+,-./:;<=>?@[\]^{|}~،؛؟.
الكلمات المفتاحية
رابط إلى قسم «الكلمات المفتاحية»«سياقية» تبقى اسماً عادياً خارج صيغتها؛ وغيرها محجوز.
| الكلمة | صيغ أخرى | الصنف | سياقية | الوصف |
|---|---|---|---|---|
اذا |
إذا | control | — | شرط: اذا الشرط: |
حالات |
— | control | — | مطابقة قيمة: حالات التعبير: |
حاله |
— | control | — | فرع داخل حالات: حاله قيمة: أو حاله قيمة او قيمة: أو حاله _: |
_ |
— | control | — | الفرع الافتراضي في حالات: حاله _: |
طالما |
— | loop | — | حلقة شرطية: طالما الشرط: |
لكل |
— | loop | — | حلقة على عناصر: لكل عنصر في المجموعة: |
في |
— | loop | — | تفصل متغير الحلقة عن المجموعة: لكل عنصر في المجموعة: |
توقف |
— | jump | — | الخروج من الحلقة الحالية |
تجاوز |
— | jump | — | الانتقال إلى الدورة التالية من الحلقة |
ارجع |
— | jump | — | إرجاع قيمة من الدالة: ارجع القيمة |
خاتمه |
— | jump | — | تأجيل استدعاء أو إسناد إلى الخروج من الكتلة (نهايتها أو ارجع أو توقف أو تجاوز): خاتمه حرر(م) |
جرّب |
جرب | jump | — | يمرّر خطأ تعبير !ن إلى مستدعي الدالة، وإلا ناتجه الناجح: س = جرّب ف(…) |
والا |
— | control | — | يعالج خطأ تعبير !ن: ف(…) والا قيمة_بديلة أو ف(…) والا خ: ثم كتلة فيها الخطأ «خ» |
خاتمه_عند_خطأ |
— | jump | — | مثل خاتمه، ولا تُنفَّذ إلا إن خرجت الدالة بخطأ: خاتمه_عند_خطأ حرر(م) |
خطأ |
— | declaration | — | قيمة خطأ: خطأ.غير_موجود (ونوع المتغير الذي يحمل خطأً) |
تعداد |
— | definition | نعم | تعريف تعداد: تعداد لون: ثم عضو في كل سطر؛ والقيمة لون.احمر |
اخطاء |
— | declaration | نعم | تعريف أخطاء البرنامج: اخطاء: ثم اسم خطأ في كل سطر |
بلا_فحص |
— | control | نعم | داخل خطر: فهرسة بلا فحص حدود، وكتابة تُقطع بلا فحص مدى: بلا_فحص ك[ف] = قيمة |
بلا_افتراضي |
— | declaration | نعم | ترويسة في أول الوحدة: كل حجز فيها يذكر مخصصه (لا الافتراضي، ولا وسيط مخصص متروك، ولا + على نصين متغيرين، ولا […] و{} إلا داخل قائمة_من ونسخ بمخصص) |
خطر |
— | definition | — | منطقة الطبقة المنخفضة: خطر: ثم كتلة، أو خطر داله الاسم(…) النوع: |
داله |
— | definition | — | تعريف دالة: داله الاسم(المعامل النوع, …) نوع_الإرجاع: |
هيكل |
— | definition | — | تعريف هيكل: هيكل الاسم: ثم حقل في كل سطر: اسم_الحقل النوع [= قيمة افتراضية] |
هيكل_سي |
— | definition | نعم | هيكل بتخطيط C (ترتيب الحقول ومحاذاة المنصة) حقوله أنواع C، يُمرَّر مؤشره إلى خارجي: هيكل_سي الاسم: وللهيكل بلا حشو: هيكل_سي معبّأ الاسم: |
معبّأ |
— | declaration | نعم | بعد هيكل_سي: هيكل بلا حشو بين الحقول: هيكل_سي معبّأ الاسم: |
ثابت |
— | declaration | — | تعريف ثابت لا يتغير: ثابت الاسم = القيمة |
عام |
— | declaration | نعم | داخل دالة: الإسناد إلى الاسم يعدّل المتغير العام: عام الاسم, الاسم |
استورد |
— | declaration | — | استيراد وحدة أو ملف: استورد رياضيات أو استورد “ادوات/نصوص” (في أول الملف) |
باسم |
— | declaration | نعم | اسم مؤهَّل للوحدة المستوردة: استورد مكتبه باسم م ثم م.دالة(…)؛ واسم الدالة في C بعد تصريح خارجي |
خارجي |
— | definition | — | تصريح دالة من مكتبة C: خارجي “m” داله جذر(س كسر) كسر باسم “sqrt” (بلا جسم) |
خاص |
— | declaration | نعم | قبل تعريف دالة أو هيكل أو ثابت: لا يراه من يستورد الملف: خاص داله مساعدة(…) |
و |
— | logic | — | صواب إن تحقق الطرفان (لا يُقيَّم الأيمن إن كان الأيسر خاطئاً) |
او |
— | logic | — | صواب إن تحقق أحد الطرفين (لا يُقيَّم الأيمن إن كان الأيسر صواباً) |
غير ذلك |
— | control | — | فرع الشرط إن لم يتحقق: غير ذلك: |
غير ذلك اذا |
— | control | — | شرط بديل: غير ذلك اذا الشرط: |
القيم الثابتة
رابط إلى قسم «القيم الثابتة»| الاسم | النوع | الوصف |
|---|---|---|
صواب |
منطقي | القيمة المنطقية الصحيحة |
خطاء |
منطقي | القيمة المنطقية الخاطئة |
لاشيء |
لاشيء | غياب القيمة |
النظام |
مخصص | مخصص النظام (malloc/free) — منذ 0.7.0 |
الافتراضي |
مخصص | المخصص الافتراضي للبرنامج: النظام، وكاشف حوله في التشغيل المباشر (منذ 0.10.0) ومع –debug — منذ 0.7.0 |
الأنواع
رابط إلى قسم «الأنواع»| النوع | الوصف |
|---|---|
نص |
نص بين علامتي تنصيص مزدوجتين |
رمز |
حرف واحد بين علامتي تنصيص مفردتين |
عدد |
عدد صحيح (64 بت) |
كسر |
عدد كسري |
منطقي |
صواب أو خطاء |
فراغ |
نوع إرجاع الدالة التي لا تُرجع قيمة |
لاشيء |
نوع القيمة لاشيء |
قاموس |
قاموس {مفتاح: قيمة} |
قائمة |
قائمة [عناصر] قابلة للزيادة |
مصفوفة |
مصفوفة ثابتة الحجم، تُنسخ عند الإسناد: الاسم مصفوفة[نوع_العناصر, الحجم] = [عناصر] |
مؤشر |
مؤشر إلى خانة على الكومة تُنشأ بـ جديد(قيمة) وتُحرَّر بـ حرر(م) يدوياً؛ يُقرأ ما فيها بـ محتوى(م)، وقيمته لاشيء حين لا يشير إلى شيء: الاسم مؤشر[نوع_ما_يشير_إليه] = جديد(قيمة) |
مؤشر_خام |
مؤشر من مكتبة C (void *): يُخزَّن ويُمرَّر ويُقارن بـ لاشيء، ولا يُفك ولا يُحرَّر بـ حرر |
مخصص |
مخصص ذاكرة يُمرَّر صراحة لما يحجز (منذ 0.7.0): النظام، الافتراضي، ساحة(الاصل)، كاشف(الاصل)؛ معامل مخصص آخرَ المعاملات يجوز تركه فيُمرَّر الافتراضي |
شريحة |
مؤشر وطول على كتلة لا يملكها (من احجز أو قطعة أو شريحة_خام): فهرستها بفحص حدود، وطول(ش) عدد عناصرها: ش = احجز(بايت, 16) |
خطأ |
قيمة خطأ باسمها (خطأ.غير_موجود، أو اسم من اخطاء:): تُقارن بـ == وتُطبع اسمها؛ وهي «خ» في ف() والا خ: |
صيغ الأنواع المركّبة:
| الصيغة | مثال |
|---|---|
قائمة[نوع_العناصر] |
اسماء قائمة[نص] = [] |
قاموس[نوع_المفتاح, نوع_القيمة] |
اعمار قاموس[نص, عدد] = {} |
مصفوفة[نوع_العناصر, الحجم] |
جدول مصفوفة[عدد, 3] = [1, 2, 3] |
مؤشر[نوع_ما_يشير_إليه] |
م مؤشر[عدد] = جديد(42) |
داله(أنواع_المعاملات) نوع_الإرجاع |
ف داله(عدد) عدد = ضاعف |
أنواع تواقيع خارجي وما يقابلها في C:
| النوع | C |
|---|---|
عدد |
int64_t |
عدد32 |
int32_t |
عدد16 |
int16_t |
عدد8 |
int8_t |
طبيعي32 |
uint32_t |
طبيعي16 |
uint16_t |
طبيعي8 |
uint8_t |
حجم |
size_t |
كسر |
double |
كسر32 |
float |
منطقي |
bool |
رمز |
uint32_t (نقطة ترميز) |
نص |
const char * (UTF-8، يُنسخ عند الإرجاع) |
نص_او_لاشيء |
const char * يقبل NULL (معامل) |
نص_مملوك |
char * يُنسخ ثم يُحرَّر بـ free (إرجاع) |
مؤشر_خام |
void * |
نص_سي |
char * منتهٍ بصفر، يمرّ كما هو (لا نسخ) |
فراغ |
void (إرجاع) |
المعاملات
رابط إلى قسم «المعاملات»| الرمز | الصنف | الوصف |
|---|---|---|
+= |
assignment | زيادة عدد، أو إلحاق نص بنص |
-= |
assignment | إنقاص |
*= |
assignment | ضرب وإسناد |
/= |
assignment | قسمة وإسناد |
%= |
assignment | باقٍ وإسناد |
== |
comparison | يساوي |
!= |
comparison | لا يساوي |
<= |
comparison | أصغر من أو يساوي |
>= |
comparison | أكبر من أو يساوي |
+ |
arithmetic | جمع عددين، أو دمج نصين في نص جديد (لا يجمع نوعين مختلفين) |
- |
arithmetic | طرح أو سالب |
* |
arithmetic | ضرب |
/ |
arithmetic | قسمة |
% |
arithmetic | باقي القسمة |
! |
logical | نفي |
< |
comparison | أصغر من |
> |
comparison | أكبر من |
= |
assignment | إسناد |
& |
bitwise | «و» على البتات |
| |
bitwise | «أو» على البتات |
^ |
bitwise | «أو» الحصرية على البتات |
~ |
bitwise | نفي البتات |
<< |
bitwise | إزاحة يساراً (مقدارها من 0 إلى 63، وما خرج يسقط) |
>> |
bitwise | إزاحة يميناً حسابية تحفظ الإشارة (مقدارها من 0 إلى 63) |
و |
logical | صواب إن تحقق الطرفان (لا يُقيَّم الأيمن إن كان الأيسر خاطئاً) |
او |
logical | صواب إن تحقق أحد الطرفين (لا يُقيَّم الأيمن إن كان الأيسر صواباً) |
علامات الترقيم: [ ] { } , : . ( ).
المدمجات في المدمجات.