0. تعريف وضع المترجم:
بالنظر إلى لغة ، حدد تمثيل قواعدها ، وتحديد مترجم يستخدم التمثيل لتفسير الجمل باللغة. ينتمي إلى الوضع السلوكي.
يتم استخدام وضع المترجم المترجم قليلاً في تطوير النظام الفعلي لأنه يمكن أن يسبب مشاكل مثل الكفاءة والأداء والصيانة.
يظهر مخطط الطبقة العامة لوضع المترجم المترجم في الشكل.
1. مزايا وضع المترجم
المترجم هو أداة تحليل بناء الجملة بسيطة. ميزة أبرزها هي توسعها. تعديل قواعد بناء الجملة هو فقط لتعديل التعبير غير الطرفي المقابل. إذا قمت بتوسيع بناء الجملة ، فأنت بحاجة فقط إلى إضافة فئة غير طرفية.
2. عيوب وضع المترجم
سوف يتسبب نمط المترجم المترجم في توسع فئة: يحتاج كل بناء جملة إلى إنتاج تعبير غير طرفي. عندما تكون قواعد بناء الجملة معقدة نسبيًا ، قد يتم إنشاء عدد كبير من ملفات الفصل ، مما يسبب الكثير من المتاعب في الصيانة.
يتبنى نمط المترجم المترجم طريقة استدعاء متكررة: كل تعبير غير طرفي يهتم فقط بالتعبيرات المتعلقة بنفسه. يحتاج كل تعبير إلى معرفة النتيجة النهائية ويجب أن تكون طبقة غير ملتصقة حسب الطبقة. سواء كانت لغة موجهة نحو العملية أو لغة موجهة نحو الكائن ، يتم استخدام العودية في ظل الظروف اللازمة ، مما يؤدي إلى تصحيح الأخطاء المعقدة للغاية. فكر في الأمر ، إذا أردنا استكشاف خطأ في بناء الجملة ، هل نحتاج إلى تصحيح واحد تلو الآخر ، حتى أصغر وحدة بناء الجملة؟
مشكلة الكفاءة: يستخدم وضع المترجم المترجم الكثير من الحلقات والتكرار ، والكفاءة هي مشكلة لا يمكن تجاهلها ، خاصة عند استخدامها لتحليل بناء الجملة المعقدة والمعقدة. الكفاءة لا تطاق.
3. استخدم سيناريوهات وضع المترجم
يمكن استخدام المشكلات المتكررة مع وضع المترجم المترجم: على سبيل المثال ، تقوم خوادم التطبيق المتعددة بإنشاء عدد كبير من السجلات كل يوم ، ويجب تحليل ملفات السجل ومعالجتها. نظرًا لأن تنسيقات السجل لكل خادم مختلفة ، فإن عناصر البيانات هي نفسها. وفقًا للمترجم المترجم ، فإن تعبيرات Terminator هي نفسها ، ولكن يجب صياغة التعبيرات غير المطلوبة. في هذه الحالة ، يمكن حل المشكلة مرة واحدة وإلى الأبد من خلال البرنامج.
سيناريو حيث يجب شرح بناء الجملة البسيط: لماذا هو بسيط؟ انظر إلى التعبيرات غير الطرفية. كلما زادت هناك حاجة إلى القواعد النحوية ، كلما زادت التعقيد والمكالمات المتكررة بين الفئات (انظر المكدس في مثالنا) ، وهو أمر غير معقد بشكل عام. فكر في الأمر ، ما نوع الصبر والثقة التي تحتاجها لاستكشاف المشاكل عند استدعاء فصول متعددة. لذلك ، يتم استخدام وضع المترجم المترجم بشكل عام لتحليل مجموعات الأحرف القياسية المقارنة ، مثل تحليل بناء جملة SQL ، ولكن يتم استبدال هذا الجزء تدريجياً بأدوات متخصصة. في بعض بيئات الأعمال الخاصة ، سيتم أيضًا استخدام نموذج المترجم. المثال الذي قمنا به للتو هو بيئة أعمال ، وهناك العديد من الأمثلة على عمليات النموذج الآن. العديد من المؤسسات التجارية قادرة على توفير كمية كبيرة من البيانات للتحليل.
4. أمثلة بسيطة
/ *** إعلان عملية تفسير مجردة*/ مترجم واجهة عامة {تفسير الفراغ العام (سياق السياق) ؛ // في الواقع ، يمكن أن يكون هناك نوع عائد لتحديد كائن البيانات المفسر} الفئة العامة XMlSaxInterPreter ينفذ المترجم المترجم {Override public void تفسير (سياق السياق) {system.out.println ("xml sax tronefreter:" + context.getData ()) ؛ }} الفئة العامة xmldominterpreter تنفذ المترجم المترجم {Override public void (سياق السياق) {system.out.println ("XML DOM مترجم:" + context.getData ()) ؛ }} / *** يحتوي على بعض المعلومات خارج المترجم* / سياق الفئة العامة {بيانات السلسلة الخاصة ؛ السلسلة العامة getData () {return data ؛ } public void setData (string data) {this.data = data ؛ }} اختبار الفئة العامة {public static void main (string [] args) {context context = new Context () ؛ context.setData ("قطعة من بيانات XML") ؛ New XMlSaxInterPreter (). التفسير (السياق) ؛ New XmLdomInterPreter (). التفسير (السياق) ؛ }}5. ملاحظات على وضع المترجم
حاول عدم استخدام وضع المترجم المترجم في الوحدات النمطية المهمة ، وإلا فإن الصيانة ستكون مشكلة كبيرة. في المشروع ، يمكنك استخدام لغات البرنامج النصي مثل Shell و Jruby و Groovy لاستبدال وضع المترجم المترجم لتعويض أوجه القصور في اللغات المترجمة Java. نحن نستخدم JRUBY لمعالجة الحساب في المشروع التحليلي للبنك ، وتجنب التشغيل المكون من أربعة أحرف في وضع المترجم الفوري ، وأداء جيد في جميع جوانب الكفاءة والأداء.