Skip to content

feat(parser): محاذاة الاستيعابات و«طابق» و«خارجي» مع مصدر الحقيقة (RFC 25 م1)#140

Merged
SalehKadah merged 1 commit into
devfrom
rfc-25-parser-sot-alignment
Jul 3, 2026
Merged

feat(parser): محاذاة الاستيعابات و«طابق» و«خارجي» مع مصدر الحقيقة (RFC 25 م1)#140
SalehKadah merged 1 commit into
devfrom
rfc-25-parser-sot-alignment

Conversation

@SalehKadah

Copy link
Copy Markdown
Collaborator

ملخّص

دفعة م1 من RFC 25 — محاذاة المحلّل النحويّ مع مصدر الحقيقة: ثلاثة تعارضات + إغلاق فجوة وقت تشغيل المترجم للمجموعة.

التعارض 1 (م1ب) — الاستيعابات بترتيب «أنتج» العربيّ

متغير ق = [لكل س في [1، 2، 3، 4] أنتج س * 2]         # [2, 4, 6, 8]
متغير م = {لكل س في [1، 2، 2، 3] أنتج س}              # مجموعة: [1, 2, 3]
متغير د = {لكل س في [1، 2، 3] أنتج نص(س): س * س}      # قاموس: {"1":1,"2":4,"3":9}
  • المحلّل فقط تغيّر (كشف مبكّر بـلكل، تمييز قاموس/مجموعة بـ:عقد AST ثابتة ⇒ المفسّر لم يُمَسّ، تكافؤ محفوظ.
  • أنتج = KEYWORD_YIELD السياقيّة الموجودة (لا تعديل keywords).
  • +قاعدة gr.adv.set_comprehension ⇒ 105 قواعد؛ حُذفت الدالّتان الميتتان؛ صُحّحت maps_to.
  • فجوة المترجم للمجموعة أُغلقت: أُعيد buildExprSetComp على أوكواد ARRAY_* المُلوَّنة + مسح داخليّ لإزالة التكرار على قيمة الناتج (بدل __sad_set_add غير المعرَّفة)؛ تخصيص العلَم/العدّاد في كتلة الدخول (لا تسريب مكدس).

التعارض 2 — نقطتا عندما/افتراضي في طابق اختياريّتان (مطابقةً للـSoT).

التعارض 3 — كتلة خارجي تُغلق بـنهاية لا {} (ebnf/maps_to/ast_node=BlockStmt).

الاختبارات (349، كلّها خضراء)

  • 266 سلوك .ص — تكافؤ مزدوج مفسّر/مترجم 100%. اختبارات المجموعة تستعمل خرائط غير حقنيّة (س % 3) + probe قيمة بالفهرسة ⇒ تمنع التغطية الزائفة (محرّك يتجاهل أنتج أو يزيل التكرار على المصدر يفشل).
  • 83 وحدة C++tests/unit/parser/test_comprehensions_antaj.cpp (عقد AST + تمييز + رفض الترتيب القديم + بنية BinaryExpr)، مُسجَّل في cmake/tests.cmake كـComprehensionAntajTests (وسم Unit).
  • مولّد حتميّ في tests/behavior/rules_matrix/_generators/.
  • لا انحدار: طابق 86/86، 60_advanced 34/34.

المراجعة

مُراجَع بمنهجيّة Amelia أربع مرّات (المحلّل+SoT · IR المجموعة · الاختبارات · بوّابة ما قبل الدفع)، كلّ الملاحظات مطبَّقة. أبرزها: سدّ تغطية زائفة في المجموعة، إصلاح تسريب مكدس في IR، مواءمة SoT/محلّل، ومتانة السلبيّات.

توثيق مرافق

  • sadlang-docs #3 — مرجع المستخدم (صياغة + أمثلة مُتحقَّقة).
  • dev-guide #2 — دليل المطوّر (محلّل/AST/SIR + رسوم mermaid).

حدود معروفة موثَّقة

  • إزالة التكرار للمجموعة عدديّة (كبقيّة بنية الاستيعابات) — النصوص/العشريّ لاحقًا.
  • buildExprGenerator ما زال بالنهج المكسور (خارج نطاق م1).
  • تنظيف parser_extern.cpp/parser_comprehension.cpp الميتَين ⇒ م2.

🤖 Generated with Claude Code

…C 25 م1)

ثلاثة تعارضات بين المحلّل ومصدر الحقيقة، مع إغلاق فجوة وقت تشغيل المترجم للمجموعة:

• التعارض 1 (م1ب) — الاستيعابات بترتيب «أنتج» العربيّ:
  [لكل س في مصدر [إذا شرط] أنتج ناتج] (والمعقوفة للمجموعة/القاموس، «:» يميّز
  القاموس). المحلّل فقط تغيّر (كشف مبكّر بـ«لكل» في parseArrayLiteral/parseMapLiteral)؛
  عقد AST ثابتة فلم يُمَسّ المفسّر. «أنتج»=KEYWORD_YIELD السياقيّة الموجودة (لا تعديل
  keywords). أُضيفت قاعدة gr.adv.set_comprehension (105 قواعد). حُذفت الدالّتان
  الميتتان parseListComprehension/parseDictComprehension. صُحّحت maps_to.
  أُغلقت فجوة المترجم للمجموعة: أُعيد buildExprSetComp على أوكواد ARRAY_*
  المُلوَّنة + مسح داخليّ لإزالة التكرار على قيمة الناتج (بدل __sad_set_add غير
  المعرَّفة)، تخصيص العلَم/العدّاد في كتلة الدخول (لا تسريب مكدس).

• التعارض 2 — نقطتا «عندما»/«افتراضي» في «طابق» صارتا اختياريّتين (مطابقةً للـSoT).

• التعارض 3 — كتلة «خارجي» تُغلق بـ«نهاية» لا «{}» (ebnf/alternatives/maps_to +
  ast_node=BlockStmt).

الاختبارات (349): 266 سلوك .ص (تكافؤ مزدوج 100%؛ مجموعة بخرائط غير حقنيّة +
probe قيمة تمنع التغطية الزائفة) + مولّد حتميّ + 83 وحدة C++ (ComprehensionAntajTests
في cmake/tests.cmake، وسم Unit). لا انحدار (طابق 86/86، 60_advanced 34/34).
مصدر الحقيقة والوثائق المولَّدة (parser_rule/_generated، 105 قواعد) محدَّثة.

توثيق مرافق: sadlang-docs PR #3 (المستخدم) + dev-guide PR #2 (المطوّر).
مُراجَع بـ«Amelia» (المحلّل + IR المجموعة + الاختبارات + بوّابة ما قبل الدفع).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

📚 تذكير مزامنة دليل المطوّرين

هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (python scripts/check_sync.py --update):

بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج.

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

📘 تذكير مزامنة التوثيق التقنيّ

هذا الـPR يلمس مصادر يعرضها التوثيق التقنيّ. الصفحات المُولَّدة تُعاد بناؤها آليًّا عند الدمج/الإصدار؛ راجع الصفحات النثريّة إن تغيّر سلوكها:

تذكيرٌ آليّ — لا يحجب الدمج.

@SalehKadah SalehKadah merged commit be7e388 into dev Jul 3, 2026
28 of 30 checks passed
@SalehKadah SalehKadah deleted the rfc-25-parser-sot-alignment branch July 3, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant