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

نظرة عامّة على الطبقات

ماذا ستتعلّم: الطبقات الكبرى للغة ص ومسؤوليّة كلٍّ منها والحدود بينها.

المكوّنات

المكوّنالمجلدالدور
النواة المشتركةshared/معجمي، نحوي، AST، نظام الأنواع Value، نظام الأخطاء
المفسّرinterpreter/مفسّر شجريّ؛ InterpreterCore يدير المتغيّرات والدوال والنطاقات والتقييم
المترجمcompiler/AST → SIR → LLVM IR → ملفّ تنفيذيّ (SIR يدعم تعليمات ملكية)
الآلة الافتراضيةvm/بايت كود مرتبط مباشرةً بالمفسّر
المكتبة القياسيةstdlib/وحدات عربية: core/io/math/string/network/graphics
الأدواتtools/lsp · formatter · pkg · repl · sadc CLI · sadinfo
مصدر الحقيقةlanguage-truth/YAML SoT لكل بيانات اللغة + القواعد

القاعدة الطبقيّة (CW-02)

الترتيب صارم: Lexer → Parser → AST → SIR → LLVM. كل طبقة تعتمد فقط على الطبقة التي تحتها. يُمنع الاعتماد العكسيّ أو القفز بين الطبقات. هذا يضمن:

  • عزل الأخطاء: خطأ معجميّ يُصلَح في المعجمي، خطأ ترتيب حقول في SIRBuilder، إلخ (BF-10).
  • قابليّة الاستبدال: يمكن تغيير الواجهة الخلفيّة (مفسّر/مترجم) دون مسّ الأماميّة.

مخطّط الطبقات

flowchart TD
  SRC["مصدر .ص (UTF-8)"] --> LEX["LexerCore<br/>shared/lexer"]
  LEX --> PAR["ParserCore<br/>shared/parser"]
  PAR --> AST["AST<br/>shared/ast"]
  AST --> INT["InterpreterCore / VM<br/>(تنفيذ فوريّ)"]
  AST --> SIR["SIRBuilder<br/>compiler/src/frontend"]
  SIR --> OPT["SIROptimizer"]
  OPT --> LLVM["LLVMCodeGen<br/>compiler/src/backend/llvm"]
  LLVM --> EXE["ملفّ تنفيذيّ أصليّ"]
  SOT["language-truth/ (SoT)"] -. "توليد" .-> LEX
  SOT -. "توليد" .-> PAR
  SOT -. "توليد" .-> ERR["نظام الأخطاء"]

مبدأان عابران للطبقات

  1. مصدر الحقيقة أولًا: أي بيان لغويّ (كلمة/عامل/نوع/خطأ/دالة مضمنة) يبدأ من language-truth/ ثم يُولَّد. راجع الجزء الثالث.
  2. التنفيذ المزدوج: كل ميزة تعمل في المفسّر والمترجم؛ إن عملت في أحدهما فقط فالمشكلة في SIR/LLVM (BF-08).

اقرأ بعده: خطّ الأنابيب.