semantic analysis | التحليل الدلالي [4]

ihanan95منذ 7 سنوات

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

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

وصلنا الى آخر خطوة في مرحلة التحليل في المترجم وهي التحليل الدلالي semantic analysis والتي تسمى أيضا بـ Intermidiate code generater وبذلك نكون قد اقتربنا جدا من وصولنا الى الهدف من  المترجم وهو الوصول الى لغة تفهمها الآلة. 

 

pic1.jpg

 

blog 4.png

 

مرحلة التحليل الدلالي semantic analysis تستخدم مخرجات الخطوات السابقة ، وهي tokens من مرحلة التحليل المعجمي و الهيكل الدلالي من مرحلة تحليل بناء الكلمة ، وتكمن أهمية مرحلة التحليل الدلالي في أنها مسؤولة بشكل اساسي على التأكد من خلو الأكواد البرمجية من الأخطاء المتعلقة بالنوع ، مثل اسناد القيم الى المتغيرات و مؤشر – index – المصفوفة array يكون من نوع intt ولا يقبل ان يكون مثلا عدداً عشرياً وهكذا.

 

#التحقق من النوع Type checking:

التحقق من النوع يتطلب أن يكون كل جزء من الكود البرمجي محدد له نوع وهذا يتطلب أن يكون معلوماً للمترجم هذه الأنواع حتى يتم التحقق بشكل صحيح. ومهمة التحقق من النوع Type checking لها امكانية اكتشاف الاخطاء الموجودة في البرنامج المكتوب بلغة المصدر.

وهناك شكلين من أشكال التحقق من النوع في لغات البرمجة :

- Synthesis : وهي أن يكون النوع معرّف مسبقا لكل متغير مثل ;int x وهذا النوع ينطبق على لغة جافا و c  وغيرها.

- Inference : وهي أن يتم معرفة نوع المتغير عن طريق طريقة استخدامه ، مثلا اذا وُجد “x = “hanan فهذا يعني أن المتغير x هو من نوع String. وهذا النوع ينطبق على لغة python.

 

#Intermediate code language:

لماذا نحتاج الى وجود لغة وسيطة (Intermediate code language ) بين لغة المصدر ولغة الهدف في المترجم!؟ من احدى الاسباب أن الاجهزة بشكل عام تحتلف في target languagee فذلك يتطلب ان نكتب لكل جهاز مترجم خاص به من الصفر ، أما وجود Intermediate code languagee فهذا سيحل لنا هذه المشكلة وسنحتاج فقط الى تغيير واعادة كتابة جزء مرحلة التركيب ، أما مرحلة التحليل فتكون ثابتة.

Intermediate code language لها العديد من الأشكال التي تُمثّل بِها ، منها ماهو قريب من لغة المصدر  ومنها قريب للغة الهدف ومنها مايأتي على شكل تصويري بياني ومنها أيضا مايأتي على شكل خطي ( نصّي ) ومن هذه الأنواع :

- (Abstract Syntax Trees (AST وهي نفسها الـ parse tree الموجودة في مرحلة تحليل بناء الكلمة.

- (Directed Acyclic Graphs (DAG هي نفسها (Abstract Syntax Trees (AST لكن بدون تكرار.

 

dag.png

 

 - Three address وهي تحتوي على ثلاثة مُعاملات وعملية واحدة ، و تعد قريبة من لغة الآلة ومن طرق تمثيلها  spim

مثال : 


t1 <- 2

t2 <- y

t3 <- t1 * t2

t4 <- x

t5 <- t4  t1

 

للإستزادة (Compilers Principles Techniques and Tools (2nd Edition .

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

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

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

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