المسارات
/
Tcl
Tcl
/
التمارين
/
الأقواس المتطابقة
الأقواس المتطابقة

الأقواس المتطابقة

سهل

مقدمة

تُتاح لك فرصة كتابة برمجيات لـ Bracketeer™، حاسوب كبير قديم لكنه قوي. البرمجيات التي تعمل عليه مكتوبة بلغة خاصة. معظم صياغتها مألوفة، لكنك تلاحظ عدداً كبيراً من الأقواس والأقواس المعقوفة والأقواس الهلالية. وعلى الرغم من أن Bracketeer™ قوي، فإنه يفتقر إلى المرونة. إذا احتوى الكود المصدري على أي أقواس أو أقواس معقوفة أو أقواس هلالية غير متوازنة، فسيتعطّل Bracketeer™ وسيلزم إعادة تشغيله. ولتجنّب هذا السيناريو، تبدأ بكتابة كود يستطيع التحقق من توازن الأقواس والأقواس المعقوفة والأقواس الهلالية قبل محاولة تشغيله على Bracketeer™.

التعليمات

بالنظر إلى سلسلة نصية تحتوي على الأقواس المربعة [] أو الأقواس المعقوفة {} أو الأقواس الهلالية ()، أو أي مزيج منها، تحقق من أن جميع الأزواج متطابقة ومتداخلة بشكل صحيح. ينبغي تجاهل أي أحرف أخرى. على سبيل المثال، "{what is (42)}?" متوازنة، أما "[text}" فليست كذلك.

إن Tcl لغة بسيطة جدًا، لكن الطريقة التي يحلّل بها المفسّر الكود لها بعض الحالات الطرفية المزعجة.

الأقواس المعقوفة

الأقواس المعقوفة في Tcl هي ببساطة طريقة لتنصيص كتلة من النص، وقد يُفسَّر ذلك النص ككود أو كبيانات. وداخل الأقواس المعقوفة يمكن أن تظهر أقواس معقوفة متداخلة، لكن يجب أن تكون الأقواس المعقوفة المتداخلة متوازنة. وتقول صفحة الدليل الخاصة بـ Tcl ما يلي:

تتداخل الأقواس المعقوفة داخل الكلمة: فمقابل كل قوس معقوف فاتح إضافي يجب أن يكون هناك قوس معقوف غالق إضافي (ومع ذلك، إذا كان قوس معقوف فاتح أو غالق داخل الكلمة مقتبسًا بشرطة مائلة عكسية فإنه لا يُحتسب عند تحديد القوس الغالق المطابق).

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

proc isOpenBrace {char} {
    return [expr {$char eq "{"}]
    # ......................^ will not work
}

بل يجب أن تفعل هذا

proc isOpenBrace {char} {
    return [expr {$char eq "\{"}]
    # ......................^^ will work
}

قد يمثّل هذا مشكلة بسبب الطريقة التي يحلّل بها Tcl التعليقات، وهي طريقة مختلفة عن معظم اللغات. وهناك مزيد من النقاش على ويكي Tcl.

الأقواس المربعة

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

الأقواس الهلالية

باستثناء متغيرات المصفوفات الترابطية، فإن الأقواس الهلالية ليست سوى محارف عادية.


المصدر

Ginna Baker
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Tcl Exercism

مستعد لبدء الأقواس المتطابقة؟

سجّل في Exercism لتتعلّم وتتقن Tcl عبر 135 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.