প্রাচীন কিন্তু শক্তিশালী একটি মেইনফ্রেম, 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 যেহেতু কমান্ড সাবস্টিটিউশন-এর জন্য বন্ধনী ব্যবহার করে, ডাবল কোট করা স্ট্রিংয়ের ভেতরেও খোলা বন্ধনী এস্কেপ করার সময় সাবধানে থাকতে হবে।
অ্যাসোসিয়েটিভ অ্যারে ভ্যারিয়েবল ছাড়া বাকি ক্ষেত্রে বন্ধনী সাধারণ অক্ষর ছাড়া আর কিছু নয়।
Exercism-এ সাইন আপ করুন, Tcl ট্র্যাকের 135টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।