المستندات
هذه قواعد ألف نـ5 الخاصة بـ مُطابِق ألف.
نسق
القواعد
هو خليط من EBNF و PEG, حيث EBNF اختصار
لـ
Extended Backus-Naur form وهي شفرة تدوين خاص بقواعد لغات الحاسب, اما PEG فهو اختصار لـ
Parsing
Expression Grammar وهو شكل من اشكال نسق القواعد.
ملف: [حالات] نهاية
طرفية: حالة_سطر
حالات:
| حالة+
حالة:
| حالة_مركبة
| حالات_بسيطة
حالة_سطر:
| حالة_مركبة سطر
| حالة_بسيطة
|
سطر
| نهاية
حالات_بسيطة:
| حالة_بسيطة !"؛"
سطر
| "؛".حالة_بسيطة+ ["؛"] سطر
حالة_بسيطة:
| إسناد
|
نوع_بديل
| تعبيرات_نجمة
|
حالة_ارجع
| حالة_استورد
|
حالة_اظهر
| حالة_مرر
|
حالة_حذف
| حالة_ولد
| حالة_متوقع
| حالة_توقف
|
حالة_استمر
| حالة_عام
|
حالة_نطاق
حالة_مركبة:
| تعريف_دالة
|
حالة_اذا
| تعريف_صنف
|
حالة_عند
| حالة_لاجل
|
حالة_حاول
| حالة_بينما
|
حالة_طابق
إسناد:
| اسم ":" تعبير
[ "=" قيمة_موضحة]
| ("(" هدف ")" |
هدف_صفة_منخفضة) ":" تعبير ["="
قيمة_موضحة]
| (أهداف_نجمة "=")+ (تعبير_ولد | تعبيرات_نجمة) !"=" [تعليق_نوع]
| هدف
إسناد_رجعي تعبيرات_نجمة ~ (تعبير_ولد | تعبيرات_نجمة)
قيمة_موضحة:
| تعبير_ولد
|
تعبيرات_نجمة
إسناد_رجعي:
| "+=" جمع
| "-=" طرح
| "*=" ضرب
| "\=" قسمة
| "^=" أس
| "\*=" باقي القسمة
| "\\=" قسمة بدون باقي
| "&=" و
للبتات
| "|=" او للبتات
| "^^=" فقط_او للبتات
| "<<=" إزاحة يمين للبتات
| ">>=" إزاحة يسار للبتات
حالة_ارجع:
| "ارجع" [تعبيرات_نجمة]
حالة_اظهر:
| "اظهر" تعبير ["من" تبعير]
| "اظهر"
حالة_عام:
| "عام" ",".اسم+
حالة_نطاق:
| "نطاق" ",".اسم+
حالة_احذف:
| "احذف" حذف_أهداف
&("؛" | سطر)
حالة_ولد:
| تعبير_ولد
حالة_متوقع:
| "متوقع" تعبير ["," تعبير] <----- التعبير الإختياري هو
رسالة توضيحية للخطأ فقط
حالة_استورد:
| استورد_اسم
|
استورد_من
استورد_اسم:
| "استورد" اسماء_نقطة
استورد_من:
| "من" ("." | "...")* اسم_نقطة "استورد" استورد_من_اهداف
| "من" ("." |
"...")+ "استورد" استورد_من_اهداف
استورد_من_اهداف:
| "("
استورد_كـ_اسماء_من ["،"] ")"
| استورد_كـ_اسماء_من !"،"
| "*"
استورد_كـ_اسماء_من:
| "،".استورد_كـ_اسم_من+
استورد_كـ_اسم_من:
| اسم ["ك" اسم]
اسماء_كـ_نقطة:
| "،".اسم_كـ_نقطة+
اسم_كـ_نقطة:
| اسم_نقطة ["ك"
اسم]
اسم_نقطة:
| اسم_نقطة "."
اسم
| اسم
كتلة:
| سطر مسافة_طويلة حالات
مسافة_راجعة
| حالات_بسيطة
زخارف:
| ("@" تعبير_اسم
سطر)+
تعريف_صنف:
| زخارف تعريف_صنف_خام
| تعريف_صنف_خام
تعريف_صنف_خام:
| "صنف"
اسم [معاملات_نوع] [ "(" [وسيطات][^10] ")" ] ":" كتلة
تعريف_دالة:
| زخارف تعريف_دالة_خام
| تعريف_دالة_خام
تعريف_دالة_خام:
| "دالة"
اسم [معاملات_نوع] "(" [معاملات] ")" ["->" تعبير] ":" [تعليق_نوع_دالة] كتلة
|
زامن "دالة" اسم [معاملات_نوع] "(" [معاملات] ")" ["->" تعبير] ":" [تعليق_نوع_دالة] كتلة
معاملات :
| بدون_قيمة_شرطة معامل_بدون_قيمة* معامل_مع_قيمة* [الباقي_نجمة]
| مع_قيمة_شرطة معامل_مع_قيمة*
[الباقي_نجمة]
| معامل_بدون_قيمة+
معامل_مع_قيمة* [الباقي_نجمة]
|
معامل_مع_قيمة+ [الباقي_نجمة]
|
[الباقي_نجمة]
بدون_قيمة_شرطة:
| معامل_بدون_قيمة+
"\" "،"
|
معامل_بدون_قيمة+ "\" &")"
مع_قيمة_شرطة:
| معامل_بدون_قيمة*
معامل_مع_قيمة+ "\" "،"
| معامل_بدون_قيمة* معامل_مع_قيمة+ "\" &")"
الباقي_نجمة:
| "*" معامل_بدون_قيمة
معامل_ربما_قيمة* [معامل_كلمات_مفتاحية]
| "*" معامل_بدون_قيمة_موضح_نجمة
معامل_ربما_قيمة* [معامل_كلمات_مفتاحية]
| "*" "،"
معامل_ربما_قيمة+ [معامل_كلمات_مفتاحية]
| معامل_كلمات_مفتاحية
معامل_كلمات_مفتاحية:
| "**"
معامل_بدون_قيمة
معامل_بدون_قيمة:
| معامل ","
تعليق_نوع؟
| معامل تعليق_نوع
&")"
معامل_بدون_قيمة_موضح_نجمة:
| معامل_موضح_نجمة "،" تعليق_نوع؟
|
معامل_موضح_نجمة **تعليق_نوع؟ &")"
معامل_مع_قيمة:
| معامل قيمة_افتراضية "،" تعليق_نوع؟
| معامل
قيمة_افتراضية تعليق_نوع؟ &")"
معامل_ربما_قيمة:
| معامل قيمة_افتراضية؟ "،" تعليق_نوع؟
| معامل
قيمة_افتراضية؟ تعليق_نوع؟ &")"
معامل:
| اسم توضيح؟
معامل_موضح_نجمة:
| اسم موضح_نجمة
توضيح:
| ":" تعبير
موضح_نجمة:
| ":" تعبير_نجمة
قيمة_افتراضية:
| "=" تعبير
| إفتراضي_غير_صالح
حالة_اذا:
| "اذا" تعبير_اسمي ":" كتلة حالة_اواذا
| "اذا" تعبيراسمي ":" كتلة [حالة_والا]
حالة_اواذا:
| "اواذا" تعبير_اسمي ":" كتلة حالة_اواذا
| "اواذا" تعبير_اسمي ":" كتلة [حالة_والا]
حالة_والا:
| "والا" ":" كتلة
حالة_بينما:
| "بينما" تعبير_اسمي ":" كتلة
حالة_لاجل:
| "لاجل" أهداف_نجمة "في" ~ تعبيرات_نجمة ":"
[تعليق_نوع] كتلة
| "زامن" "لاجل" أهداف_نجمة "في" ~ تعبيرات_نجمة ":"
[تعليق_نوع] كتلة
حالة_عند:
| "عند" "(" "،".عند_عنصر+ "،"؟ ")" ":" [تعليق_نوع] كتلة
|
"عند" "،".عند_عنصر+ ":" [تعليق_نوع]
كتلة
| "زامن" "عند" "(" "،".عند_عنصر+ "،"؟ ")" ":"
كتلة
| "زامن" "عند" "،".عند_عنصر+ ":" [تعليق_نوع] كتلة
عند_عنصر:
| تعبير "ك" هدف_نجمة
&("،" > ")" > ":" )
| تعبير
حالة_حاول:
| "حاول" ":" كتلة كتلة_النهاية
| "حاول" ":" كتلة كتلة_خلل+ [كتلة_والا] [كتلة_النهاية]
| "حاول" ":" كتلة كتلة_خلل_نجمة+ [كتلة_والا] [كتلة_النهاية]
كتلة_خلل:
| "خلل" تعبير ["ك" اسم] ":" كتلة
| "خلل" ":" كتلة
كتلة_خلل_نجمة:
| "خلل" "*" تعبير ["ك" اسم] ":" كتلة
كتلة_النهاية:
| "نهاية" ":" كتلة
حالة_مطابقة:
| "طابق" تعبير_موضوع ":" سطر مسافة_طويلة كتلة_حال+ مسافة_راجعة
تعبير_موضوع:
| تعبير_اسمي_نجمة "،"
تعبيرات_اسمية_نجمة
| تعبير_اسمي
كتلة_حال:
| "حال" انماط حماية؟ ":" كتلة
حماية:
| "اذا" تعبير_اسمي
انماط:
| نمط_متسلسل_مفتوح
| نمط
نمط:
| نمط_ك
| نمط_او
نمط_ك:
| نمط_او "ك" نمط_إلتقاط_هدف
نمط_او:
| "|".نمط_مغلق+
نمط_مغلق:
| نمط_حرفي
|
نمط_إلتقاط
| نمط_شامل
|
نمط_قيمة
| نمط_مجموعة
|
نمط_متسلسل
| نمط_فهرس
| نمط_صنف
نمط_حرفي:
| عدد_إشارة !("+" | "-")
|
عدد_مركب
| نصوص
| "عدم"
| "صح"
| "خطا"
تعبير_حرفي: <--- مماثل لما فوقه؟
|
عدد_إشارة !("+" | "-")
| عدد_مركب
| نصوص
| "عدم"
| "صح"
| "خطا"
عدد_مركب:
| عدد_حقيقي_اشارة "+"
عدد_تخيلي
| عدد_حقيقي_اشارة "-"
عدد_تخيلي
عدد_اشارة:
| عدد
| "-" عدد
عدد_حقيقي_اشارة:
| عدد_حقيقي
|
"-" عدد_حقيقي
عدد_حقيقي:
| عدد
عدد_تخيلي:
| عدد
نمط_التقاط:
| نمط_التقاط_هدف
نمط_التقاط_هدف:
| !"_"
اسم !("." | "(" | "=")
نمط_شامل:
| "_"
نمط_قيمة:
| صفة !("." | "(" | "=")
صفة:
| اسم_او_صفة "."
اسم
اسم_او_صفة:
| صفة
|
اسم
نمط_مجموعة:
| "(" نمط ")"
نمط_متسلسل:
| "[" ربما_نمط_متسلسل؟
"]"
| "("
نمط_متسلسل_مفتوح ")"
نمط_متسلسل_مفتوح:
| ربما_نمط_نمة "،"
ربما_نمط_متسلسل؟
ربما_نمط_متسلسل:
| "،".ربما_نمط_نجمة+ "،"؟
ربما_نمط_نجمة:
| نمط_نجمة
| نمط
نمط_نجمة:
| "*"
نمط_التقاط_هدف
| "*" نمط_شامل
نمط_فهرس:
| "{" "}"
| "{"
نمط_نجمة_مضاعفة "}"
| "{" نمط_عناصر "،" نمط_نجمة_مضاعفة "،"؟ "}"
|
"{" نمط_عناصر "،"؟ "}"
نمط_عناصر:
| "،".نمط_مفتاح_قيمة+
نمط_مفتاح_قيمة:
| (تعبير_حرفي | صفة)
":" نمط
نمط_نجمة_مضاعفة:
| "**" نمط_التقاط_هدف
نمط_صنف:
| اسم_او_صفة "(" ")"
| اسم_او_صفة "(" انماط_مكانية "،"؟ ")"
| اسم_او_صفة "(" انماط_مفتاحية "،"؟ ")"
| اسم_او_صفة "(" انماط_مكانية "،" انماط_مفتاحية "،"؟ ")"
انماط_مكانية:
| "،".نمط+
انماط_مفتاحية:
| ",".نمط_مفتاحي+
نمط_مفتاحي:
| اسم "="
نمط
نوع_بديل:
| "نوع" اسم
[معاملات_نوع] "=" تعبير
معاملات_نوع:
| معاملات_نوع_غير_صالحة
| "[" معامل_متسلسل_نوع "]"
معامل_متسلسل_نوع:
| "،".معامل_نوع+ ["،"]
معامل_نوع:
| اسم [معامل_نوع_حدود]
[معامل_نوع_افتراضي]
| "*"
اسم [معامل_نوع_افتراضي_نجمي]
| "**" اسم [معامل_نوع_افتراضي]
معامل_نوع_حدود:
| ":" تعبير
معامل_نوع_افتراضي:
| "=" تعبير
معامل_نوع_افتراضي_نجمي:
| "="
تعبير_نجمة
تعبير:
| انفصال "اذا" انفصال "والا" تعبير
| انفصال
| تعريف_مدلول
تعبير_ولد:
| "ولد" "من" تعبير
| "ولد" [تعبيرات_نجمة]
تعبيرات_نجمة:
| تعبير_نجمة ("،" تعبير_نجمة)+ ["،"]
| تعبير_نجمة "،"
| تعبير_نجمة
تعبير_نجمة:
| "*" وحدة_او
| تعبير
تعبيرات_اسمية_نجمة [^15]:
| "،".تعبير_اسمي_نجمة+ ["،"]
تعبير_اسمي_نجمة:
| "*"
وحدة_او
| تعبير_اسمي
تعبير_اسمي:
| تعبير_اسناد
| تعبير
!":="
تعبير_اسناد:
| اسم ":=" ~ تعبير
انفصال:
| اتصال ("او" اتصال)+
| اتصال
اتصال:
| عكس ("و" عكس)+
| عكس
عكس:
| "ليس" عكس
| مقارنة
مقارنة:
| وحدة_او عمليات_مقارنة_وحدة_او_زوج+
| وحدة_او
عمليات_مقارنة_وحدة_او_زوج:
| وحدة_او_يساوي
| وحدة_او_لا_يساوي
|
وحدة_او_اصغر_من_يساوي
| وحدة_او_اصغر_من
| وحدة_او_اكبر_من_يساوي
|
وحدة_او_اكبر_من
| وحدة_او_ليس_في
| وحدة_او_في
|
وحدة_او_هل_ليس
| وحدة_او_هل
وحدة_او_يساوي:
| "=="
وحدة_او
وحدة_او_لا_يساوي:
| ("!=")
وحدة_او
وحدة_او_اصغر_من_يساوي:
| "<=" وحدة_او
وحدة_او_اصغر_من:
|
"<" وحدة_او
وحدة_او_اكبر_من_يساوي:
| ">="
وحدة_او
وحدة_او_اكبر_من:
| ">"
وحدة_او
وحدة_او_ليس_في:
| "ليس"
"في" وحدة_او
وحدة_او_في:
| "في" وحدة_او
وحدة_او_هل_ليس:
| "هل" "ليس" وحدة_او
وحدة_او_هل:
| "هل" وحدة_او
وحدة_او:
| وحدة_او "|"
وحدة_فقط_او
| وحدة_فقط_او
وحدة_فقط_او:
| وحدة_فقط_او "*|"
وحدة_و
| وحدة_و
وحدة_و:
| وحدة_و "&"
تعبير_ازاحة
| تعبير_ازاحة
تعبير_ازاحة:
| تعبير_ازاحة ">>"
جمع
| تعبير_ازاحة "<<"
جمع
| جمع
جمع:
| جمع "+" حد
| جمع "-" حد
| حد
حد:
| حد "*" معامل
| حد "\" معامل
| حد "\*" معامل
| حد "\\" معامل
| معامل
معامل:
| "+" معامل
| "-" معامل
| "~" معامل
| أس
أس:
| جذر "^" معامل
| جذر
جذر:
| "\^" جذر
| اولي_انتظار
اولي_انتظر:
| "انتظر" اولي
| اولي
اولي:
| اولي "."
اسم
| اولي تعبير_توليدي
| اولي "(" [وسيطات] ")"
| اولي "[" قواطع "]"
| جزء
قواطع:
| قاطع !"،"
| "،".(قاطع |
تعبير_نجمي)+ ["،"]
قاطع:
| [تعبير] ":" [تعبير] [":" [تعبير] ]
| تعبير
جزء:
| اسم
|
"صح"
| "خطا"
| "عدم"
| نصوص
| عدد
| (مترابطة
| مجموعة | تعبير_توليدي)
| (مصفوفة | مصفوفة_ضمنية[^12])
|
(فهرس | فهرس_ضمني | تشكيلة[^13] |
تشكيلة_ضمنية)
| "..."
مجموعة:
| "(" (تعبير_ولد | تعبير_اسمي) ")"
تعريف_المدلول:
| "مدلول"
[معاملات_مدلول] ":" تعبير
معاملات_مدلول:
| مدلول_معامل_بدون_قيمة_شرطة
مدلول_معامل_بدون_قيمة* مدلول_معامل_مع_قيمة* [مدلول_الباقي_نجمة]
|
مدلول_معامل_مع_قيمة_شرطة مدلول_معامل_مع_قيمة*
[مدلول_الباقي_نجمة]
| مدلول_معامل_بدون_قيمة+ مدلول_معامل_مع_قيمة_شرطة*
[مدلول_الباقي_نجمة]
| مدلول_معامل_مع_قيمة+ [مدلول_الباقي_نجمة]
|
مدلول_الباقي_نجمة
مدلول_معامل_بدون_قيمة_شرطة:
| مدلول_معامل_بدون_قيمة+ "\" "،"
| مدلول_معامل_بدون_قيمة+ "\" &":"
مدلول_معامل_مع_قيمة_شرطة:
| مدلول_معامل_بدون_قيمة* مدلول_معامل_مع_قيمة+ "\" "،"
|
مدلول_معامل_بدون_قيمة* مدلول_معامل_مع_قيمة+ "\" &":"
مدلول_الباقي_نجمة:
| "*"
مدلول_معامل_بدون_قيمة مدلول_معامل_ربما_قيمة*
[مدلول_معامل_كلمات_مفتاحية]
| "*"
"،" مدلول_معامل_ربما_قيمة+
[مدلول_معامل_كلمات_مفتاحية]
| مدلول_معامل_كلمات_مفتاحية
مدلول_معامل_كلمات_مفتاحية:
| "**"
مدلول_معامل_بدون_قيمة
مدلول_معامل_بدون_قيمة:
| مدلول_معامل "،"
| مدلول_معامل &":"
مدلول_معامل_مع_قيمة:
| مدلول_معامل قيمة_افتراضية "،"
| مدلول_معامل قيمة_افتراضية
&":"
مدلول_معامل_ربما_قيمة:
| مدلول_معامل قيمة_افتراضية؟ "،"
| مدلول_معامل قيمة_افتراضية؟
&":"
مدلول_معامل:
| اسم
نصوص:
| (نص_تنفيذي | نص)+
نص:
| نص
نص_تنفيذي:
| نص_تنفيذي_بداية نص_تنفيذي_اوسط* نص_تنفيذي_نهاية
نص_تنفيذي_اوسط:
| نص_تنفيذي_مجال_استبدال
| نص_تنفيذي_اوسط
نص_تنفيذي_مجال_استبدال:
| "{"
قيمة_موضحة "="؟ [نص_تنفيذي_تحويل] [نص_تنفيذي_تنسيق_كامل] "}"
نص_تنفيذي_تحويل:
| "!"
اسم
نص_تنفيذي_تنسيق_كامل:
| ":"
نص_تنفيذي_تنسيق*
نص_تنفيذي_تنسيق:
| نص_تنفيذي_اوسط
| نص_تنفيذي_مجال_استبدال
مصفوفة:
| "[" [تعبيرات_اسمية_نجمة]
"]"
مترابطة:
| "(" [تعبير_اسمي_نجمة "،" [تعبيرات_اسمية_نجمة]] ")"
تشكيلة:
| "{" [تعبيرات_اسمية_نجمة]
"}"
فهرس:
| "{" [ازواج_نجمية_مضاعفة] "}"
ازواج_نجمية_مضاعفة:
| "،".زوج_نجمي_مضاعف
زوج_نجمي_مضاعف:
| "**"
وحدة_او
| زوج_كلمة_مفتاحية
زوج_كلمة_مفتاحية:
| تعبير ":" تعبير
مصفوفة_ضمنية:
| "[" تعبير_اسمي
لاجل_اذا_بنود "]"
تشكيلة_ضمنية:
| "{" تعبير_اسمي
لاجل_اذا_بنود "}"
تعبير_توليدي:
| "(" (تعبير_اسناد | تعبير !":=") لاجل_اذا_بنود
فهرس_ضمني:
| "{" زوج_كلمة_مفتاحية
لاجل_اذا_بنود "}"
لاجل_اذا_بنود:
| لاجل_اذا_بند+
لاجل_اذا_بند:
| "زامن" "لاجل" اهداف_نجمة "في" ~ انفصال ("اذا" انفصال)*
| "لاجل"
اهداف_نجمة "في" ~ انفصال ("اذا" انفصال)*
الوسيطات:
| وسيطات ["،"] &")"
وسيطات:
| "،".(تعبير_نجمي | (تعبير_اسناد | تعبير !":=") !"=")+
["،" وسيطات_مفتاحية]
| وسيطات_مفتاحية
وسيطات_مفتاحية:
| "،".وسيط_مفتاحي_او_نجمي+ "،" "،".وسيط_مفتاحي_او_نجمي_مضاعف
| "،".وسيط_مفتاحي_او_نجمي+
| "،".وسيط_مفتاحي_او_نجمي_مضاعف
وسيط_مفتاحي_او_نجمي:
| اسم "=" تعبير
| تعبير_نجمي
وسيط_مفتاحي_او_نجمي_مضاعف:
| اسم "=" تعبير
"**" تعبير
تعبير_نجمي:
| "*" تعبير
اهداف_نجمة:
| هدف_نجمة !"،"
| هدف_نجمة ("،" هدف_نجمة)* ["،"]
هدف_مع_جزء_نجمة:
| هدف_اولي "."
اسم !هدف_تالي
| هدف_اولي "[" قواطع "]" !هدف_تالي
| جزء_نجمة
جزء_نجمة:
| اسم
| "(" هدف_مع_جزء_نجمة ")"
| "("
[تتالي_اهداف_مترابطة_نجمة] ")"
| "[" [تتالي_اهداف_مصفوفة_نجمة] "]"
تتالي_اهداف_مترابطة_نجمة:
| هدف_نجمة
("،" هدف_نجمة)+ ["،"]
| هدف_نجمة "،"
تتالي_اهداف_مصفوفة_نجمة:
| "،".هدف_نجمة+ ["،"]
هدف_نجمة:
| "*" (!"*" هدف_نجمة)
| هدف_مع_جزء_نجمة
هدف:
| هدف_صفة_منخفضة
|
اسم
| "(" هدف ")"
هدف_صفة_منخفضة:
| هدف_اولي "."
اسم !هدف_تالي
| هدف_اولي "[" قواطع "]" !هدف_تالي
هدف_اولي:
| هداف_اولي "."
اسم &تحقق_تالي
| هدف_اولي "[" قواطع "]" &تحقق_تالي
| هدف_اولي تعبير_توليدي &تحقق_تالي
| هدف_اولي "(" [وسيطات] ")" &تحقق_تالي
| جزء &تحقق_تالي
تحقق_تالي:
| "("
| "["
|
"."
حذف_أهداف:
| "،".حذف_هدف+ ["،"]
حذف_هدف:
| هدف_أولي "."
اسم !تحقق_التالي
| هدف_أولي "[" قواطع "]" !تحقق_التالي
| حذف_هدف_جزء
حذف_هدف_جزء:
| اسم
| "(" حذف_هدف ")"
| "("
[حذف_اهداف] ")"
| "[" [حذف_اهداف] "]"