MPS 2018.3: خطط التوليد والتحسينات في لغة التجميع والتعبئة ولغة المحرر ، واجهة محدثة

مرحبا يا هبر! أصدرنا مؤخرًا MPS 2018.3 . في هذا الإصدار ، هناك العديد من الميزات الجديدة التي سيصبح العمل بها في المشروعات أكثر فعالية. قمنا بتحسين خطط التوليد ولغة وصف المحرر ، وأضفنا إنشاءات جديدة إلى لغة التجميع والتعبئة ، وقمنا بتحديث عناصر الواجهة للتنقل المريح في التسلسل الهرمي للميراث ، وقمنا بإجراء العديد من التغييرات الأخرى من أجل العمل المنتج.


الصورة

اللغة الأساسية


أيقونات للتنقل بين المفاهيم المحددة / المنفذة


ظهرت أيقونات المفاهيم التي تم إعادة تعريفها / تنفيذها في مجالات المفاهيم ومفاهيم الواجهة ، والتي تعمل على تبسيط التنقل إلى المفاهيم الفرعية.


الصورة

حزم مخصصة لفئات BaseLanguage


في الإصدارات السابقة من MPS ، تم تحديد حزمة Java للفئات التي تم إنشاؤها بشكل فريد بواسطة اسم النموذج الذي توجد به عناصر المصدر. يضيف الإصدار الجديد لـ BaseLanguage Classifiers خاصية packageName ، والتي تتيح لك إعادة تعريف اسم حزمة Java النهائية. خاصية packageName منطقية فقط لمصنفات BL ذات المستوى الأعلى ، كما هو الحال مع مصنفات Java.


الصورة

ميزات مولد جديدة لملحقات BaseLanguage


بالنسبة لـ BaseLanguage ، غالبًا ما يتم إنشاء الامتدادات. ومع ذلك ، بالنسبة لبعض الامتدادات ، قد يكون من الصعب كتابة مولد مناسب. لقد أضفنا عدة مفاهيم جديدة إلى BaseLanguage لتبسيط عملية كتابة المولدات للإضافات.


توليد تعبيرات Lvalue


تعبير lvalue هو متغير يمكنك من خلاله قراءة أو كتابة قيمة. في بعض الحالات ، يكون إنشاء تعبير Lvalue أمرًا صعبًا لأنه قد يعتمد على السياق الذي يتم استخدامه فيه. سوف يساعد مفهوم المساعدة الجديد ، generic lvalue-expression على تبسيط المولد وجعله مستقلاً عن السياق.


الصورة

تحويل تعبيرات Lvalue إلى روابط


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


في الإصدار الجديد ، يمكنك التفاف أي تعبير @byRef باستخدام @byRef . يقوم منشئ BaseLanguage بتحويل التعبير المُلف إلى تعبير من النوع Reference<T> ، والذي يوفر طرق الحصول على وضبط المتغير المُلف.


الصورة

اقرأ المزيد عن المفاهيم الجديدة في هذه المقالة .


دعم الأساليب الافتراضية


في الإصدار الجديد من MPS ، يمكنك إنشاء طرق افتراضية في واجهات BaseLanguage. يتم تنفيذ الكلمة الأساسية الافتراضية بواسطة مفهوم DefaultModifier ، امتداد لمفهوم التعديل. يوجد DefaultModifier في لغة jetbrains.mps.baseLanguage.jdk8 ، وذلك لإنشاء طريقة افتراضية في الواجهة ، قم باستيراد لغة jdk8.


الصورة

مولد


لغة المولد (لغة تحويل النموذج)


لقد أزلنا الماكرو $ INCLUDE $ ، واستبدل استخدامه بـ $ CALL $. سيساعد الترحيل المناسب في تحديث مشاريعك. لا يدعم الماكرو $ INCLUDE $ القوالب بالوسائط ، ويؤدي وجود وحدات ماكرو وظيفية متشابهة إلى تعقيد اللغة.


ماكرو $ WEAVE $ وقواعد النسيج تعلمت الآن استدعاء الأنماط باستخدام الوسائط. بالإضافة إلى ذلك ، قمنا بإصلاح عيب غير سار ، وإن لم يكن ملحوظًا للغاية يحدث أثناء استخدام القوالب المجمعة والمترجمة. إن "مقدمة" (نسج) القالب الخارجي من الكود المفسر يؤدي دائمًا إلى التفسير ، لكن الآن سيعمل القالب المترجم (بالطبع ، شريطة أن يتم استخدام القوالب المترجمة في خصائص المولد). وبالمثل ، فإن "نسج" القالب الخارجي المفسر من القالب المترجم يعمل.


QueriesGenerated ، مجموعة من استعلامات النماذج المترجمة لنموذج مع قوالب ، تعتمد دائمًا على اصطلاح تسمية ومحرك انعكاس Java لتنفيذ التعليمات البرمجية. يمكن أن ترى ذلك في تتبعات المكدس ، عندما حدث خطأ ما في استعلام النموذج من المولد. أخيرا تخلصنا من هذه الآلية.


عناصر واجهة المستخدم / UX


دعم MacBook Touchbar


يمكن الآن لمالكي أجهزة macbooks التي تحتوي على شريط اللمس استخدامها للعمل في MPS: على سبيل المثال ، استدعاء إجراءات لبدء تطبيق وتصحيحه من شريط اللمس ، وكذلك تحديد تكوين تشغيل / تصحيح سريع أو إنشاء تكوين جديد بسرعة. يمكن تكوين عناصر التحكم في Touchbar في الإعدادات / التفضيلات | المظهر والسلوك | القوائم وأشرطة الأدوات.


وبالطبع ، يمكن توسيع قدرات شريط اللمس! فقط أضف الإجراء المطلوب إلى InterfaceGroup المطابق.


الصورة

موضوع التباين العالي


مثل منصة IntelliJ ، تتميز MPS بموضوع جديد عالي التباين. يمكن تمكينه في الإعدادات / التفضيلات -> المظهر والسلوك.


الصورة

أدوات لإيجاد رمز المهملة


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


الصورة

أيقونات للتنقل في طرق السلوك المنهكة / المنفذة


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


الصورة

تحسينات منبثقة للتنقل بين التجاوزات


النوافذ المنبثقة من المفاهيم / الفئات / الأساليب التي تم تجاوزها / تنفيذها أصبحت غير متزامنة. هذا يعني أن MPS ستضيف نتائج البحث إلى نافذة منبثقة في الخلفية. بالإضافة إلى ذلك ، يمكنك الآن تصفية نتائج البحث حسب اسم الكائن.


الصورة

المكتشفون التغييرات


في هذا الإصدار ، قمنا بتحديث وتحسين الباحثين. للتنفيذ غير المتزامن لـ finder ، استخدم التعبير الخاص OnEachNodeFoundByExpression ، وهو عبارة عن استدعاء بسيط للباحث مع وظيفة رد اتصال لكل عقدة تم اكتشافها.


العثور على إعدادات استخدامات المفاهيم أيضًا. لقد أضفنا خيارات البحث Concept Ancestors and Derived Concepts ، والتي تعرض قائمة بالمفاهيم الأصل والطفل ، على التوالي. بالإضافة إلى ذلك ، تم تحسين إمكانات البحث عن أساليب السلوك باستخدام خيارات Overridden Methods و Overriding Methods.


الصورة

تجاهل الأخطاء


في MPS ، يمكنك تجاهل الأخطاء على العقد. يعد هذا مناسبًا في الحالات التي يتم فيها عرض الخطأ في المحرر ، ولكن في سياق معين لا يكون له معنى (على سبيل المثال ، في قوالب المولد). سابقا ، كانت احتمالات قمع مثل هذه الأخطاء غير مرنة. إذا تم إضافة تعليق توضيحي للعقدة باستخدام السمة "SuppressErrorAnnotation" ، فسيتم استدعاء تأثير "Suppress error for node ...". أدى استخدام هذه النية إلى قمع جميع أنواع الأخطاء على هذه العقدة وجميع نسلها - وبهذه الطريقة يمكن تجاهل الأخطاء الفعلية.


من الممكن الآن تجاهل أنواع معينة فقط من الأخطاء. سيتم تجاهل الخطأ المحدد لهذه العقدة وجميع أحفادها ، ولكن سيتم عرض جميع الرسائل الأخرى. اقرأ المزيد حول ميزات إدارة الأخطاء الجديدة في الوثائق .


الصورة

لغة التجميع والتغليف


نصائح والخدع


تستخدم تطبيقات RCP (Rich Client Platform) لإضافة نصائح وحيل من MPS بشكل افتراضي. الآن يمكن إعادة تعريف النصائح والحيل لتطبيقك باستخدام تصميم النصائح والحيل الجديدة في البرنامج النصي للبناء. كما كان من قبل ، يمكنك استخدام النصائح من توزيع MPS أو تعريفها بنفسك في دليل أو وحدة حلول والاستيراد.


الصورة

نصائح والخدع وصف اللغة


لاستيراد النصائح والحيل إلى نص برمجي بناء من وحدة الحلول ، قم بإنشاء حل واستيراد اللغات jetbrains.mps.build.tips و jetbrains.mps.core.xml. ثم قم بإنشاء مثيل لمفهوم MPSTipsAndTricks ووصف نصائحك فيه. كل طرف هو نص HTML ولا يمكن أن يحتوي على أكثر من صورة واحدة.


الصورة

طرق التعبئة


وضعنا علامة على العبوة المخصصة في BuildMps_IdeaPlugin كما تم إهمالها. بدلاً من ذلك ، استخدم طريقة التعبئة في بنية BuildMpsLayout_Plugin.


تضع طريقة التجميع Auto Packaging كل الوحدات النمطية للغة ونوع الحل في مجلد "اللغات" في دليل جذر البرنامج المساعد ، ويسمح خيار التغليف اليدوي للمطور بضبط بنية البرنامج المساعد بشكل مستقل.


الصورة

تصميم جديد للتجميع ولغة التغليف


قمنا بتوسيع قدرات تكوين الاختبار في لغة التجميع والتعبئة والتغليف. من الممكن الآن تحديد مكونات إضافية IntelliJ IDEA التي يجب تحميلها لتشغيل اختبارات MPS من Ant.


في بعض الحالات ، لتشغيل الاختبار ، يلزم وجود مكون إضافي معين ، لا تستطيع لغة التجميع حسابه بواسطة الوحدات النمطية التي تحتوي على الاختبارات. الآن يمكنك تحديد المكون الإضافي اللازم لتشغيل الاختبار في تصميم تكوين الاختبار.


الصورة

المحرر


إعادة استخدام خرائط عمل الخلية


يمكن إعادة استخدام عناصر خريطة عمل الخلية من خريطة إجراء موجودة باستخدام عمليات الاستيراد.


الصورة

تحسينات أخرى


أنواع البيانات المترجمة بالكامل


بالانتقال إلى اللغات المترجمة بشكل كامل ، أنشأنا أنواع بيانات تم إنشاؤها بالكامل. جميع معلومات أنواع البيانات التي تم إنشاؤها متاحة من خلال واجهة برمجة تطبيقات SModel.


حفظ بيانات الترحيل في التعليقات التوضيحية


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


في برنامج الترحيل الذي ينشئ العقد مع البيانات ، تحتاج إلى إعلان مفهوم هذه العقد واستخدام بنية putData () لإدراج كل تعليق توضيحي في النموذج:


الصورة

استرداد العقد التي تحتوي على البيانات هو نفسه كما كان من قبل:


الصورة

التغييرات في مربع حوار حل التعارض


في السابق ، في الصراع ، يمكن تطبيق التغييرات فقط على جانب واحد. لكن من المهم في بعض الأحيان عدم فقد التغييرات الأخرى.


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


بعد تطبيق التغييرات على الجانب الأيسر من الصراع ، يمكنك تطبيق أو تجاهل الخط على الجانب الأيمن:


الصورة

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


فريق JetBrains MPS الخاص بك
محرك لتطوير

Source: https://habr.com/ru/post/ar436652/


All Articles