سؤال

أريد أن أكتب أحد المولدين المحليين لأغراض تعليمية ، وكنت أتساءل عما إذا كانت هناك بعض الموارد أو البرامج التعليمية اللطيفة عبر الإنترنت التي تشرح كيفية كتابة واحدة. شيء ما على غرار "دعنا نبني مترجمًا" من تأليف جاك كرينشو.

أريد أن أكتب مولد المحلل الخاص بـ LR (1) القواعد.

لدي فهم لائق للنظرية وراء توليد طاولات الإجراء و goto ، لكنني أريد بعض الموارد التي ستساعدني في تنفيذها.

اللغات المفضلة هي C/C ++ ، Java على الرغم من أن اللغات الأخرى على ما يرام.

شكرًا.

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

المحلول

وأنا أتفق مع الآخرين ، كتاب التنين هو خلفية جيدة لحلية LR.

إذا كنت مهتمًا بموظفي الهبوط المتكرر ، فإن تجربة التعلم الممتعة بشكل كبير هي هذا الموقع ، الذي يمر بك من خلال بناء نظام ترجمة ذاتي تمامًا يمكنه تجميع نفسه ولغات أخرى:

Metaii برنامج التحويل البرمجي

كل هذا يعتمد على ورقة تقنية صغيرة من 10 صفحات من قبل Val Schorre: Meta II: لغة كتابة البروتوكس المترجمة الموجهة للبناء من صادق إلى إله عام 1964. لقد تعلمت كيفية بناء المترجمين من هذا مرة أخرى في عام 1970. هناك لحظة تثير العقل عندما تتجه أخيرًا كيف يمكن للمترجم تجديد نفسه ....

أعرف مؤلف موقع الويب من أيام دراستي الجامعية ، لكن لا علاقة له بالموقع.

نصائح أخرى

إذا كنت ترغب في الذهاب إلى طريق بيثون ، فإنني أوصي بما يلي.

لقد وجدت كلاهما مفيدًا للغاية وبول McGuire مؤلف Pyparsing هو Super في مساعدتك عند مواجهة المشكلات. تعد معالجة نص الكتاب في Python مجرد مرجع مفيد للحصول على أطراف إصبعك وتساعدك على إدخالك في الإطار الصحيح للعقل عند محاولة بناء محلل.

أود أن أشير أيضًا إلى أن لغة OO أكثر ملاءمة كمحرك تحليل لغة لأنه قابل للتمديد وأن تعدد الأشكال هو الطريقة الصحيحة للقيام بذلك (IMHO). إن النظر إلى المشكلة فيما يتعلق بآلة الحالة بدلاً من "البحث عن فاصلة منقوطة في نهاية XYZ" سيظهر أن المحلل الخاص بك يصبح أكثر قوة في النهاية.

امل ان يساعد!

ليس حقا على الإنترنت ، ولكن كتاب التنين لديه مناقشات تفصيلية إلى حد ما عن تحليل LR.

لقد وجدت أنه من الأسهل تعلم كيفية كتابة محلات السنين المتكررة قبل تعلم كتابة محلات LR. حسنًا ، لكي أكون صادقًا ، بعد سنوات عديدة من محلفي الكتابة ، لم أجد أبدًا أنه من الضروري كتابة محلل LR.

لقد كتبت مؤخرًا برنامجًا تعليميًا في CodeProject يسمى تنفيذ أدوات لغة البرمجة في C# 4.0 الذي يصف تقنيات تحليل النسب العودية.

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