একটি Lisp ইন্টারপ্রেটার কীভাবে লিখতে হয়
প্রোগ্রামিং ল্যাঙ্গুয়েজ কীভাবে কাজ করে তা শিখলে আপনি গভীর জ্ঞান অর্জন করতে পারেন। পাইথনে একটি Lisp ইন্টারপ্রেটার তৈরি করা এটি বোঝার একটি ক্লাসিক উপায়।
পিটার নর্ভিগ ২০১০ সালে এই বিষয়ে একটি বিখ্যাত নির্দেশিকা লিখেছিলেন। ইন্টারপ্রেটার ডিজাইনের মূলনীতিগুলো পরিবর্তিত হয় না। কোড কীভাবে কার্যকলাপে রূপান্তরিত হয় তা আপনি এখান থেকে শিখতে পারেন।
একটি ইন্টারপ্রেটার তিনটি প্রধান ধাপ অনুসরণ করে:
- লেক্সিক্যাল অ্যানালাইসিস (Lexical Analysis): আপনি কাঁচা কোডকে টোকেনে (tokens) বিভক্ত করেন। এগুলো হলো শব্দ এবং প্রতীকের মতো ছোট ছোট অংশ।
- সিনট্যাকটিক অ্যানালাইসিস (Syntactic Analysis): আপনি টোকেনগুলোকে একটি ট্রিতে (tree) রূপান্তর করেন। এই ট্রি কোডের গঠন প্রদর্শন করে।
- ইভ্যালুয়েশন (Evaluation): অপারেশনগুলো চালানোর এবং ফলাফল পাওয়ার জন্য আপনি ট্রি অনুসরণ করেন।
Lisp এটিকে সহজ করে তোলে। এটি S-expressions ব্যবহার করে। এর মানে হলো সবকিছুই বন্ধনী (parentheses)-এর ভেতরে একটি লিস্ট। প্রথম আইটেমটি সাধারণত ফাংশন হয় এবং বাকিগুলো হলো আর্গুমেন্ট (arguments)।
শুরু করার জন্য, আপনি (+ 10 (* 2 5)) এর মতো কোডকে টোকেনে রূপান্তর করেন।
আপনার টোকেনগুলো দেখতে এমন হবে: '(', '+', '10', '(', '*', '2', '5', ')', ')'
এই মূল মেকানিক্সগুলো নিয়ে পড়াশোনা করলে প্রতিদিন আপনি যেভাবে আপনার টুলসগুলো ব্যবহার করেন তাতে পরিবর্তন আসবে।