سؤال

في الواقع، ربما ليس الكامل في مهب lex / yacc. أقوم بتنفيذ Arder-Arrameter الواجهة الأمامية لإدارة WebApp. أبحث عن شيء سيستغرق تعريف قواعد اللغة وتحويله إلى محلل يستهلك الأساليب مباشرة على كائني. على غرار كيف يمكن ل ASP.NET MVC معرفة طريقة وحدة التحكم التي تستدعي، وكيفية المهر الحجج.

لذلك، إذا كانت مستخدمو المستخدمين "إنشاء FOO" في موجه الأمر الخاص بي، فيجب عليك الاتصال بشفافية طريقة:

private void Create(string id) { /* ... */ }

أوه، وإذا كان يمكن أن تولد نص المساعدة من (على سبيل المثال) السمات على طرق تحكم تلك، فهذا سيكون رائعا أيضا.

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

المحلول

لست متأكدا من LEX / YACC سيكون من أي مساعدة. ستحتاج فقط إلى مزامنة أساسية ومترجم أسرع للكتابة باليد. إذا كنت لا تزال في طريق تحليل نرى سخرية.

باعتباره Sidenote: هل فكرت PowerShell و Towerslets؟

نصائح أخرى

لقد قمت ببعض المشاريع الصغيرة مع Glex / GPPG، والتي هي إعادة تطبيق LEX / YACC بشكل مباشر للغاية لم أستخدم أي من الأدوات الأخرى أعلاه، لذلك لا أستطيع أن أقارنها حقا، ولكن هذه تعمل بشكل جيد.

يمكن العثور على GPPG هنا و glex. هنا.

ويقيل ذلك، وأنا أوافق، حل LEX / YACC الكامل ربما يكون مبالغا فيه لمشكلتك. أود أن أقترح إنشاء مجموعة من الارتباطات باستخدام IronPython: إنها واجهات بسهولة مع رمز .NET، يبدو أن غير المبرمجين يجدون بناء الجملة الأساسي قابلة للاستخدام إلى حد ما، ويمنحك الكثير من المرونة / الطاقة إذا اخترت استخدامه.

انظر أيضا إلى antlr., ، والتي لديها دعم C #.

لا يزال لا يزال مبكرا CTP، لذلك لا يمكن استخدامه في تطبيقات الإنتاج ولكنك قد تكون مهتما بأوسلو / Mgrammar:http://msdn.microsoft.com/en-us/oslo/

Jison هو الحصول على الكثير من الجر مؤخرا. إنه ميناء bison إلى جافا سكريبت. نظرا لطبيعة بسيطة للغاية، فقد قمت بجانب قالب Jison Parsing / Lexing إلى PHP، والآن ج #. لا يزال جديدا جدا، ولكن إذا حصلت على فرصة، نلقي نظرة عليه هنا: https://github.com/robertleeplummerjr/jison/tree/master/ports/csharp/jison.

إذا كنت لا تخشى برامج ألفا وأريد بديلا ل LEX / YACC لإنشاء لغاتك الخاصة، فقد تنظر إلى أوسلو. وبعد أود أن أوصيك بالجلوس من خلال تسجيلات جلسة الدورات TL27 و TL31 من العام الماضي PDC.. وبعد تعالج TL31 مباشرة إنشاء لغات خاصة بالمجال باستخدام أوسلو.

Coco / R هو مولد مترجم مع تنفيذ .NET. يمكنك تجربة ذلك، لكنني لست متأكدا من أن الحصول على مثل هذه المكتبة للعمل ستكون أسرع من كتابة الممزيع الخاصة بك.

http://www.ssw.uni-linz.ac.at/research/projects/coco/

أود أن أقترح csflex. - ج # ميناء المرن - مولد ماسحة يونيكس الأكثر شهرة.

أعتقد أن LEX / YACC موجود في أحد SDKs بالفعل (أي RTM). إما Windows أو .NET Framework SDK.

جاردنز بوينت مولد المحلل هنا يوفر YACC / Bison وظائف C #. يمكن تحميلها هنا. وبعد يتم توفير مثال مفيد باستخدام GPPG هنا

كما قال أنطون، ربما يكون PowerShell هو الطريق للذهاب. إذا كنت تريد تطبيق LEX / YACC إذن مالكولم كرر لديه مجموعة جيدة.

يحرر: رابط مباشر لأدوات المحول البرمجي

فقط للسجل، وتنفيذ محلل Lexer و Lalr Garser في C # ل C #:

http://code.google.com/p/naive-language-tools/

يجب أن يكون مشابها في الاستخدام إلى LEX / YACC، ولكن هذه الأدوات (NLT) ليست مولدات! وبالتالي، ننسى السرعة.

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