Pegjs: المعالج؟ إعادة إنشاء شفرة المصدر

تم إنشاؤها على ١٢ نوفمبر ٢٠١٧  ·  5تعليقات  ·  مصدر: pegjs/pegjs

أنا أقوم ببناء امتدادات للغة حالية بصفتي معالجًا أوليًا. لم أتمكن من معرفة ما إذا كانت هناك طريقة للحصول على pegjs لإعادة إنشاء شفرة المصدر. في الأساس ، أريده أن يقوم بتحليل المصدر ، وأريد تعديل AST ثم إعادة إنشاء المصدر. على أي حال هذا ممكن؟

discussion question

التعليق الأكثر فائدة

YemSalat صحيح ، PEG.js هو مجرد مولد محلل.

  1. إنشاء محلل باستخدام PEG.js (تأكد من إرجاع الإجراءات AST)
  2. حلل لغتك باستخدام المحلل اللغوي الذي تم إنشاؤه لإنشاء AST
  3. قم بتعديل AST باستخدام تحويلات المرور
  4. إعادة إنشاء شفرة المصدر

كما ترى ، فإن PEG.js تشارك فقط في الخطوة الأولى ، لذلك إذا كنت ترغب في إعادة إنشاء المصدر ، فيجب عليك إنشاء مترجم بنفسك ، أو إذا كان مترجم أو مولد (toolchain) موجودًا بالفعل للغة ، أقترح يمكنك إما إرجاع AST المتوافق مع toolchain أو إضافة تحويل يغير AST ليكون أكثر توافقًا مع toolchain.

الختام ، لأن هذه ليست في الواقع مشكلة مع PEG.js ولكن مرحبًا بك لمواصلة المناقشة.

ال 5 كومينتر

mattkanwisher آسف ، أنا لا أفهم تمامًا ما
هل يمكنك التوضيح قليلا؟ إذا كنت تقصد إنتاج رمز يعتمد على AST - فسيتعين عليك كتابة هذا المنطق بنفسك ، إما مباشرة في القواعد أو كقطعة منفصلة.

نعم ، أنتج رمزًا يعتمد على AST ، لذلك يجب أن أقوم بإنشاء مترجم إلى المصدر الأصلي إذا كنت أرغب في المعالجة المسبقة باستخدام هذا؟

حسنًا ، إذا كنت تريد المصدر _original_ ، فستظل بحاجة إلى إنشائه ، أليس كذلك؟
ولكن إذا كنت تريد نسخة معدلة منه - فسيتعين عليك كتابة منطق إنشاء الكود بنفسك.
( Mingunfutagoza من فضلك صححني إذا كنت مخطئا)

YemSalat صحيح ، PEG.js هو مجرد مولد محلل.

  1. إنشاء محلل باستخدام PEG.js (تأكد من إرجاع الإجراءات AST)
  2. حلل لغتك باستخدام المحلل اللغوي الذي تم إنشاؤه لإنشاء AST
  3. قم بتعديل AST باستخدام تحويلات المرور
  4. إعادة إنشاء شفرة المصدر

كما ترى ، فإن PEG.js تشارك فقط في الخطوة الأولى ، لذلك إذا كنت ترغب في إعادة إنشاء المصدر ، فيجب عليك إنشاء مترجم بنفسك ، أو إذا كان مترجم أو مولد (toolchain) موجودًا بالفعل للغة ، أقترح يمكنك إما إرجاع AST المتوافق مع toolchain أو إضافة تحويل يغير AST ليكون أكثر توافقًا مع toolchain.

الختام ، لأن هذه ليست في الواقع مشكلة مع PEG.js ولكن مرحبًا بك لمواصلة المناقشة.

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

https://github.com/thejameskyle/the-super-tiny-compiler

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات