سؤال

أنا أعمل على الهندسة العكسية مشروع المدرسة الذي يتطلب ترجمة التعامل مع "أنصار الشريعة" من ترجمة C# المشاريع.لقد رأيت آخر على "ترجمة التعليمات البرمجية C# إلى AST ؟" في هذا الموقع, لكن لا تبدو مثل واحد أنا أبحث عن.

حسب ما أعرفه حاليا C# لا توفر مكتبة فئة أن يفعل شيئا مثل هذا Java: http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/dom/ast/ASTVisitor.html.إذا كان هناك مثل هذه المكتبة الدرجة في C#, كل شيء هنا يتم حلها.

تشاورت مع شخص ما و هنا هي الحلول الممكنة.ولكن لدي مشاكل مع العمل على الحلول:

  1. تجد آخر مترجم توفر المكتبة التي تسمح AST أن تعرض للتلاعب.ولكن أنا لا يمكن العثور على مترجم مثل ذلك.
  2. استخدام ANTLR محلل مولد للخروج مع بلدي المترجم أن يفعل ذلك (سيكون أكثر صعوبة وأطول عملية).التحميل هناك توفر عينة قواعد لغات مختلفة ولكن ليس C# (له قواعد مكتوبة بلغات مختلفة بما في ذلك C# ولكن ليس لإنتاج C# النحوي).وبالتالي المشكلة هي أنني لا يمكن العثور على C# النحوي.

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

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

المحلول 3

ANTLR ليست خيارا جيدا.أنا الآن أحاول باستخدام أحادية سيسيل بدلا من ذلك.أحادية سيسيل جيدة لتحليل أي سوسي الرموز التي يمكن تجميعها في المشترك لغة وسيطة (CIL).العيب هو أن لا يكون بشكل صحيح الوثائق.

نصائح أخرى

أنا أعرف الجواب على هذا تم قبول واحد منذ فترة طويلة.ولكن لدي سؤال مماثل ، لم يكن متأكدا من الخيارات هناك.فعلت القليل من التحقيق في NRefactory مكتبة السفن كجزء من SharpDevelop.ذلك لا توليد "أنصار الشريعة" من التعليمات البرمجية C#.

هنا هو صورة من NRefactory التطبيق التجريبي الذي هو جزء من الذاكرة التعليمات البرمجية المصدر.كتابة بعض التعليمات البرمجية C# ويولد ويعرض "أنصار الشريعة" في treeview.

alt text

لماذا لا تحاول NRefectory.لقد رأيت ذلك مناقشة AST الشيء على بعض SharepDevelop منتديات.

هنا هو المادة على CodeProject بخصوص هذا الموضوع.

لقد أجبت على موضوع آخر هنا في ستاكوفيرفلوو حل حيث نفذت API إنشاء والتلاعب AST من C# كود المصدر

كامل C# 3.0 محلل متوفرة لدينا مع DMS برنامج إعادة هندسة أدوات (DMS قصيرة).وقد تم استخدامه لمعالجة عشرات الآلاف من C# الملفات بدقة.فإنه يوفر الآلي AST بناء شجرة traversals, سطح بناء الجملة مطابقة نمط والتحول وغيرها الكثير.كمنتج تجاري قد لا ينجح مشروع طالب.

ANTLR يمكن القول يقدم C# محلل, ولكن أنا لا أعرف كاملة أو القوي هو ، أو ما إذا كان في الواقع يبني ASTs.

[تحرير يناير 25 2010:C# 4.0 محلل الآن DMS مع كل الخصائص المذكورة أعلاه]

[عدل مايو 2016:C# 6.0 محلل المتاحة DMS.]

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