سؤال

لقد عثرت على قواعد F77 yacc التالية: http://yaxx.cvs.sourceforge.net/viewvc/yaxx/yaxx/fortran/fortran.y?revision=1.3&view=markup.

كيف يمكنني عمل محلل Fortran 77 من هذا الملف باستخدام سعيد?

لماذا يوجد بعض C?/C++؟رمز في هذا الملف .y؟

تحديث: أشكركم على الردود الخاصة بك!

لقد كنت ألعب بطريقتين جديدتين منذ فترة:

  1. استخراج وتعديل المحلل اللغوي من حزمة التعليمات البرمجية المصدر المجمعة مع ورقة بعنوان فورتران البارامترية,
  2. كتابة القواعد من الصفر بمساعدة بي إن إف سي.

لقد قمت بتحليل مقتطفات التعليمات البرمجية البسيطة بالفعل.سأبقي الناس على اطلاع إذا ظهر شيء قابل للاستخدام خلال هذا القرن ^__^" هيهي.

ملاحظة:أريد أن أرى ما إذا كان بإمكاني جمع ما يكفي من الزخم بمفردي لبدء مشروع لمحرك التمايز التلقائي ليحل محل المحرك الثنائي الوحيد الذي نعتمد عليه في الوقت الحالي.للترفيه في المراحل الأولية:أنا أشاهد خلط ورق الحب الحب!إنها دراما يابانية ممتعة للغاية!موصى به للغاية...

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

المحلول 4

يستخدم بي إن إف سي واكتب القواعد الخاصة بك من الصفر!تعمل BNFC بشكل رائع ويمكنك إجراء التحليل كما تريد تمامًا.

نصائح أخرى

ج هو العمل الدلالي لتقليل المكدس عند قراءة بناء الجملة.هذه الإجراءات موجودة في لغة C لأن التعريف مخصص لـ Bison/Yacc الذي ينتج ملف مصدر C.

إذا كنت تريد استخدام Happy، فقم بنقل BNF إلى صيغة تعريف Happy واكتب دلالاتك في Haskell.

فقط غيض من فيض للحصول على أي شيء مفيد ولكن.

إذا لم يكن لديك نسخة بالفعل، فاستثمر في كتاب التنين (المجمعون:المبادئ والتقنيات والأدوات التي كتبها أهو، لام، سيثي، أولمان - بيرسون)

لماذا تكون الإجابات الأخرى صحيحة بالمعنى العام، حيث ستحتاج إلى كتابة الإجراءات الخاصة بك لفعل أي شيء ذي معنى لا يتضمن تعريف Yacc الذي ربطته بالفعل أي الإجراءات المرتبطة بالقواعد النحوية.ما يفعله هو أنه يحدد وظيفة yyerror وبعض التعليمات البرمجية لاستخراج القيم من yylval بناءً على نوع الرمز المميز.

إذا لم تكن لديك أدنى فكرة عن موضوع yyerror/yylval، فيجب عليك قراءة البرنامج التعليمي الخاص بـ bison/flex.يعد كتاب التنين أيضًا مصدرًا جيدًا إذا كنت أكثر جدية بشأن هذا الأمر.هناك أيضًا بعض النشرات الممتازة من دورة ستانفورد حول المترجمين العائمين على شبكة الإنترنت، والتي تعتمد على الكتاب.

ستحتاج إلى AST للبناء الذي يمكن إنشاؤه بطريقة مكافئة لأجزاء C في ملف Yacc.

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