Skip to content

docs(frontend): دراسة حالة تنفيذ الاستيعابات (أنتج → SIR)#2

Merged
SalehKadah merged 4 commits into
mainfrom
docs/comprehensions-internals
Jul 3, 2026
Merged

docs(frontend): دراسة حالة تنفيذ الاستيعابات (أنتج → SIR)#2
SalehKadah merged 4 commits into
mainfrom
docs/comprehensions-internals

Conversation

@SalehKadah

Copy link
Copy Markdown
Contributor

ملخّص

صفحة دليل مطوّرين جديدة frontend/comprehensions.md تتتبّع تنفيذ ميزة الاستيعابات (RFC 25 م1ب) عبر خطّ الأنابيب — منظور المساهم في المترجم/المفسّر (يكمّل مرجع المستخدم في sadlang-docs).

تغطّي

  1. المحلّل — الكشف المبكّر عبر لكل في parseArrayLiteral/parseMapLiteral، تمييز قاموس/مجموعة بـ: (أو =) عبر parseTernary، حذف الدالّتين القديمتين من مسار المحلّل الحيّ.
  2. AST (لم يتغيّر) — حقول List/Set/Dict ComprehensionExpr، متغيّر حلقة مفرد للقاموس.
  3. SIR — أوكواد ARRAY_* للقائمة، __sad_map_create/__sad_map_set_typed للقاموس، ومسح إزالة تكرار على قيمة الناتج للمجموعة (تخصيص العلَم/العدّاد في كتلة الدخول، هيمنة SSA)، الحدّ العدديّ، وفخّ buildExprGenerator المكسور.
  4. الاختبار — طبقتا سلوك (تكافؤ مزدوج، خرائط غير حقنيّة) ووحدة C++ (ComprehensionAntajTests).

المراجعة

مُراجَعة Amelia: تحقّقت من كلّ ادّعاء تقنيّ مقابل المصدر الفعليّ (أسماء الدوال/الملفّات/الأوكواد/الحقول مطابقة). طُبِّقت ملاحظاتها (سبب فصل بانِي المجموعة، قبول =، دقّة «المحلّل الحيّ» + النموذج الميت، توضيح شرط القبول).

التغييرات

  • src/frontend/comprehensions.md (صفحة جديدة)
  • 📑 src/SUMMARY.md (تسجيل تحت «الواجهة الأماميّة» بعد AST)

⚠️ تنسيق الدمج

روابط blob/dev/… تكتمل بعد دمج م1 إلى dev (بعض الملفّات جديدة، مثل test_comprehensions_antaj.cpp). يُدمَج بتنسيق مع دفعة النحو.

🤖 Generated with Claude Code

Sad Lang Dev and others added 3 commits July 3, 2026 07:10
صفحة frontend/comprehensions.md تتتبّع تنفيذ استيعابات القوائم/المجموعات/
القواميس عبر خطّ الأنابيب: الكشف المبكّر عبر «لكل» وتمييز قاموس/مجموعة بـ«:»
في parseArrayLiteral/parseMapLiteral، عقد AST الثابتة، وتوليد SIR (أوكواد
ARRAY_* للقائمة، __sad_map_* للقاموس، ومسح إزالة تكرار على قيمة الناتج
للمجموعة مع تخصيص في كتلة الدخول). توثّق الحدّ العدديّ وفخّ buildExprGenerator
وطبقتَي الاختبار. مُراجَعة Amelia (دقّة كلّ ادّعاء مقابل المصدر) مطبَّقة.

يُدمَج بتنسيق مع دمج م1 إلى dev (روابط blob/dev تكتمل بعد الدمج).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- خطّ الأنابيب (flowchart): عقدة AST كمحور التكافؤ بين المفسّر والمترجم.
- شجرة قرار المحلّل (flowchart TD): الكشف المبكّر بـ«لكل» بلا تراجُع، وتمييز
  قائمة/مجموعة/قاموس بنوع القوس ووجود «:».
- CFG بانِي المجموعة في SIR: الحلقة الخارجيّة + مسح إزالة التكرار الداخليّ
  (sc_cond/body/val/scan_*/append/inc/exit)، تعقيد O(ن²)، تخصيص في كتلة الدخول.
شرح موسَّع حول كلّ رسم. الرسوم الثلاثة مُتحقَّق من صياغتها بـmermaid-cli (رندرة SVG).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- sync-guard: سُجِّل src/frontend/comprehensions.md في sync/sources.yaml
  بمصادره (parser_advanced/expressions.h/بانيَي الاستيعاب/grammar) — كان
  الفصل غير مسجَّل فيفشل حارس سلامة البيان (check_sync --validate).
- check (lychee): أُضيف --root-dir لحلّ رابط الجذر «/» في 404.html المولَّد
  من mdBook — خللٌ سابق في CI كشفه أوّل PR يمرّ عبر فحص الروابط (لا PR
  مدموج قبله؛ الفصول السابقة دُفعت مباشرةً لـmain متجاوزةً PR-CI).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ابات (RFC 25 التعارض 1أ)

يوسّع دراسة حالة الاستيعابات بقسم تنفيذيّ (أ/ب/ج/د): أساس تكرار الخريطة في المترجم،
الطبقات الخمس، المساعِد المشترك lowerMapComprehensionIterable، وإغلاق الإخراج النصّيّ؛
مع مخطّط mermaid لتدفّق تهيئة الخريطة + تحديث جدول عقد AST (valueVariable) والاختبار.
+ توسيع مصادر sync/sources.yaml (المفسّر، تكرار الخريطة، الطبع الموسوم).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@SalehKadah SalehKadah merged commit 5a181a8 into main Jul 3, 2026
2 checks passed
@SalehKadah SalehKadah deleted the docs/comprehensions-internals branch July 3, 2026 18:30
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