الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اتخلص من الغموض Ambiguity في قواعد اللغة التالية ؟؟

بدأه MKSoft في 31 أغسطس 2008 · 17 رد · 3,444 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني ::

اريد منكم ان تساعدوني في مراحل تصميم المترجم التالي , حيث يوجد هناك غمود في القواعد التالية :

upload2world_82e80.jpg

هذا مثال برمجي لمشكلة الغموض ambiguity .

upload2world_99093.jpg

المشكلة في هذا الغموض , هو ان المترجم يكون متحيرا , في في جملة else if الأخيرة باللون الأخضر , هل هي منسوبة لجملة if التي بالون الأحمر

أم لجملة if التي باللون الأزرق.

رسم parse tree يوضح مشكلة الغموض .

upload2world_be529.jpg

upload2world_ec0d6.jpg

لاحظ اننا يمكننا تمثيل الكود السابق بأكثر من طريقة , مما يؤكد مشكلة الغموض .

#2

انا ماليش اى خبرة فى هذه المواضيع بس عندى فكرة

تجبر المستخدم انه يستخدم { } والا يعتبر Syntax Error

او تنهى كل If بــ End If مثل Visual Basic

بس اكيد ده حل بدائى و معاق :wub: :blink:

#3

شكرا اخ عمر على محاولتك , لكن الحل الذي اقترحتة , يحل المشكلة , لكن يزيد من تعقيدات اللغة بالنسبة للمبرمج .

على العموم حياك الله على المحاولة .

#4

هل تستخدم هذه اللغه فى طرق الذكاء الاصطناعى؟

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#5

هناك قاعدة (أو بالأحرى اتفاقية) مستعملة في بناء المترجمات

وهي أنه دائما أول else نجده يرفق بآخر If التقينا به

#6
عماد حمدي احمد كتب:
هل تستخدم هذه اللغه فى طرق الذكاء الاصطناعى؟

هذه الأشكال (parse tree) لها استخدامات كثيرة , في الذكاء الصناعي , وفي تصميم المترجمات ولغات البرمجة .

اقتباس
هناك قاعدة (أو بالأحرى اتفاقية) مستعملة في بناء المترجمات

وهي أنه دائما أول else نجده يرفق بآخر If التقينا به

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

#7
MKSoft كتب:
لقد شهادت معايير كثيرة مشابه لكلامك اخي في كتب المترجمات . اشكرك .

upload2world_99093.jpg

ولكنك لماذا لم تطبقها على لغتك

فكان المفروض ان اخر else تتبع ال if التى قبلها مباشرتا

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#8

أشكرك اخي eramax , لكن حاولت ولم استطع , لانني سأضطر لان اعيد صياعة الكثير من القواعد المرتبطة بهذا الغموض , حيث اني تقدمت خطوات كثيرة في برمجة اللغة , وإعادة هيكلة القواعد تعني إلغاء الكثير من الأكواد البرمجية .

#9

التغيير الذي ستحدثه ليس على الـ Grammair و إنما على المترجم الذي سيقرأ الـ Grammair

ما هي الطريقة(الخوارزمية ) التي تستعملها في المترجم ؟؟

#10
اقتباس
ما هي الطريقة(الخوارزمية ) التي تستعملها في المترجم ؟؟

حقيقة انا لم افهم قصدك ... ارجوا ان توضح اكثر.

شكرا لك على مساعاداتك.

#11

اخى MKSoft اتمنى لك التوفيق فى بناء مترجمك ولكننى كنت اتمنى ان تفصح عن بعض المعلومات عن المترجم الذى تقوم بانشائه هل سيضيف اشياء جديدة هل سيكون مفتوح المصدر لاننى من الحرصين على البدء فى هذا المجال وباذن الله سااخذ هذه السنة كورس بناء المترجمات واتمنى ان تكون لدى خبره سابقه فى هذا المجال

اطيب المنى :)

amdvsintel22.jpg

--i use AMD--

لا اله الا الله محمد رسول الله

أستعن بالله و لا تعجز

تابعنى على تويتر

***

#12
MKSoft كتب:
حقيقة انا لم افهم قصدك ... ارجوا ان توضح اكثر.

شكرا لك على مساعاداتك.

أي طريقة

LR

SLR

LALR

LL

...

..

و غيرها من الطرق

#13
اقتباس
خى MKSoft اتمنى لك التوفيق فى بناء مترجمك ولكننى كنت اتمنى ان تفصح عن بعض المعلومات عن المترجم الذى تقوم بانشائه هل سيضيف اشياء جديدة هل سيكون مفتوح المصدر لاننى من الحرصين على البدء فى هذا المجال وباذن الله سااخذ هذه السنة كورس بناء المترجمات واتمنى ان تكون لدى خبره سابقه فى هذا المجال

اطيب المنى

اهلا بك أخي الكريم /// انا جاهز لأي استفسار ... تحياتي .

اقتباس
أي طريقة

LR

SLR

LALR

LL

...

..

و غيرها من الطرق

السلام عليكم اخي

اهها فهمت قصدك ...

أنا اعلم جيد ان الطرق السابقة و التي تعتمد على مبدأ Stack تحل المشكلة , لكن حقيقة انا لم استخدم ولا طريقة تعتمد على هذه النماذج , وإنما المبدأ الذي استخدمته , يعتمد على :

Top-Down Predictive Parsing أو ما تسمى <Recursive Descent Parsing> ..

طبعا . مبدأ هذه الخوارزمية , لا يعتمد على Stack , و إنما يقوم في كل مرة بإحضار token , ومقارنتها مع Grammer , بإستخدام دالة غالبا يتم إعطاءها اسم match ....

#14

أين المشكل إذا

الطريقة التي تتبعها تجنبك مشاكل كثيـــــــــــــــرة

فقط أرفق أول else بآخر if

#15

صحيح أخي djug , لكن انت هنا سوف تجبر مستخدم اللغة على ان يرفق مع كل جملة if يجب عليه ان يقوم بكتابة جملة الشرط else أيضا , وهذا غير منطقي ...

اقتباس
الطريقة التي تتبعها تجنبك مشاكل كثيـــــــــــــــرة

كيف ذلك أخي :: على حد معلوماتي , ان الطريقة التي استخدمها , هي الطريقة التي تعجز عن اكتشاف الغموض.

على العموم أخي djug , وانت تضع علم الجزائر التي عشت فيها سنوات جميلة من عمري , والتي افتحر بها دائما , كل الشكر لي شعب الجزائر , ولك أخي djug على محاولتك المساعدة ....

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

انتظر منك تعليقات ان احببت .

#16
اقتباس
صحيح أخي djug , لكن انت هنا سوف تجبر مستخدم اللغة على ان يرفق مع كل جملة if يجب عليه ان يقوم بكتابة جملة الشرط else أيضا , وهذا غير منطقي ...

الـ grammair التي أرفقتها لا تبين ذلك

لأنه يمكنه أن يكتب If بدون else

سؤال :

ما ذا تعني بـ E

أي ما هي الاحتمالات المتفرعة منها

اقتباس
كيف ذلك أخي :: على حد معلوماتي , ان الطريقة التي استخدمها , هي الطريقة التي تعجز عن اكتشاف الغموض.

كنت أقصد أن برمجتها أسهل من غيرها

أعطينا تفاصيل أكثر لنفهم الوضع أكثر

ملاحظة:

أظن أن الطريقة التي تبرمجها ليس لتنفيذ الأمر و إنما التأكد من صحة الكتابة فقط

أي للتاكد من خلو الكتابة من أخطاء الـSyntax

أي تحليل الـ Syntax و التفيذ أمران مختلفان

#17
اقتباس
صحيح أخي djug , لكن انت هنا سوف تجبر مستخدم اللغة على ان يرفق مع كل جملة if يجب عليه ان يقوم بكتابة جملة الشرط else أيضا , وهذا غير منطقي ...

الـ grammair التي أرفقتها لا تبين ذلك

لأنه يمكنه أن يكتب If بدون else

سؤال :

ما ذا تعني بـ E

أي ما هي الاحتمالات المتفرعة منها

اقتباس
كيف ذلك أخي :: على حد معلوماتي , ان الطريقة التي استخدمها , هي الطريقة التي تعجز عن اكتشاف الغموض.

كنت أقصد أن برمجتها أسهل من غيرها

أعطينا تفاصيل أكثر لنفهم الوضع أكثر

ملاحظة:

أظن أن الطريقة التي تبرمجها ليس لتنفيذ الأمر و إنما التأكد من صحة الكتابة فقط

أي للتاكد من خلو الكتابة من أخطاء الـSyntax

أي تحليل الـ Syntax و التفيذ أمران مختلفان

#18

upload2world_82e80.jpg

اقتباس
سؤال :

ما ذا تعني بـ E

المقصود بها , هي القيمة الفارغة , وهي تعني التالي .. ان الجملة القادمة , إما أن تبدأ ب Else او لا تبدأ بأي شيء.

اقتباس
ظن أن الطريقة التي تبرمجها ليس لتنفيذ الأمر و إنما التأكد من صحة الكتابة فقط

أي للتاكد من خلو الكتابة من أخطاء الـSyntax

بالضبط .. كلام سليم . حيث ان هذه الطريقة لأكتشف اخطاء Syntax . وليس للتنفيذ . ولكن طريقة بناء Syntax بشكل سليم تؤدي لأن يتم عملية التنفيذ أيضا بشكل سليم , بحيث إن كان هناك غموض في عملية Syntax , لن يقوم بعملية التنفيذ بشكل سليم .

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…