Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

قواعد النحو (Grammar)

نحوُ لغة ص موصوفٌ وصفًا رسميًّا مدفوعًا بالبيانات (data-driven): كلّ قاعدة إنتاج مكتوبة بصيغة EBNF ومربوطة بدالة التحليل الفعليّة في المحلّل (حقل maps_to)، فيتحقّق الـCI من تطابق الوصف مع السلوك. هذا يجعل النحو مصدرَ حقيقة قابلًا للتنفيذ لا مجرّد توثيق.

المصدر: language-truth/grammar/ — موزّع على ثماني طبقات.

طبقات القواعد

الملفّالطبقةيغطّي
00_program.yamlالبرنامجالجذر، التصريح الأعلى، الكتلة
10_statements.yamlالجُملالإسناد، الشروط، الحلقات، التحكّم
20_declarations.yamlالتصريحاتالمتغيّرات، الدوال، الوحدات
30_oop.yamlالكائنيّةالأصناف، البنى، التعدادات، الوراثة
40_expressions.yamlالتعبيراتالعوامل، الاستدعاءات، الوصول
50_patterns.yamlالأنماططابق/عندما/افتراضي
60_advanced.yamlالمتقدّمةالتزامن، القوالب، فضاءات الأسماء
70_lexical.yamlالمعجميّةالرموز، القيم الحرفيّة، المُعرِّفات

صيغة الترميز (EBNF)

تتبع القواعد ترميز EBNF القياسيّ:

  • { X } تكرار صفر أو أكثر.
  • [ X ] اختياريّ.
  • X | Y بديل.
  • ( ... ) تجميع.
  • الطرفيّات تشير إلى المعجم ولا تُعرَّف داخل ملفّات النحو.

أمثلة من القواعد

البنية العليا للبرنامج والكتلة (الكتلة تُغلَق دائمًا بـنهاية):

Program     = { Declaration } EOF ;
Block       = { Statement } "نهاية" ;
IfStmt      = "إذا" Expression Block [ "وإلا" Block ] ;
WhileStmt   = "بينما" Expression Block ;
ForStmt     = "لكل" Identifier "في" Expression Block ;
FuncDecl    = "دالة" Identifier "(" [ ParamList ] ")" [ ":" Type ] Block ;
MatchStmt   = "طابق" Expression { "عندما" Pattern Block } [ "افتراضي" Block ] "نهاية" ;

هذه الأمثلة توضيحيّة للقارئ؛ الصيغة الرسميّة الكاملة (مع alternatives وmaps_to وast_node لكلّ قاعدة) في ملفّات language-truth/grammar/.

مبادئ نحويّة ثابتة

  • كلّ كتلة تُغلَق بـنهاية (عدا كتل باستخدام التي تُغلَق بـنهاية_استخدام).
  • الفواصل متكافئة: ،, و؛;.
  • التعليقات: سطريّ #، كتليّ #* ... *#، توثيقيّ ##.
  • الرموز العربيّة حصريّة حيث نُصَّ عليها (مثل ؟ = U+061F لأمان العدم والثلاثيّ).

التوثيق المُولَّد

تُولَّد صفحات قواعد المحلّل آليًّا من هذا المصدر إلى docs/parser_rule/_generated في المستودع الأساسيّ عبر gen_parser_grammar_docs.py، فيبقى التوثيق متزامنًا مع السلوك.

انظر أيضًا