سؤال

دعنا نقول أننا نستخدم المحللين التنبؤيين (1).لماذا هو ضروري أن

$ first (\ alfa) \ cap first (\ beta)=emplyset $ ،

لجميع $ \ alpha، \ beta $ الجانب الأيمن من الإنتاج البدائل I.E.، والإنتاج المرتبط بنفس المحطة غير المحطة.لماذا هذا الشرط ضروري؟

هل كانت مفيدة؟

المحلول

إليك تفسير بديهية:

يتبع أساسا من طبيعة LL (1) المحللون: LL (1) المحللون يبنون طاولة تحليل LL (1). صفوف الجدول غير محمولين، والأعمدة هي المحطات. يمكننا التفكير في تحليل الجدول (1) في ليرة لبنانية (1) عند مواجهة كل رمز في الإدخال: ننظر إلى الإدخال الذي يحدده محطة الإدخال الحالية ومحطة الإدخال الحالية، وتطبيق قاعدة إنتاج مقابلة. وبالتالي، لا يمكن أن يحتوي الجدول (1) على قواعد إنتاج متعددة في كل إدخال، وإلا، وإلا، لا يمكن للمحلل تحديد القاعدة التي يجب تطبيقها.

إذا كان الجانب الأيمن من الإنتاج $ \ ألفا $ ، $ \ beta $ لديك تقاطع المجموعات الأولى، ثم لدينا قواعد متعددة في إدخال واحد في الجدول LL (1) (أي إدخالات مكررة / متضاربة) --- وجود تقاطع غير صاخب من مجموعات الأولية يمنعنا بشكل أساسي من بناء جدول تحليل LL (1).

إذا كنت لا تزال غير واضح حول سبب ضرورة هذا الشرط ، أقترح عليك إنشاء مثال مع مجموعات تقاطع أولا على الجانب الأيمن من الإنتاج، ثم حاول إنشاء شركة LL يدويا (1) تحليل الجدول أو استخدام أحد أدوات التصور عبر الإنترنت ؛ سوف تجد على الفور صراع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top