هل يمكن ترجمة لغة خاصة بالمجال (DSL) (على سبيل المثال؟ترجم)؟

StackOverflow https://stackoverflow.com/questions/2457513

  •  20-09-2019
  •  | 
  •  

سؤال

لم أكتب خط DSL مطلقًا، لكنني أعتبره ميزة لمشروع جديد (افتراضي).سيكون للمستخدمين النهائيين أن يكونوا قادرين على التعبير بمفاهيم اللغة الطبيعية مثل أيام الأسبوع من 10 إلى 11 ما عدا يوم الاثنين الأول من الشهر.

قد يكتب المستخدمون الهولنديون تتصرف في أيام الأسبوع 10 و 11 على أنها أول مانداغ فان دي مااند.في هذه الحالة يبدو أن موضع الكلمات متطابق، ولكن قد تكون هناك تعبيرات حيث موضع الأفعال/الأسماء وما إلى ذلك.يمكن أن تكون مختلفة بين اللغات.

أدرك الجواب الواضح (هذا يعتمد).أنا مطور .NET وأفكر في استخدام Boo ولكني منفتح على الاقتراحات.أحتاج إلى فهم ما إذا كانت كل ترجمة تتطلب إعادة كتابة جزء من التنفيذ (أي جزء) أو إذا كانت هناك طريقة للقيام بترجمات فعلية، ربما في نوع ما من المعالجات المسبقة.

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

المحلول

لن تجد مترجمًا قادرًا على القيام بذلك لأكثر من بضع لغات (على سبيل المثال بين لغة واحدة أو لغتين والإنجليزية)، خاصة بالنظر إلى اللغة الإنجليزية التي يمكن أن تحتوي على ثلاث طرق على الأقل لكتابتها.

إذا كنت ترغب في كتابة DSL، فأنت بحاجة إلى التوصل إلى قواعد الإنتاج أولاً (ماذا يستطيع تكتب) ثم اعملها بطريقة للتعبير عنها باللغة الإنجليزية/الهولندية/المريخية/إلخ.

على سبيل المثال:الجدول الزمني:= تضمين الإطار [استثناء]

التي من شأنها أن تكون:

  • إطار:الشهر، السنة، الأسبوع، أيام الأسبوع، عطلات نهاية الأسبوع، أيام الشهر، العطلات، الخ
  • تضمين:بين، ليس في، حول، يحتوي، الخ
  • استثناء:باستثناء [الجدول]، ولكن ليس [الجدول]، ما لم [الجدول]

يمكنك بعد ذلك القلق بشأن المعجم/المحلل الذي يصحح قواعد نحوية معينة ويضعها في هذا النوع من الإنتاج.

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

نصائح أخرى

تم إنشاء DSL باستخدام أدوات اللغة الخاصة بالمجال يمكن أن تكون مترجمة.يقومون بوضع كافة السلاسل في ملفات .resx.

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