12
- ﻣﺨﺒﺮ اﻻﻵت اﻟﺤﺎﺳﺒﺔ اﻟﺴﻨﺔ اﻟﺮاﺑﻌﺔ- ﻋﻤﻠﻲ ﻣﺎدة اﻟﻤﺘﺮﺟﻤﺎت إﻋﺪاد اﻟﻤﮭﻨﺪﺳﺔ: ﺟﯿﮭﺎن ﺑﺮﻛﺎت ﻋﺒﺪو اﻟﺠﻠﺴﺔ اﻷوﻟﻰ- اﻟﺠﻠﺴﺔ اﻟ ﺜﺎﻧﯿﺔﺔ ﻓﻲ ﺍﻟﻤﺘﺭﺠﻤﺎﺕ ﻤﺒﺎﺩﻯﺀ ﺃﺴﺎﺴﻴﻨﺎﺘﻪ ﺃﻭ ﻤﺭﺍﺤﻠﻪ ﺍﻟﺴﺕ ﹼﺹ ﺍﻟﻤﺘﺭﺠﻡ ﺒﻤﻜﻭ ﻴﺘﻠﺨ ﺍﻟﺘﺎﻟﻴﺔ: ﺍﻟﻤ ﹼل ﺍﻟﻠﻔﻅﻲ ﺤﻠLexical Analyzer ﺍﻟﻤ ﺤﻠﹼل ﺍﻟﻘﻭﺍﻋﺩﻱSyntax Analyzer ﺤﻠﹼل ﺍﻟﻤﻌﺎﻨﻲSemantic Analyzer ﻤﻭﻟﺩ ﺍﻟﺸﻴﻔﺭﺓ ﺍﻟﻭﺴﻴﻁﺔIntermediate Code Generator ﺤﺴ ﻥ ﺍﻟﺸﻴﻔﺭﺓCode Optimizer ﻭﻟﺩ ﺍﻟﺸﻴﻔﺭﺓCode Generator ﺔ ﻓﻲ ﻜل ﻤﺭﺤﻠﺔ ﻤﻥ ﺍﻟﻤﺭﺍﺤل ﺍﻟﺘﺭﻜﻴﺯ ﺴﻴﻜﻭﻥ ﻋﻠﻰ ﺍﻟﻨﻘﺎﻁ ﺍﻷﺴﺎﺴﻴ ﺤﻴﺙ ﺃﻥ. ﻟﻤﺎﺫﺍ ﻨﺤﺘﺎﺝ ﺍﻟﻤﺘﺭﺠﻡWe Need Compilers Why Do ﺇﻥ ﺍﻹﺠﺎﺒﺔ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﺴﺅﺍل ﻭﺍﻀﺤﺔ ﺒﺎﻟﻨﺴﺒﺔ ﻷﻱ ﺸﺨﺹ ﻗﺎﻡ ﺒﺎﻟﺒﺭﻤﺠﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻟﻐﺔ ﺍﻵﻟﺔmachine language ، ﻓﻔﻲ ﻟﻐﺔ ﺍﻵﻟﺔ ﻨﻜﻭﻥ ﻋﻠﻰ ﺘﻤﺎﺱ ﻤﺒﺎﺸﺭ ﻤﻊ ﺍﻟﺤﺎﺴﺏ ﺒﻤﺴﺠﻼﺘﻪ ﻭ ﻤﻌﺎﻤﻼﺘﻪ ﺍﻟﻤﺭﺘﺒﻁﺔ ﺒﺸﻜل ﻭﺜﻴﻕ ﺒﺎﻵﻟﺔ ﻨﻔﺴﻬﺎ، ﻭ ﺒﻤﺎ ﺃﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻟﻴﺱ ﺍﻟﻭﺍﺤﺩﺍﺕ ﻭ ﺍﻷﺼﻔﺎﺭ ﺇﻻ ﺘﺴﻠﺴل ﻤﻥ، ﻤﺤﺎﻭﻟﺔ ﺒﺭﻤﺠﺔ ﺨﻭﺍﺭﺯﻤﻴﺔ ﻤﻌﻘﺩﺓ ﻓﺈﻥ ﻨﻭﻋﺎ ﻤﺎ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻟﻐﺔ ﺍﻵﻟﺔ ﻴﻌﺘﺒﺭ ﺃﻤﺭﺍ ﻤﻌﻘﺩﺍ ﻭ ﻤﺭﻫﻘﺎ ﻭ ﻤﻔﺘﻭﺤﺎ ﻋﻠﻰ ﺍﻤﻜﺎﻨﻴﺔ ﻜﺒﻴﺭﺓ ﻟﻸﺨﻁﺎﺀ. ﻨﻅﺭﺍﹰ ﻟﺼﻌﻭﺒﺔ ﺍﻟﺒﺭﻤﺠﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻟﻐﺔ ﺍﻵﻟﺔ ﻓﻘﺩ ﺘﻡ ﺍﻟﺘﻔﻜ ﻴﺭ ﺒﺨﻠﻕ ﺒﻴﺌﺔ ﺒﺭﻤﺠﻴﺔ ﺃﻋﻠﻰ ﻤﺴﺘﻭﻯ، ﻤﻜﹼﻥ ﺍﻟﻤﺴ ﺘﺨﺩﻡ ﻤﻥ ﻜﺘﺎﺒﺔ ﻨﺹ ﺒﺭﻤﺠﻲ ﻴﻌﺒﺭ ﻋﻥ ﺘﺴﻠﺴل ﺃﻓﻜﺎﺭﻩ ﻟﺤل ﺍﻟﻤﺸﻜﻠﺔ ﺒﺩﻻﹼ ﻤﻥ ﺍﻟﺘﻔﻜﻴﺭ ﺒﻁﺭﻴﻘﺔ ﺍﻵﻟﺔ، ﻭ ﻗﺩ ﻜﺎﻥ ﻫﺫﺍ ﻫﻭ ﺍﻟﻤﺩﺨل ﺇﻟﻰ ﻟﻐﺎﺕ ﺍﻟﺘﺠﻤﻴﻊ ﺍﻟﺭﻤﺯﻴﺔ ﻭ ﻤﻨﻬﺎ ﺇﻟﻰ ﺍﻟﹼﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ. ﺇﻥ ﺍﻟﻤﺘﺭﺠﻡ ﻫﻭ ﺒﺭﻨﺎﻤﺞ ﻜﺒﻴﺭ ﻭ ﻤﻌﻘﹼﺩ ﺘﺤﺘﻭﻱ ﺍﻟﻤﺘﺭﺠﻤﺎﺕ ﻏﺎﻟﺒﺎﹰ ﻋﻠﻰ ﻤﺌﺎﺕ ﺍﻵﻻﻑ ﺇﻥ ﻟﻡ ﻴﻜﻥ ﺍ ﻟﻤﻼﻴﻴﻥ ﻤﻥ ﺃﺴﻁﺭ ﺍﻟﺸﻴﻔﺭﺓ، ﻭ ﺘﻤﺘﻠﻙ ﺃﺠﺯﺍﺅﻫﺎ ﺍﻟﻌﺩﻴﺩﺓ ﻋﻤﻼﹰ ﻤﺸﺘﺭﻜﺎﹰ

compiler 01

Embed Size (px)

DESCRIPTION

introduction to compiler

Citation preview

-

مخبر االآلت الحاسبة

المترجماتمادةعملي- السنة الرابعة

جیھان بركات عبدو: إعداد المھندسة

ثانیةالجلسة ال-الجلسة األولى

مبادىء أساسية في المترجمات

:التالية يتلخّص المترجم بمكوناته أو مراحله الست

حلّل اللفظي المLexical Analyzer

حلّل القواعدي المSyntax Analyzer

حلّل المعانيم Semantic Analyzer

مولد الشيفرة الوسيطةIntermediate Code Generator

من الشيفرةحس Code Optimizer

ولد الشيفرة مCode Generator

.حيث أن التركيز سيكون على النقاط األساسية في كل مرحلة من المراحل

We Need Compilers Why Doلماذا نحتاج المترجم

، machine languageإن اإلجابة على هذا السؤال واضحة بالنسبة ألي شخص قام بالبرمجة باستخدام لغة اآللة

و بما ، المرتبطة بشكل وثيق باآللة نفسهاففي لغة اآللة نكون على تماس مباشر مع الحاسب بمسجالته و معامالته

فإن محاولة برمجة خوارزمية معقدة ، إال تسلسل من الواحدات و األصفار أن البرنامج المكتوب بلغة اآللة ليس

.على امكانية كبيرة لألخطاء نوعا ما باستخدام لغة اآللة يعتبر أمرا معقدا و مرهقا و مفتوحاً

تخدم من مكّن المستُ، ير بخلق بيئة برمجية أعلى مستوىنظراً لصعوبة البرمجة باستخدام لغة اآللة فقد تم التفكو

و قد كان هذا هو المدخل ، كتابة نص برمجي يعبر عن تسلسل أفكاره لحل المشكلة بدالّ من التفكير بطريقة اآللة

تحتوي و المترجم هو برنامج كبير و معقّد إن.إلى لغات التجميع الرمزية و منها إلى الّلغات عالية المستوى

و تمتلك أجزاؤها العديدة عمالً مشتركاً ، لماليين من أسطر الشيفرةالمترجمات غالباً على مئات اآلالف إن لم يكن ا

-

و لذلك فإن . حيث يكون للقرارات التصميمية المتعلّقة بجزء ما تأثيرات متشعبة متعلقة باألجزاء األخرى. معقّداً

وذج مصغّر يحتوي المترجم الجيد على نم.عملية تصميم و بناء مترجم هي تمرين أساسي في هندسة البرمجيات

حيث يحتوي على تطبيق عملي للخوارزميات الكبيرة و التي تتطلب حجز عدد كبير . لكل ما يشمله علم الحاسب

اختيار (و البرمجة الديناميكية ، و نظرية البيانات، )جدولة القوائم(و تقنيات البحث التجريبي ، من السجالت

تحليل تدفق (و خوارزميات الفاصلة الثابتة ، و التحليلو األوتومات المنتهي و أوتومات المسح ، )التعليمة

.يقوم المترجم بالتعامل مع مشكالت مثل الحجز الديناميكي و التزامن و التسمية و إدارة هيكلية الذاكرة). البيانات

خبرة عملية في هندسة البرمجيات يصعب الحصول عليها من أنظمة أصغر و يوفر العمل في تصميم المترجم و

.تعقيداً أقل

TranslatorsandCompilersالمترجمات و برامج الترجمة

برنامج المكتوب بإحدى لغات البرمجة و تولد برنامج الدخلهي برامج تستقبل ) : translatorsبرامج الترجمة (

).لغة الهدف(لغة برمجة أخرى أو مايسمى بالمكتوب الخرج

Pascal(ى مثل فإذا كانت لغة المصدر هي لغة عالية المستو ,c++ ,Java,… ( ، و لغة الهدف هي لغة متدنية

الذي فإننا ندعو البرنامج ، Machine languageأو لغة اآللة Assembly languageالمستوى كلغة التجميع

.Compilerاً من برنامج مكتوب بلغة المصدر بتوليد برنامج مكتوب بلغة الهدف بالمترجم قانطاليقوم

:ذ البرنامج المكتوب بلغة عالية المستوى يتم على مرحلتين إن تنفي

.ترجمة برنامج المصدر إلى برنامج مكتوب بلغة الهدف)١

.تحميل البرنامج الهدف إلى الذاكرة و تنفيذه)٢

-

الترجمة و التنفيذ) ١- ٢(الشكل

و تفاصيله المتشعبة فإن المترجمات كانت تصنف سابقاً من البـرامج شـبه compilerنظراً لتعقيد المترجم

تى تمكّنـوا حمبرمج عملوا بجد و بجهد بالغين ١٨احتاج إلى Fortranفمثال أول مترجم للغة ، مستحيلة الكتابة

.تحقيقه نم

و ، طور األدوات المستخدمة في بناء المتـرجم أما اآلن فإن المترجم يمكن بناؤه بجهد أقل و بفاعلية أكبر نظراً لت

التـي ، تيـة اآلفإن خالصة العمل في هذا المجال للسنوات العشرين األخيرة قادت إلى المالحظات على أي حال

:و هي ، يجب أخذها بعين اإلعتبار عند الشروع ببناء مترجم

.فهم كيفية تنظيم و تمثيل عمليات الترجمة)١

.ول لمعالجة المهام التي ستطرأ خالل الترجمةالبحث عن تقنيات و حل)٢

.تطوير أدوات برمجية تسهل من تحقيق المترجم و مكوناته)٣

The Structure Of The Compilerبنية المترجم

هذه العملية هي على درجة ، إن المترجم يستقبل برنامج المصدر كدخل و بناءاً عليه يولّد سلسلة من تعليمات اآللة

األسـاس و هـذا و على، حيث أنه من غير المقبول منطقياً النظر إلى عملية الترجمة كخطوة واحدة من التعقيد ب

أو (تدعى كل منها مرحلـة sub processesعملية الترجمة إلى معالجات فرعية بنظرة متمعنة فإنه يمكن تقسيم

.Phase) طور

-

يز بشكل ما لبرنـامج الـدخل و تعطـي علـى كل مرحلة من مراحل الترجمة تتلقى مدخال واحداً يعبر عن ترم

:و فيما يلي تبيان ألهم المرحل التي تشكل عملية الترجمة .مخرجها الوحيد ترميزاّ آخر

:حلة التحليل اللفظيمر

Lexical Units or(في هذه المرحلة يتم فصل محارف لغة المصدر إلى مجموعات تسمى وحـدات لفظيـة

Tokens (كونو التي يمكن أن ت ) كلمات مفتاحيةKey words ، المتحوالتIdentifiers ،معامالت المقارنة ،

إذاً فإن خرج مرحلة التحليل اللفظي هو عبارة عن وحدات لفظيـة ..). ،األقواس و الفواصل، التنصيص عالمات

tokens و التي يتم تمريرها كدخل إلى المرحلة التالية.

مرحلة التحليل القواعدي:

فعلى سـبيل المثـال فـإن ، ) تركيبية(في بنى قواعدية tokensهذه المرحلة يتم تجميع الوحدات اللفظية في

:تيةالوحدات اللفظية الثالث اآل

A + B

أن يـتم التعابير من هـذا الشـكل يمكـن و ، Expressionتعبير يمكن أن يتم تجميعها في بنية قواعدية نسميها

..و هكذا ، Statementعبارة تجميعها في بنية أشمل نسميها

أما العقد ، tokensغالباً يتم التعبير عن البنية القواعدية المهيكلة كشجرة بحيث أن أوراقها تمثّل الوحدات اللفظية

.ل معاً بنية ماالداخلية فتمثّل سلسلة من الوحدات اللفظية التي تشكّ

:المعنويالتحليل مرحلة

فهي تقوم بالتحقق من أن كل تعبير له صيغة ، باختصار فإن هذه المرحلة تعني الربط بين التعريف و االستخدام

.صحيحة معنوياً و تقوم بعدها بانتاج تمثيل على الخرج مناسب لتوليد برنامج بلغة اآللة

-

مراحل المترجم) ٢- ٢(الشكل

:)الوسيطة(مرحلة توليد الشيفرة المرحلية

تستخدم البنية الناتجة عن المحلل القواعدي لتخلق سلسلة من التعليمات البسيطة التي قد يكون لها معامل واحد

الرئيس بين تعليمات الشيفرة المرحلية و بين تعليمات لغة التجميع هو اإلختالف ، او اكثر حسب صيغة التعليمات

.أنّنا في تعليمات الشيقرة المرحلية ال نحتاج إلى التصريح عن المسجالت عند كل استخدام

:مرحلة تحسين الشيفرة

ذه بشكل أسرع و تم إيجاد هذه المرحلة من أجل تطوير الشيفرة الوسيطة بحيث أن البرنامج الهدف سيتم تنفي

.سيحتاج إلى مساحة ذاكرة أقل

-

لكنّه بشكل ، تقوم بنفس العمل الذي كانت تؤديه الشيفرة السابقة خرج هذه المرحلة هو شيفرة وسيطة أخرىفإذاً

.او بآخر يحقق زيادة للسرعة و تقليل للمساحة المقتطعة من الذاكرة

:مرحلة توليد الشيفرة

ناج الشيفرة الهدف و التي من خاللها يتم تحديد الشيفرة التي تنجز عمليات التعامل مع في هذه المرحلة يتم ات

.كما تحدد المسجالت التي ستجري عليها العمليات و تخزن فيها النواتج، المعطيات

:السابق وجود بعض األدوات و فيما يلي تبيان لدورها )٢- ٢(الشكل نالحظ في

ة عن كل منها يحتفظ باأل: جدول اإلدارةل المعلومات الهاممثل ، سماء المستخدمة من قبل البرنامج و يسج

)...,integer, float(أنماط

و عندها يتوجب عليه ، دما يحدث طفحان في برنامج المصدريتم استدعاء معالج األخطاء عن: التحكم بالخطأ

) ( خطأ(برنامج المصدر حتى لو حدث طفحانأحياناً يفضل أن يتم السماح بإكمال معالجة ، أن ينبه المبرمج

.حتّى يتم كشف األخطاء كلّها في مرحلة و احدة) على األقل في مرحلة التحليل القواعدي

Lexical Analyzer اللفظي المحلل -

.Compilerبين برنامج المصدر و المترجم Interfaceإن المحلل اللفظي هو الواجهة

لفظيـة الوحداتالبرامج المصدر رمزاً تلو اآلخر محوالً برنامج المصدر إلى سلسلة من قرأ المحلّل اللفظيي

Tokens.

:تمثّل الوحدة اللفظية تسلسالً من الرموز التي يمكن التعامل معها ككيان منطقي مفرد فمثالً

، الفواصـل ، ت التنصـيص عالمـا ، المعامالت ، العمليات ، الثوابت ، الكلمات المحجوزة ، المتحوالت

.Tokensهي نماذج عن الوحدات اللفظية ، األقواس

:بناءاّ ألسس أهمها يتم تحديد الوحدات اللفظية

.اللّغة المطلوب الوصول إليها)١

.التقسيم الذي يضعه المصمم)٢

-

ة لكن و بشكلٍ عام فإنـ : الوحدة اللفظي ن معالجتهـا و هي سلسلة جزئية من برنامج المصدر و التي يمك

.التعامل معها كوحدة مفردة

:و هنالك نوعان للوحدات اللفظية

" .;"أو الفاصلة المنقوطة " إذا: "مثل ، سالسل نصية محددة )١

.Labelsالّالفتات، الثوابت ، المتحوالت : مثل ، صفوف من السالسل النصية )٢

:اللفظية كثنائية مؤلّفة من قسمينو للتعامل مع كال النوعين فإنه يتم اعتبار الوحدة

نمط الوحدة اللفظية )١

قيمة الوحدة اللفظية)٢

، ) no value,’;‘(سيتم التعامل معها كثنائية " ) ;"و لتكن مثالً (و هكذا فإن الوحدة اللفظية من النوع األول

identifier(مثالً فسيتم تمثيله كثنائية MAXأما المتحول ,’MAX’.(

فالمحلّل القواعدي يطلب من المحلّل ، يعمل المحلّل اللفظي إما تحت سيطرة المحلّل القواعدي أو بالتنسيق معه

ة التالية ) عند الحاجة(اللفظير له الوحدة اللفظيأن يمرnext token ، بدوره شـيفرة فيعيد المحلّل اللفظي

و في حالة كـون الوحـدة اللفظيـة عبـارة عـن متحـول ، ديللوحدة اللفظية الموجودة إلى المحلّل القواع

identifier القيمة ة أخرى ذات قيمة فإنأو أي وحدة لفظيtoken value يتم تمريرها إلى المحلّل القواعدي.

تـتم token valuesإن الطريقة التي يستخدمها المحلّل اللفظي في الحصول على قيم الوحـدات اللفظيـة

Symbolفي جدول الرموز actual valuesبالقيم الفعلية الذي يحتفظ Book keepingجراء إباستدعاء

Table ًهذا إذا لم تكن القيم موجودة أساسا.

ة إلى المحلّل القواعديبتمرير الثنائي ـة ، يقوم المحلّل اللفظيل هو نمط الوحدة اللفظيالمسقط األو بحيث أن ،

.ؤشّر إلى مكان محجوز في جدول الرموز لقيمة الرمز المحددأما المسقط الثاني فهو م

-

:إيجاد الوحدات اللّفظية

إليجاد الوحدات اللّفظية التالية يقوم المحلّل اللفظي بفحص المحارف المتعاقبة في برنامج المصدر بدءاً مـن

يحتاج إلى البحث في أكثر مـن و على هذا فإن المحلّل اللفظي، أول رمز غير مجمع في وحدة لفظية سابقة

Spaceعادةً يتم اإلصطالح على أن الفـراغ ، محرف يلي المحرف األول لكي يحدد الوحدة اللفظية التالية

.يمثّل الفاصل بين الوحدات اللفظية

-المحلّل القواعديAnalyzerSyntax

:المحلّل القواعدي له وظيفتان

تقع ضـمن ) الذي هو خرج المحلّل اللفظي(فظية التي تظهر على دخله التحقّق من أن الوحدات الل)١

.Source Languageالصيغ المحددة و المسموح بها في لغة المصدر

.تفرض أو تحدد شجرة بنيوية قواعدية و التي ستستخدم في األطوار الالحقة للمترجم)٢

وفقـاّ (بعد مرحلة التحليل القواعـدي فإنّه ، A + / B :إذا كان البرنامج يحوي التعبير PL/Iفمثالً في لغة

إلـى في التعبير السابق فإن المحلّل القواعدي سيشـير " /"فإنّه عندما عند الوصول إلى الرمز ) لقواعد اللّغة

وجود خطأ قواعدي ألن الصيغة المكتوبة ال تطابق الشّكل القواعدي المحدد للّغة و الذي ال يسـمح بوجـود

.متتاليتين عمليتين

فإن الموضوع اآلخر الذي يعالجه المحلّل القواعدي هو أن يوضح البنية الهيكليـة ، عدا عن كشف األخطاء

لسلسلة الوحدات اللفظية الواردة عن طريق تحديد أو تعريف األجزاء من تسلسل الوحدات اللفظية ) الهرمية(

التعبيرفمثالً .و التي يجب تجميعها معاA / B * C ر على وجهينيمكن أن يفس:

-

) .FORTRANكما في لغة (Cو ضرب الناتج بـ Bعلى Aتقسيم )١

)أ(

) .APLكما في لغة (على ناتج الضرب Aو تقسيم Cبـ Bضرب )٢

)ب(

شجرة التحليل )٣- ٢(الشكل

الشّجرة القواعدية التي يتم تعريفها و قواعد بمعنى أن المعيار هو ، طبعاً كال التفسيرين يمكن أن يكون صحيحاً

لتعريف القواعد نستخدم مايسمى بالقواعد الخالية من السياق .و التي تحدد بالتالي الصيغة الصحيحة، األولويات

Context Free Grammar .

-

القواعد الخالية من السياق-

علماً أن الجملـة ، كلمات مستقلّة أو عبارات مستقلّةهي مجموعة من القواعد تستخدم من أجل تقسيم جملة ما إلى

التي سنرى أنواعها عند استعراض مكونات القواعد الخاليـة Symbolsمجموعة من الرموز يمكن تقسيمها إلى

طريقة ذات شكل تعاودي لبنـاء لغـة بكالم آخر يمكن التعبير عن القواعد الخالية من السياق بأنّهاو .من السياق

.التي لها شكل معين في التعريفة من خالل بعض القواعد البرمج

:القواعد الخاليةمكونات

.Terminal Symbolsمجموعة محددة من الرموز النهائية )١

.Non Terminal Symbolsمجموعة محددة من الرموز غير النهائية )٢

:تيالتي لها الشكل اآل، Productionsمجموعة من قوانين االشتقاق )٣

AS

:حيث

S ).Left-hand Side(يمثّل الطرف األيسر من القاعدة ، رمز غير نهائي:

A :ةة أو سلسلة فارغة، عبارة عن سلسلة من الرموز النهائيمن من و تمثّل الطرف األي، غير النهائي

.)Right-hand Side(القاعدة

.و هو رمز غير نهائي Start Symbolرمز البدء )٤

Symbol Table الرموزجدول -

حيـث أن هـذه ، Source Programيحتاج المترجم إلى معلومات عن األسماء التي تظهر في برنامج المصدر

.Symbol Tableية معطيات تسمى جدول الرموز في بن) تخزينها(المعلومات يتم إدخالها

:أتيت التي يتم جمعها عن االسم ما يتتضمن المعلوما

.سلسلة المحارف التي تشكّل االسم)١

..).،أو سلسلة نصية، أو صحيح ، عدد حقيقي(نمط االسم )٢

-

.صيغة االسم)٣

.موقع االسم في الذاكرة)٤

.مواصفات أخرى تختلف من لغة إلى أخرى)٥

و في كل مرة يتم فيها إدخال اسـم ).معلومات،اسم(ن ثنائية بالشكل سطر في جدول الرموز هو عبارة عإن كل

فإذا كان االسـم ، فإنّه يجب إجراء بحث في جدول الرموز لمعرفة فيما إذا كان االسم المدخل موجود سابقاً أم ال

قة بهذا االسم إلى الجدول خالل فترة التحليلين اللّفظي المعلومات المتعلّ لو يتم إدخا، جديداً يتم إدخاله إلى الجدول

.و القواعدي

فمثالً يتم استخدام هذه ، إن المعلومات المجمعة في جدول الرموز يمكن أن تستخدم خالل مراحل متعددة من العمل

.ام هذا االسمفي مرحلة تحليل المعاني و ذلك للتأكّد من التوافق بين التصريح عن االسم و استخدالمعلومات

Code Generationكما يتم استخدام المعلومات الموجودة في جدول الرموز أيضاً في مرحلة توليـد الشـيفرة

.لمعرفة كمية و نوعية الذاكرة التي يجب أن تخصص لالسم

و ، ت حقل االسم و حقل المعلوما، جدول الرموز هو عبارة عن جدول ذو حقلين بشكل تجريدي يمكن القول بأن

:و منها، هناك مجموعة من األهداف التي نحتاج تحقيقها من خالل جدول الرموز

.تحديد هل إن االسم المعطى موجود في الجدول أم ال)١

.إضافة اسم جديد إلى الجدول)٢

.الوصول إلى المعلومات المتعلّقة باسم ما)٣

.إضافة معلومات جديدة إلى المعلومات المتعلّقة باسم ما)٤

.و مجموعة أسماء من الجدولحذف اسم أ)٥

و ، من أنواع مختلفة Objectsتكون األسماء الموجودة في جدول الرموز تشير إلى أغراض ، عادة في المترجم

:من الممكن أن توجد جداول منفصلة لكل من

..للّغةو أنماط أخرى من األسماء تبعاً ... ، الثوابت ، أسماء االجراءات ، الالفتات ، أسماء المتحوالت

-

وغالبا يكون من المفيد وجود أكثر من جدول واحد للرموز ألن المساحة التخزينية التي سيحتاجها كل اسم يمكـن

.و على أي حال فإن جدول واحد يمكن أن يفي بالغرض، أن تتغير تبعاً لكيفية استخدام االسم

نواع متعددة من أ، اللوائح الخطية : مثلطيات اً على إحدى بنى المعإن تشكيل جدول الرموز ممكن و ذلك اعتماد

السـرعة التـي يمكـن فيهـا إضـافة علماً أن البنى السابقة متمايزة فيما بينها خصوصاً لجهة . البنى الشجرية

:حيث أن ، في الجدول New Entryمدخل جديد ) الوصول إلىأو(

.طبيقاللوائح الخطية بطيئة في الولوج لكنّها سهلة التحقيق و الت)١

.البنية الشجرية تعطي استجابة متوسطة)٢