এই বিষয়টি খুব জটিল। আপনি পার্সার অ্যালগরিদমগুলির জন্য গুগল করতে পারেন এবং প্রচুর বিশদ উপাদান পাবেন।
সাধারণভাবে:
- অল্প অল্প অস্পষ্টতা সমাধান করতে হবে, পার্সিং প্রক্রিয়া তত দ্রুত faster
- সিদ্ধান্ত নেওয়ার আগে আরও টোকেনগুলি বিবেচনা করতে হবে, আরও জটিল হয়ে উঠবে।
উদাহরণস্বরূপ:
যখন কোনও জেএস পার্সার function
এই function xyz(a, b) {}
কোডটিতে কীওয়ার্ডটি দেখেন : তখন ফাংশন কীওয়ার্ডটি দ্ব্যর্থহীন। এটি প্রথমে পরবর্তী টোকেনটি প্রক্রিয়া xyz
করতে হবে এবং এটি কোনও ফাংশন ঘোষণার সিদ্ধান্ত নিতে পারার আগে এটি সনাক্তকারী কিনা তা দেখতে হবে।
যাইহোক, যদি পরবর্তী টোকেন একটি ছিল (
আমরা একটি ফাংশন আক্ষরিক সঙ্গে তার আচরণ করা হয়: function(a, b) {}
। এর জন্য পার্সারকে খুব আলাদাভাবে আচরণ করা প্রয়োজন, এভাবে পার্সারে আরও কোড হয়, সুতরাং ধীর সম্পাদন হয়।
যদি এই দুটি উদ্দেশ্যে আলাদা আলাদা কীওয়ার্ড থাকে তবে কোনও অস্পষ্টতা থাকবে না:
function_decl xyz(a, b, c) {}
এবং function_lit(a, b, c) {}
তবে, কেউ এ জাতীয় ভাষায় লিখতে চাইবে না। তবে ওয়েবএ্যাসল্যাপিটি হাতে হাতে লেখার কথা নয়। এটি ভাষাটিকে মানুষের পরিবর্তে মেশিনের দিকে উপযুক্ত করে তুলতে সক্ষম করে।