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

الأنظمة المتشابكة

ماذا ستتعلّم: لماذا لا يوجد «تغيير معزول» في لغة ص، وأيّ ملفّات يَمَسّها كل نوع تغيير.

كل ميزة تعبر عدّة أنظمة: مصدر الحقيقة + المُولَّد + المعجمي/النحوي + المفسّر + المترجم + الأخطاء + التوثيق + الاختبارات. تجاهل أحدها يكسر CI أو تجربة المستخدم.

جدول الأثر (File List) حسب التغيير

التغييرالملفّات المتأثّرة عادةً
كلمة مفتاحيّةlanguage-truth/keywords.yamlshared/lexer/generated/keywords_generated.{h,cpp} (مُولَّد) + shared/parser/src/<dir>/ + shared/ast/include/ + interpreter/src/visitors/ + compiler/src/frontend/ (+opcode في sir_types.h) + اختبار
دالة مضمنةlanguage-truth/builtins/<domain>.yaml (+_index.yaml) → مُولَّد builtin_registry_generated.h + interpreter/src/builtins/ + compiler/src/backend/llvm/builders/builtins/ + اختبار
رمز خطأlanguage-truth/errors/<cat>.yaml (مصدر) + shared/errors/include/error_codes.h + مُولَّد + اختبار
توجيه @language-truth/directives.yaml + مُولَّد + parser + AST + visitors + codegen + اختبار
قاعدة نحويّةlanguage-truth/grammar/*.yaml (SoT) + shared/parser/src/ + توثيق مُولَّد docs/parser_rule/_generated/
opcode SIRcompiler/include/frontend/sir_types.h + SIRBuilder + compiler/src/backend/llvm/ + اختبار

مخطّط التشابك (مثال: كلمة مفتاحيّة)

flowchart TD
  Y["keywords.yaml (SoT)"] --> G["gen_keywords.py"]
  G --> KGEN["keywords_generated.{h,cpp}"]
  KGEN --> LEX["Lexer يتعرّف الرمز"]
  LEX --> PAR["Parser يضيف قاعدة"]
  PAR --> AST["عقدة AST"]
  AST --> INT["زائر المفسّر"]
  AST --> CG["codegen المترجم"]
  INT & CG --> T["اختبار .ص (تنفيذ مزدوج)"]

القاعدة الذهبيّة

ابدأ من مصدر الحقيقة، أعد التوليد، اعبر كل الطبقات، وأثبت بـاختبار مزدوج. الكود «المتكامل» يعبرها كلها — وإلا فشل CI أو انكسرت التجربة.


اقرأ بعده: فلسفة مصدر الحقيقة.