Lexical Analysis | التحليل المعجمي [2]

ihanan95منذ 7 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

استكمالاً لما بدأناه في المقال السابق ، حيث وضحنا مايجري داخل المترجم ( compiler ) وماهي المراحل التي يمر بها من بداية اخذ الكود بـلغته الاصلية الى ان يصل الى اللغة الهدف وهي لغة الآلة.

وذكرنا ان المترجم ( Compiler ) يمر بمرحلتين اساسيتين وهي مرحلة التحليل  ( Analysis Phase ) و مرحلة التركيب (Synthesis Phase ).

pic1.jpg

 

في هذه المقالة سنتتحدث عن الخطوة الأولى في مرحلة التحليل و هي التحليل المعجمي (Lexical Analaysis).

 

pic2.jpg

 

التحليل المعجمي والمعروف ايضاً بـ Scanner بمعني الماسح ، يقوم بأخذ المُدخل (مجموعة من الحروف والكلمات) حرفاً بحرف ( تسمى هنا بـ lexemes ) وعند الوصول للمسافة فإن الكلمة تُحفظ في جدول الرموز ويسمى نوعها بـ Token.

lexem.gif

*ملاحظة : وقوف المحلل المعجمي أو الماسح عند المسافه ليست ثابته ويمكن تحديد الطريقة التي تريد ان يقف بها المحلل لحفظ الكلمه في جدول الرموز ولكن ذكرناها هنا على سبيل التوضيح وتسهيل الفهم.

 

تنفيذ وبرمجة المحلل المعجمي (scanner):

اذا اردنا برمجة المترجم فستواجهنا العديد من الصعوبات مثل تخزين الكلمات المدخله، تحويل الـ regular expression الى شكل عملي يمكن تنفيذه عن طريق الاكواد وهذا امر صعب ، واخيرا صعوبة المقدرة غلى حفظ وجمع الـكلمات tokens وخصوصا اذا كان عددها كبير، وغيرها الكثير. فلذلك يتم استخدام اداة معينة تقوم بـتسهيل هذه المهمة ، تسمى Lex.

Lex هو برنامج كُتب في عام ١٩٧٥م بواسطة Mike Lesk و Eric Schmidt [١] ، والهدف منه ان يقوم باخذ مُدخل يصف القواعد والتعليمات التي يجب ان يقوم بها المحلل المعجمي ومن خلاله يتم تصدير ملف بنوع لغة سي C language وحين يتم تنفيذه يقوم المحلل المعجمي بعمله عند ادخال اي مُدخل.

 

[1] Lesk, M.E.; Schmidt, E. “Lex – A Lexical Analyzer Generator”. Retrieved August 16, 2010

كلمات دليلية:
1
إعجاب
6597
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !