تخطَّ إلى المحتوى

المفردات

منقول من الكتاب المرجعي: 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 صواب إن تحقق أحد الطرفين (لا يُقيَّم الأيمن إن كان الأيسر صواباً)

علامات الترقيم: [ ] { } , : . ( ).

المدمجات في المدمجات.