تخطَّ إلى المحتوى

⚙️ شرح المترجمات ونظرية اللغات

فهم التحليل المعجمي (Tokenization)

الدرس 2 من 2· ⏱ 2 دقائق قراءة

التحليل المعجمي هو أوّل مرحلة يمرّ بها الكود داخل المُترجِم، وفهمه يجعل بقيّة المراحل منطقية. تبني هذه الصفحة على ما هو المُترجِم؟.

ما هو التحليل المعجمي؟

التحليل المعجمي (Lexical Analysis)، ويُسمّى أيضًا المسح (Scanning) أو التقطيع (Tokenization)، هو عملية تحويل سلسلة الأحرف الخام في ملفّك المصدري إلى سلسلة من الرموز (Tokens) ذات معنى.

بالنسبة للمُترجِم، الكود في البداية مجرّد نصّ: أحرف متتابعة بلا بنية. مهمّة الماسح (Lexer) أن يجمّع هذه الأحرف في وحدات مفهومة — كلمة مفتاحية، اسم متغيّر، رقم، رمز عملية — تمامًا كما نجمّع الحروف في كلمات قبل فهم الجملة.

المفاهيم الثلاثة: Token و Lexeme و Pattern

  • اللكسيم (Lexeme): سلسلة الأحرف الفعليّة في الكود، مثل count أو 42 أو +.
  • الرمز (Token): التصنيف الذي يُعطى لِلكسيم، مثل «مُعرِّف (Identifier)» أو «رقم (Number)» أو «مُعامِل (Operator)». غالبًا يحمل الرمز قيمته أيضًا.
  • النمط (Pattern): القاعدة التي تحدّد أي اللكسيمات تنتمي إلى أي رمز (مثلًا: «تسلسل من الأرقام» هو نمط الأرقام). تُوصَف الأنماط عادةً بالتعابير المنتظمة (Regular Expressions).

مثال توضيحي

لنأخذ سطرًا بسيطًا:

x = 5 + 3

ينتج الماسح منه سلسلة الرموز التالية:

[Identifier: "x"]  [Operator: "="]  [Number: 5]
[Operator: "+"]    [Number: 3]

لاحظ أنّ الماسح يتجاهل ما لا معنى دلاليًا له، كالمسافات الفارغة والتعليقات؛ لكنّه يكتشف أيضًا الأخطاء المعجمية: رمز غير معروف مثل @ في لغة لا تسمح به يُبلَّغ عنه هنا.

علاقته بالمرحلة التالية

مخرجات الماسح (سلسلة الرموز) هي مدخلات المُحلِّل النحوي (Parser)، الذي يرتّب هذه الرموز في بنية شجرية وفق قواعد اللغة. فصل المرحلتين يبسّط تصميم المُترجِم: الماسح يهتمّ بـ«الكلمات»، والمُحلِّل يهتمّ بـ«القواعد».

الخطوات التالية

بعد فهم كيف تتحوّل الأحرف إلى رموز، ننتقل إلى شجرة الصياغة المجرّدة (AST) وكيف يبنيها المُحلِّل النحوي، ثم أنواع التحليل النحوي (من الأعلى للأسفل ومن الأسفل للأعلى). راجع الصورة الكاملة في ما هو المُترجِم؟.

شرح فهم التحليل المعجمي (Tokenization) — المترجمات ونظرية اللغات بالعربي
فهم التحليل المعجمي (Tokenization)المترجمات ونظرية اللغات بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟