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

التعابير

منقول من الكتاب المرجعي: docs/handbook/language/03-expressions.md · الإيداع 7a52f6c

القاعدة. الأولوية من الأضعف: او، و، المقارنات، |، ^، &، << >>، + -، * / %، ثم الأحادية ! - ~. كلها من اليسار. المقارنات لا تتسلسل. و واو مختصرتا التقييم. الجدول وتفصيله في semantics.md (وثيقة في مستودع المجمّع).

  • / بين عددين صحيحين تقطع نحو الصفر، و% بإشارة المقسوم. القسمة على صفر خطأ تشغيل.
  • + بين نصين دمج؛ نص مع غيره خطأ ترجمة: "س = " + نص(3)، أو دمج_نصوص("س = ", 3)، أو اطبع("س = ", 3).
  • == و!= على الأعداد والكسور والنصوص والرموز والمنطقي والمؤشرات؛ و< على النصوص بترتيب نقاط الترميز. مقارنة القوائم والمصفوفات والقواميس والهياكل مباشرةً خطأ ترجمة: قارن عناصرها.
  • عمليات البتات على عدد وحده، وتلتف دائماً.
  • الفهرسة ق[ف] من 0؛ خارج الحدود خطأ تشغيل. قاموس[مفتاح] لمفتاح غائب خطأ تشغيل (افحص بـيحوي أو يوجد).
مثال
اطبع(2 + 3 * 4, " ", -7 / 2, " ", -7 % 2, " ", 1 / 2.0)
اطبع("ا" + "ب", " ", "ب" > "ا", " ", 6 & 3, " ", 1 << 4)
ق = {"ا": 1}
اطبع(يحوي(ق, "ب") او ق["ا"] == 1)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
14 -3 -1 0.5اب صواب 2 16صواب

القيود المعروفة. لا معامل أُسّ (رياضيات.اس). لا شرطي ثلاثي. المقارنة 1 < س < 3 خطأ ترجمة. ولا مقارنة مباشرة للحاويات والهياكل. ترتيب النصوص بنقاط الترميز (< ورتب) لا بالترتيب المعجمي العربي: الحروف بترتيب جدول Unicode، فالهمزات والتاء المربوطة والألف المقصورة ليست في مواضعها المعجمية، والحروف اللاتينية الكبيرة قبل الصغيرة. حدّ معروف مقصود قبل 1.0؛ لترتيب آخر استعمل رتب_ب بمقارنك.

أخطاء محتملة.

مثال
اطبع("العمر " + 30)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0226] سطر 1:15 - لا يمكن جمع 'نص' و 'عدد' بـ '+': النوعان مختلفان ولا تحويل تلقائياً   1 | اطبع("العمر " + 30)     |               ^  تلميح: حوّل القيمة صراحةً ليصير الطرفان نصين: "العدد " + نص(5)   أو افصل القيم بفاصلة داخل اطبع: اطبع("العدد ", 5)

رمز الخروج: 2

في فهرس الأخطاء: E0226

مثال
ق = [1, 2]
اطبع(ق[5])
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
[خطأ تشغيل E0321] سطر 2:7 - الفهرس 5 خارج الحدود (الحجم 2)  اطبع(ق[5])

رمز الخروج: 3

في فهرس الأخطاء: E0321