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

قواعد اللغة

مواصفات قواعد لغة كنوز الرسمية وبنية النحو.

برنامج = { عنصر }
عنصر = دالة | هيكل | تعداد | سمة | تنفيذ | ثابت
// الصيغة العامة
دالة اسم_الدالة(معامل١: نوع١, معامل٢: نوع٢) -> نوع_الإرجاع {
جملة;
جملة;
أرجع قيمة;
}
// أمثلة
دالة مرحبا() {
اطبع("مرحباً");
}
دالة جمع(أ: صحيح, ب: صحيح) -> صحيح {
أرجع أ + ب;
}
دالة عملية<ن>(قيمة: ن) -> ن {
أرجع قيمة;
}
// الصيغة العامة
هيكل اسم_الهيكل {
حقل١: نوع١,
حقل٢: نوع٢
}
// مع أنواع عامة
هيكل اسم_الهيكل<ن> {
حقل: ن
}
// مع ثوابت عامة
هيكل اسم_الهيكل<ن, ثابت حجم: صحيح> {
عناصر: [ن; حجم]
}
// بسيط
تعداد لون {
أحمر,
أخضر,
أزرق
}
// مع قيم مرفقة
تعداد حالة {
متصل,
منفصل,
جاري(صحيح),
خطأ(نص)
}
سمة اسم_السمة {
دالة طريقة(&ذاتي);
دالة طريقة_أخرى(&متغير ذاتي, قيمة: صحيح) -> صحيح;
}
// مع أنواع مرتبطة
سمة مجموعة {
نوع عنصر;
دالة أضف(&متغير ذاتي, ع: عنصر);
}
// تنفيذ طرق
نفذ اسم_الهيكل {
دالة جديد() -> ذاتي {
أرجع ذاتي { };
}
}
// تنفيذ سمة
نفذ اسم_السمة لـ اسم_الهيكل {
دالة طريقة(&ذاتي) {
// التنفيذ
}
}
// متغير ثابت
دع اسم = قيمة;
دع اسم: نوع = قيمة;
// متغير قابل للتغيير
دع متغير اسم = قيمة;
دع متغير اسم: نوع = قيمة;
اسم = قيمة_جديدة;
اسم += قيمة;
اسم -= قيمة;
اسم *= قيمة;
اسم /= قيمة;
// if-else
إذا شرط {
جمل;
}
إذا شرط {
جمل;
} وإلا {
جمل;
}
إذا شرط١ {
جمل;
} وإلا إذا شرط٢ {
جمل;
} وإلا {
جمل;
}
// while
طالما شرط {
جمل;
}
// for-in
لكل عنصر في مجموعة {
جمل;
}
// for-range
لكل ت في بداية..نهاية {
جمل;
}
لكل ت في بداية..=نهاية {
جمل;
}
// infinite loop
كرر {
جمل;
إذا شرط {
أوقف;
}
}
طابق تعبير {
نمط١ => { جمل; }
نمط٢ => { جمل; }
_ => { جمل_افتراضية; }
}
// أنماط متعددة
طابق قيمة {
1 | 2 | 3 => { جمل; }
4..=10 => { جمل; }
_ => { }
}
// مطابقة مع استخراج
طابق اختياري {
بعض(ق) => { استخدم(ق); }
عدم => { }
}
جرب {
جمل;
} التقط متغير_الخطأ {
جمل;
}
جرب {
جمل;
} التقط متغير_الخطأ {
جمل;
} أخيرا {
جمل;
}
ألق "رسالة الخطأ";
أرجع قيمة; // إرجاع قيمة
أرجع; // إرجاع بدون قيمة
أوقف; // الخروج من الحلقة
تابع; // تخطي للتكرار التالي
// الحرفية
42 // صحيح
3.14 // عشري
"نص" // نص
'ح' // حرف
صح / خطأ // منطقي
// المتغيرات
اسم_المتغير
// استدعاء دالة
اسم_الدالة(معامل١, معامل٢)
// الوصول للحقل
هيكل.حقل
// الوصول للمصفوفة
مصفوفة[فهرس]
// حسابية
تعبير + تعبير
تعبير - تعبير
تعبير * تعبير
تعبير / تعبير
تعبير % تعبير
// مقارنة
تعبير == تعبير
تعبير != تعبير
تعبير < تعبير
تعبير > تعبير
تعبير <= تعبير
تعبير >= تعبير
// منطقية
تعبير و تعبير
تعبير أو تعبير
!تعبير
// البت
تعبير & تعبير
تعبير | تعبير
تعبير ^ تعبير
تعبير << تعبير
تعبير >> تعبير
// مصفوفة
[قيمة١, قيمة٢, قيمة٣]
[قيمة; عدد]
// صف
(قيمة١, قيمة٢, قيمة٣)
// هيكل
اسم_الهيكل { حقل١: قيمة١, حقل٢: قيمة٢ }
// تعداد
اسم_التعداد::قيمة
اسم_التعداد::قيمة(معامل)
// لامدا
|معامل١: نوع١, معامل٢: نوع٢| -> نوع_الإرجاع { جمل }
|معامل| تعبير
&تعبير // مرجع
&متغير تعبير // مرجع قابل للتغيير
*تعبير // فك المرجع
صحيح - عدد صحيح
ص32 - صحيح 32 بت
ص64 - صحيح 64 بت
عشري - عدد عشري
ع32 - عشري 32 بت
ع64 - عشري 64 بت
منطقي - قيمة منطقية
حرف - حرف Unicode
نص - سلسلة نصية
() - الوحدة (بدون قيمة)
[نوع; حجم] - مصفوفة ثابتة الحجم
(نوع١, نوع٢) - صف
متجه<نوع> - متجه
قاموس<مفتاح, قيمة> - قاموس
اختياري<نوع> - اختياري
نتيجة<نوع, خطأ> - نتيجة
&نوع - مرجع للقراءة
&متغير نوع - مرجع للتعديل
اسم<نوع> - نوع عام
اسم<نوع, ثابت قيمة: صحيح> - مع ثوابت

تستخدم في طابق و دع:

// الحرفية
42
"نص"
صح
// المتغير
اسم // يربط القيمة
_ // يتجاهل القيمة
// الصف
(نمط١, نمط٢)
// الهيكل
اسم { حقل: نمط }
// التعداد
اسم::قيمة
اسم::قيمة(نمط)
// النطاق
1..=10
'أ'..='ي'
// البديل
نمط١ | نمط٢
// تعليق سطر واحد
/*
تعليق
متعدد
الأسطر
*/
/// توثيق للعنصر التالي

الحروف الخاصة في النصوص

Section titled “الحروف الخاصة في النصوص”
\n - سطر جديد
\t - تبويب
\r - رجوع
\\ - شرطة مائلة
\" - اقتباس مزدوج
\' - اقتباس مفرد
\0 - حرف فارغ
معرّف = حرف { حرف | رقم | '_' }
حرف = 'أ'..'ي' | 'ا'..'ي' | 'a'..'z' | 'A'..'Z' | '_'
رقم = '0'..'9' | '٠'..'٩'
العنصرالأسلوبالمثال
متغيرsnake_caseعداد_الحلقة
دالةsnake_caseاحسب_المجموع
هيكلPascalCaseشخص
تعدادPascalCaseلون
ثابتSCREAMING_SNAKEالحد_الأقصى
; - نهاية الجملة
, - فاصل في القوائم
: - فاصل النوع
:: - فاصل المسار
-> - نوع الإرجاع
=> - في المطابقة
.. - نطاق حصري
..= - نطاق شامل