المعجم هو برنامج يحول سلسلة نصية إلى مجموعة من الرموز المميزة أو الرموز المميزة. يمثل كل رمز مميز جزءا من السلسلة المصدر له قيمة أو نوع معين. تستخدم ليكسرز على نطاق واسع في المجمعين والمترجمين الفوريين والمحللين وغيرهم من الأدوات للعمل مع رمز البرنامج.
في هذا الدليل ، سننظر في كيفية إنشاء ليكسر في بيثون. سنبدأ بمثال بسيط ، ثم زيادة الوظائف تدريجيا ، سنقوم بإنشاء ليكسر كامل. سوف نستخدم التعبيرات العادية لتحديد القواعد المعجمية ومكتبة بيثون 'إعادة' لمعالجتها.
لدينا ليكسر تقسيم سلسلة المصدر إلى الرموز ، والتي هي الأرقام والمشغلين والمتغيرات والكلمات الرئيسية وغيرها من عناصر لغة البرمجة. سنضيف أيضا معالجة التعليقات وتجاهل أحرف المسافات البيضاء.
ألق نظرة على الأقسام التالية لمعرفة كيفية إنشاء ليكسر بيثون باستخدام التعبيرات العادية!
- ما هو ليكسر?
- القسم 1: مقدمة
- الأدوات اللازمة لإنشاء ليكسر
- القسم 2: إنشاء ليكسر في بايثون
- هيكل ليكسر في بايثون
- القسم 3: إنشاء جدول رمزي
- الخطوة 1: تحديد الرموز
- سؤال وجواب
- ما هي لغة البرمجة المستخدمة لإنشاء ليكسر?
- لماذا أحتاج إلى إنشاء ليكسر في بيثون?
- التي تستخدم مكتبات بيثون لإنشاء ليكسر?
- ما هي المكونات التي يجب تنفيذها عند إنشاء ليكسر?
- كيف يمكنني التحقق من وظيفة ليكسر خلق?
- هل من الممكن استخدام ليكسر خلق لتحليل شفرة المصدر لبرنامج بيثون?
ما هو ليكسر?
يعد المعجم (أو المحلل المعجمي) أحد الخطوات الأولى في تطوير مترجم أو مترجم. وتتمثل مهمتها في تقسيم شفرة المصدر إلى معجم ، أي إلى وحدات معجمية منفصلة مثل الكلمات الرئيسية أو المعرفات أو الأرقام أو علامات الترقيم.
يتم التحليل المعجمي قبل التحليل النحوي ، الذي يبني شجرة نحوية تمثل بنية البرنامج.
غالبا ما يستخدم ليكسر في معالجة لغات البرمجة ، حيث غالبا ما يكون من الضروري إجراء العديد من التلاعبات باستخدام شفرة المصدر. تتضمن أمثلة هذه العمليات التنسيق التلقائي للرمز أو تمييز بناء الجملة في برامج تحرير النصوص أو إجراء تحليل رمز ثابت.
لإنشاء ليكسر في لغة البرمجة بيثون ، يمكنك استخدام التعبيرات العادية أو استخدام المكتبات المتخصصة مثل رقائق (بيثون ليكس-ياك). رقائق يوفر أدوات مريحة لتحديد قواعد تحليل وتلقائيا يولد التعليمات البرمجية التي تنفذ التحليل المعجمي.
كما يعمل ليكسر ، فإنه يعالج شفرة المصدر من قبل حرف واحد أو مجموعة واحدة من الأحرف ، ومقارنتها مع قوالب معينة ، ويخلق الرموز المقابلة. ثم يتم استخدام الرموز المميزة في خطوات المعالجة اللاحقة مثل التحليل أو تنفيذ التعليمات البرمجية.
القسم 1: مقدمة
تطوير ليكسر هو خطوة هامة في خلق المجمعين والمترجمين الفوريين. المعجم مسؤول عن تقسيم الكود المصدري إلى عناصر معجمية مثل الكلمات الرئيسية والمعرفات والمشغلين والثوابت.
في هذا الدليل ، سننظر في عملية إنشاء ليكسر في لغة برمجة بايثون. سنبدأ بتحليل شفرة المصدر ، ثم إنشاء بنية بيانات لتمثيل العناصر المعجمية. ثم سنصف خوارزمية تحليل معجمية تتطابق مع العناصر المعجمية مع الرموز المميزة المقابلة.
لإنشاء ليكسر في بيثون ، سوف نستخدم التعبيرات العادية. توفر التعبيرات العادية أدوات قوية للبحث عن أنماط النص ومطابقتها. سوف نستخدم وحدة إعادة بنيت في بيثون للعمل مع التعبيرات العادية.
هل أنت مستعد للبدء? دعنا ننتقل إلى القسم التالي ، حيث سنلقي نظرة على بعض الأمثلة لاستخدام التعبيرات العادية في بايثون للبحث عن النص ومطابقته. ثم ننتقل إلى إنشاء بنية بيانات لتمثيل العناصر المعجمية وتنفيذ خوارزمية التحليل المعجمي.
الأدوات اللازمة لإنشاء ليكسر
قبل البدء في إنشاء ليكسر في بيثون ، سوف تحتاج إلى الأدوات التالية:
- بايثون: تأكد من تثبيت بايثون على جهاز الكمبيوتر الخاص بك. يمكنك تنزيله وتثبيته من موقع بايثون الرسمي.
- محرر نصوص: يمكنك استخدام أي محرر نصوص لكتابة رمز ليكسر. فمن المستحسن استخدام المحررين المصممة خصيصا لتطوير بيثون ، مثل بيشارم أو فس التعليمات البرمجية.
- مكتبة رقائق: رقائق (بيثون ليكس-ياك) هي مجموعة من الأدوات لكتابة المعجمية والمحللين في بيثون. فإنه يجعل من السهل تحديد الرموز والقواعد النحوية ل ليكسر الخاص بك.
يتم تثبيت رقائق باستخدام مدير حزمة نقطة. افتح محطة طرفية وقم بتشغيل الأمر التالي:
| بيب تثبيت رقائق |
بعد تثبيت هذه الأدوات ، سوف تكون على استعداد للبدء في إنشاء ليكسر الخاصة بك في بيثون.
القسم 2: إنشاء ليكسر في بايثون
في هذا القسم ، سنلقي نظرة على خطوات إنشاء ليكسر في بايثون. المعجم هو أداة تقسم نص الإدخال إلى رموز أو رموز مميزة. الرمز المميز هو وحدة صغيرة من اللغة ، مثل عامل التشغيل أو المعرف أو الرقم.
خطوات إنشاء ليكسر في بايثون:
- (حاويات البيانات).
- تحديد فئة ليكسر ، والتي سوف تحتوي على منطق التحليل المعجمي.
- يمكن تقسيم النص إلى رموز باستخدام التعبيرات العادية.
- لنص الإدخال المحدد. يمكن تخزين الرموز المميزة المستلمة في حاوية بيانات مثل قائمة أو قائمة انتظار.
- استمر في معالجة الرموز المميزة المستلمة وفقا لنوعها أو قيمتها. يمكنك إجراء عمليات مختلفة ، مثل فحص بناء الجملة أو حساب القيم.
يمكن أن يكون إنشاء ليكسر في بايثون خطوة تهيئة لإجراء تحليل أو تفسير لاحق للغة. Лексический анализ позволяет разбить сложный входной текст на более простые элементы, которые затем могут быть обработаны более подробно.
lexer = Lexer("2 + 3 * 4")
- طباعة (رمز)
هيكل ليكسر في بايثون
بيثون ليكسر هو مكون يحول نص الإدخال إلى سلسلة من الرموز. يلعب دورا مهما في عملية تحليل النص ومعالجته. في هذا القسم ، سنلقي نظرة على الهيكل الأساسي لبيثون ليكسر:
استيراد الوحدات اللازمة:
الخطوة الأولى في إنشاء ليكسر بيثون هي استيراد الوحدات الضرورية. اعتمادا على التنفيذ المحدد للكسر ، قد يكون من الضروري استيراد وحدات مثل
إعادة
- للعمل مع التعبيرات العادية أو الوحدات النمطية الأخرى لمعالجة النصوص.
- تعريف الرموز:
- الخطوة التالية هي تحديد الرموز المميزة-العناصر التي سيتم تقسيم نص الإدخال إليها. يمكن أن تكون الرموز المميزة من أنواع مختلفة ، على سبيل المثال ، الأرقام والسلاسل والمشغلين والمعرفات وما إلى ذلك. يجب وصف جميع الرموز المميزة في شكل تعبيرات عادية أو طرق تعريف أخرى.
- تقسيم النص إلى رموز:
- بعد تحديد الرموز ، تحتاج إلى تكوين ليكسر لتقسيم نص الإدخال إلى سلسلة من الرموز. للقيام بذلك ، يمكنك استخدام حلقة من شأنها أن تعمل من خلال النص والبحث عن مباريات بين الرموز والنص الإدخال.
تصنيف الرموز:
عندما يجد ليكسر تطابقا بين الرمز المميز ونص الإدخال ، يجب أن يصنف الرمز المميز الذي تم العثور عليه وفقا لنوعه. يمكن القيام بذلك عن طريق تعيين قيمة معينة أو إنشاء كائن يمثل الرمز المميز الذي تم العثور عليه.
إرجاع سلسلة من الرموز:
بمجرد تصنيف جميع الرموز المميزة في النص ، يجب على المعجم إعادتها كتسلسل أو قائمة. هذا يسمح لك بنقل نتيجة عمل ليكسر لمزيد من التحليل أو معالجة النصوص.
يمثل الهيكل أعلاه نهجا عاما لإنشاء ليكسر في بايثون. قد يختلف التنفيذ النهائي اعتمادا على المتطلبات والميزات المحددة للمشروع.
القسم 3: إنشاء جدول رمزي
- في هذا القسم ، سنلقي نظرة على عملية إنشاء جدول رمزي لبيثون ليكسر.
- جدول الرمز المميز عبارة عن بنية بيانات تحتوي على معلومات حول كل رمز مميز تم اكتشافه في نص الإدخال. يمكن أن يكون لكل رمز مميز نوعه وقيمته وموضعه في النص.
- لإنشاء جدول رمزي ، سنعلن أولا عن قائمة فارغة تخزن جميع الرموز المميزة المكتشفة. ثم سنستعرض كل رمز مميز في نص الإدخال ونضيف رمزا مميزا جديدا إلى القائمة عند التعرف على كل رمز مميز.
- يمكن إجراء عملية إنشاء جدول رمزي على النحو التالي:
- تهيئة قائمة فارغة لتخزين الرموز.
- نذهب من خلال كل رمز في نص الإدخال.
لكل رمز مميز ، نتعرف على نوعه وقيمته.
إنشاء رمز مميز جديد بالنوع والقيمة والموضع المعترف بهما في النص.
إضافة رمز مميز جديد إلى قائمة الرموز المميزة.
بعد الانتهاء من جميع الخطوات ، سيحتوي جدول الرمز المميز على معلومات حول كل رمز مميز تم اكتشافه في نص الإدخال. يمكننا استخدام هذا الجدول لمزيد من تحليل النص ومعالجته.
في القسم التالي ، سنلقي نظرة على مثال لإنشاء جدول رمزي ليكسر بيثون بسيط.
الخطوة 1: تحديد الرموز
قبل البدء في إنشاء ليكسر في بيثون ، تحتاج إلى تحديد الرموز التي سوف نتعرف عليها. الرموز المميزة هي عناصر من لغة برمجة أو تنسيق بيانات آخر ، مثل الأرقام والسلاسل والمشغلين والأحرف الخاصة وما إلى ذلك.
لكل رمز مميز ، يجب علينا تحديد نوعه ، والذي سيتم استخدامه لاحقا في تطوير ليكسر. يمكن أن تتضمن الأنواع المحتملة من الرموز المميزة الأرقام والسلاسل والكلمات الرئيسية والمعرفات والمشغلين وغيرها.
على سبيل المثال ، إذا كنا نكتب ليكسر للغة برمجة بسيطة ، ثم أنواع الرموز يمكن أن يكون على النحو التالي:
الأرقام: الأعداد الصحيحة ، الأرقام العشرية ، أرقام الفاصلة العائمة ، إلخ.
سلاسل: تسلسل الأحرف المحاطة بعلامات اقتباس أو فاصلات عليا.
الكلمات الرئيسية: الكلمات المحجوزة التي لها معنى خاص في لغة البرمجة.
المعرفات: أسماء المتغيرات أو الوظائف أو العناصر الأخرى للغة البرمجة.
المشغلون: الرموز المستخدمة لأداء العمليات الحسابية والمنطقية وغيرها.
الأحرف الخاصة: الرموز التي لها معنى خاص في لغة البرمجة ، مثل الأقواس والفواصل والفواصل المنقوطة وما إلى ذلك.