অন্যদের তুলনায় কিছু জিনিস পার্স করা সহজ করে কী?


8

আমি কেবল ওয়েবঅ্যাস্পাবলির জন্য উইকিপিডিয়া পৃষ্ঠাটি পড়ছিলাম এবং এটিতে বলা হয়েছে: " ওয়েবঅ্যাস্প্ল্যাশানটি হ'ল ... জাভাস্ক্রিপ্টের চেয়ে পার্সিংয়ের জন্য আরও দ্রুততর ডিজাইন করা হয়েছে ", যা আমাকে ভাবতে পেরেছিল , একটি নির্দিষ্ট ভাষা বা ডেটা ফর্ম্যাটকে অন্যদের তুলনায় পার্স করার জন্য দ্রুততর করে তোলে এবং কীভাবে অ্যালগরিদম পার্সিং হয়? ব্যবহার করেন নি?

উত্তর:


18

এই বিষয়টি খুব জটিল। আপনি পার্সার অ্যালগরিদমগুলির জন্য গুগল করতে পারেন এবং প্রচুর বিশদ উপাদান পাবেন।

সাধারণভাবে:

  • অল্প অল্প অস্পষ্টতা সমাধান করতে হবে, পার্সিং প্রক্রিয়া তত দ্রুত faster
  • সিদ্ধান্ত নেওয়ার আগে আরও টোকেনগুলি বিবেচনা করতে হবে, আরও জটিল হয়ে উঠবে।

উদাহরণস্বরূপ:
যখন কোনও জেএস পার্সার functionএই function xyz(a, b) {}কোডটিতে কীওয়ার্ডটি দেখেন : তখন ফাংশন কীওয়ার্ডটি দ্ব্যর্থহীন। এটি প্রথমে পরবর্তী টোকেনটি প্রক্রিয়া xyzকরতে হবে এবং এটি কোনও ফাংশন ঘোষণার সিদ্ধান্ত নিতে পারার আগে এটি সনাক্তকারী কিনা তা দেখতে হবে।

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

যদি এই দুটি উদ্দেশ্যে আলাদা আলাদা কীওয়ার্ড থাকে তবে কোনও অস্পষ্টতা থাকবে না:

function_decl xyz(a, b, c) {} এবং function_lit(a, b, c) {}

তবে, কেউ এ জাতীয় ভাষায় লিখতে চাইবে না। তবে ওয়েবএ্যাসল্যাপিটি হাতে হাতে লেখার কথা নয়। এটি ভাষাটিকে মানুষের পরিবর্তে মেশিনের দিকে উপযুক্ত করে তুলতে সক্ষম করে।


1
এর অর্থ কি লিস্প খুব সহজে পার্স করা যায়?
মোশি

9
@ মোজেস: হ্যাঁ, একটি নিখুঁত লিস্প পার্সার লেখা ছোট্ট, কারণ সিনট্যাক্সটি একটি বিমূর্ত সিনট্যাক্স গাছের কাঠামোর সাথে সমজাতীয় এবং প্রায় কোনও অস্পষ্টতা বিদ্যমান নেই।
ফোশি

4
আরেকটি ভাল উদাহরণ বাইটোকোড, প্রায়শই একটি লুপিং সুইচ বিবৃতি দিয়ে পার্স করা যায় এবং এটিই।
whatsisname

@ ওয়াটসিসনাম প্রকৃতপক্ষে, নিয়মিত সমাবেশ এবং ওয়েব সমাবেশে এটি একই প্রযোজ্য
মার্সাতাতো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.