সুতরাং কিভাবে একটি HTML পার্সার কাজ করে? পার্স করার জন্য এটি কি নিয়মিত ভাব প্রকাশ করে না?
ভাল, না।
আপনি যদি নিজের মস্তিষ্কে গণনা কোর্সের একটি তত্ত্বের দিকে ফিরে যান, আপনি যদি একটি, বা একটি সংকলক কোর্স, বা এর মতো কিছু নিয়ে থাকেন তবে আপনি মনে করতে পারেন যে বিভিন্ন ধরণের ভাষা এবং গণনার মডেল রয়েছে। আমি সমস্ত বিবরণে যেতে যোগ্য নই, তবে আমি আপনার সাথে কয়েকটি প্রধান পয়েন্ট পর্যালোচনা করতে পারি।
সহজ ধরণের ভাষা ও গণনা (এই উদ্দেশ্যে) একটি নিয়মিত ভাষা। এগুলি নিয়মিত এক্সপ্রেশন দিয়ে উত্পন্ন করা যেতে পারে এবং সীমাবদ্ধ অটোমেটার সাথে স্বীকৃত। মূলত, এর অর্থ এই যে যে এই ভাষাগুলিতে "পার্সিং" স্ট্রিংগুলি রাষ্ট্র ব্যবহার করে তবে সহায়ক মেমরিটি নয়। এইচটিএমএল অবশ্যই কোনও নিয়মিত ভাষা নয়। আপনি যদি এটির বিষয়ে চিন্তা করেন, ট্যাগগুলির তালিকাটি নির্বিচারে গভীরভাবে নেস্ট করা যায়। উদাহরণস্বরূপ, টেবিলগুলিতে টেবিল থাকতে পারে এবং প্রতিটি সারণীতে প্রচুর নেস্টড ট্যাগ থাকতে পারে। নিয়মিত প্রকাশের সাহায্যে আপনি এক জোড়া ট্যাগ বাছতে সক্ষম হতে পারেন তবে নির্বিচারে নেস্টেড কিছু নেই।
নিয়মিত নয় এমন একটি ক্লাসিক সহজ ভাষা হ'ল যথাযথভাবে প্রথম বন্ধনী ched আপনি যতটা চেষ্টা করুন চেষ্টা করুন, আপনি কখনই কোনও নিয়মিত এক্সপ্রেশন (বা সসীম অটোমেটন) তৈরি করতে পারবেন না যা সর্বদা কাজ করবে। নীড়ের গভীরতার উপর নজর রাখতে আপনার স্মৃতি দরকার।
মেমরির জন্য স্ট্যাক সহ একটি রাষ্ট্রীয় মেশিন হ'ল গণনা মডেলের পরবর্তী শক্তি। একে পুশ-ডাউন অটোমেটন বলা হয় এবং এটি প্রসঙ্গ-মুক্ত ব্যাকরণ দ্বারা উত্পাদিত ভাষাগুলি স্বীকৃতি দেয়। এখানে, আমরা সঠিকভাবে মিলে যাওয়া বন্ধনীগুলি সনাক্ত করতে পারি - প্রকৃতপক্ষে একটি স্ট্যাক এটির জন্য উপযুক্ত মেমরির মডেল।
আচ্ছা, এটি কি এইচটিএমএল-এর পক্ষে যথেষ্ট? দুঃখের বিষয়, না। সুপার-ডুপারের জন্য সাবধানতার সাথে এক্সএমএল যাচাই করা হয়েছে, যার মধ্যে সমস্ত ট্যাগ সর্বদা নিখুঁতভাবে থাকে। রিয়েল-ওয়ার্ল্ড এইচটিএমএলে, আপনি সহজেই স্নিপেটগুলি পছন্দ করতে পারেন <b><i>wow!</b></i>
। এটি অবশ্যই বাসা বাঁধে না, সুতরাং এটি সঠিকভাবে পার্স করার জন্য, একটি স্ট্যাক কেবল যথেষ্ট শক্তিশালী নয়।
গণনার পরবর্তী স্তরটি হ'ল সাধারণ ব্যাকরণ দ্বারা উত্পাদিত ভাষা, এবং ট্যুরিং মেশিন দ্বারা স্বীকৃত। এটি সাধারণত কার্যকরভাবে শক্তিশালী কম্পিউটিং মডেল হিসাবে গ্রহণযোগ্য হিসাবে গ্রহণযোগ্য - সহায়ক রাষ্ট্রের মেশিন সহ একটি রাষ্ট্রীয় মেশিন, যার স্মৃতি কোথাও পরিবর্তন করা যেতে পারে। প্রোগ্রামিং ভাষাগুলি এটি করতে পারে। এটি জটিলতার স্তর যেখানে এইচটিএমএল বাস করে।
এখানে একটি বাক্যে সমস্ত কিছুর সংক্ষিপ্তসার জন্য: সাধারণ এইচটিএমএল পার্স করতে আপনার নিয়মিত অভিব্যক্তি নয়, একটি বাস্তব প্রোগ্রামিং ভাষা প্রয়োজন।
এইচটিএমএলকে একইভাবে পার্স করা হয়েছে অন্য ভাষাগুলি পার্স করা হয়েছে: লেক্সিং এবং পার্সিং। লেক্সিং পদক্ষেপটি পৃথক অক্ষরের প্রবাহকে অর্থবহ টোকনে বিভক্ত করে। বিশ্লেষণকারী পদক্ষেপটি টোকেনগুলি একত্র করে, স্টেটস এবং মেমরি ব্যবহার করে যুক্তিযুক্ত সুসংগত ডকুমেন্টে যার সাথে কাজ করা যায়।