এলএল (কে) এবং এলআর (কে) ব্যাকরণের মধ্যে পার্থক্য করার কোনও উপায় আছে কি?


12

আমি সম্প্রতি কম্পাইলার ডিজাইনিং সম্পর্কে অধ্যয়ন করছি। আমি ব্যাকরণের দুই ধরণের সম্পর্কে জানতে পারি একটি হ'ল এলএল ব্যাকরণ এবং অন্যটি এলআর ব্যাকরণ।

আমরা এগুলিও জানি যে প্রতিটি এলএল ব্যাকরণ হল এলআর যা এলএল ব্যাকরণ এটি এলআর ব্যাকরণের সঠিক উপসেট। প্রথমটি টপ-ডাউন পার্সিংয়ে ব্যবহৃত হয় এবং দ্বিতীয়টি নীচের অংশে পার্সিংয়ে ব্যবহৃত হয়।

তবে এর কোনও উপায় আছে যাতে আমরা বলতে পারি যে প্রদত্ত ব্যাকরণটি এলএল বা এলআর?


3
এবং এল আর ( কে ) সারণী উত্পন্ন করার জন্য নীতিগত কৌশলগুলি ব্যবহার করার এবং সেগুলির মধ্যে দ্বন্দ্ব রয়েছে কিনা তা যাচাই করার বিষয়ে কীভাবে? এল এল ( 1 ) এবং এল আর ( 1 ) পার্সিংয়ের ক্ষেত্রে সাধারণত কোনও স্ট্যান্ডার্ড পাঠ্যপুস্তকে চিকিত্সা করা হয়; এল এল ( ) এবং এল আর ( ) কৌশল একটি বিট কঠিন এটি, কিন্তু সুপরিচিত হয়। LL(k)LR(k)LL(1)LR(1)LL(k)LR(k)
অ্যালেক্স দশ ব্রিংক

@ অ্যালেক্সটেনব্রিঙ্ক এই শব্দগুলি মনে হচ্ছে আপনি যদি কোনও উত্তর দিতে পারেন! (স্বাগতম, ফিরে এসেছি!)
রাফেল

ব্যাকরণ এলএল বা এলআর সঠিক কিনা তবে এটি দীর্ঘতর উপায় কিনা তা যাচাই করার জন্য ক্যানোনিকাল কৌশলটি ব্যবহার করা। আমি এটি খুঁজে পাওয়ার একটি ছোট্ট উপায়ের জন্য চেষ্টা করছি যা আমি আহো-লাম-শেঠি-উলমানের সংকলক বইয়ে পেয়েছি।
দেব

উত্তর:


11

এবং এল আর ( কে ) ব্যাকরণগুলি কেবলমাত্র দক্ষতার সাথে পার্স করা যায় তা নয়, তবে এটিও কারণ আমরা ব্যাকরণটি এল এল ( কে ) বা এল আর ( কে ) কিনা তা পরীক্ষা করতে পারিLL(k)LR(k)LL(k)LR(k), এবং যেহেতু আমরা তাদের জন্য সারণী তৈরি করতে পারি (পার্স টেবিলগুলি ইনপুট স্ট্রিংগুলিকে পার্স করতে ব্যবহৃত হয়)। নোট করুন যে এই দুটি শ্রেণীর জন্য, পার্স টেবিল থাকা আপনাকে তাত্ক্ষণিকভাবে ব্যাকরণগুলি ক্লাসে রয়েছে কিনা তা খতিয়ে দেখার অনুমতি দেয়, কারণ কেবল তাই যদি কেবল টেবিলগুলিতে কোনও ত্রুটি থাকে না। এছাড়াও, হ্যাঁ, কিছু ব্যাকরণ রয়েছে যা আমরা যদি পার্স টেবিল থাকে তবে আমরা দক্ষতার সাথে পার্স করতে পারি, তবে যার জন্য আমরা টেবিলটি উপস্থিত থাকলে তা তৈরি করতে পারি না।

পার্সিং পদ্ধতির যে কোনও পাঠ্যপুস্তক আপনাকে শিখাবে যে কীভাবে পদ্ধতির টেবিলগুলি তৈরি করা যায় এবং সম্ভবত এল আর ( 1 ) এর জন্য (যদিও এস এল আর ( 1 ) বেশি সাধারণ)। সিপ্পু এবং সোসালন-সোইনিনেনের পার্সিং থিয়োরির মতো পাঠ্যপুস্তকগুলিও এল এল ( কে ) এবং এল আর ( কে ) ব্যাকরণের জন্য পার্স টেবিল প্রজন্মের চিকিত্সা করে ।LL(1)LR(1)SLR(1)LL(k)LR(k)

দুর্ভাগ্যক্রমে, সত্যই অদ্ভুত ব্যাকরণের জন্য, এবং এল আর ( কে ) এর পার্স টেবিলগুলি (যদিও এল এল ( 1 ) এর জন্য নয় ) ফুটিয়ে উঠতে পারে এবং বিশাল আকার ধারণ করতে পারে; কে যদি যথেষ্ট পরিমাণে থাকে তবে তারা এটি সাধারণ ব্যাকরণের জন্যও করবে । এমন পরীক্ষা রয়েছে যা ব্যাকরণ এল এল ( কে ) বা এল আর ( কে ) কিনা তা পরীক্ষা করতে পারেLL(k)LR(k)LL(1)kLL(k)LR(k)বা বহুপক্ষীয় সময়ে যে চালানো হয় না (টেবিল উত্পাদনের ক্ষয়ক্ষতি হয়)। বিস্তারিত জানার জন্য উপরের পাঠ্যপুস্তকটি পড়ুন। নোট করুন যে অনেক ক্ষেত্রে, টেবিলটি যুক্তিসঙ্গত আকারযুক্ত, তাই পরীক্ষার প্রয়োজন হয় না।

kkLL(k)LR(k)LR(k)kLL(c)ck( বিশদ জন্য এখানে দেখুন)।


আপনি কি জানতে পেরেছেন যে ভাষাটি যদি এলআর (কে) (পাঠ্যপুস্তক কেনা বাদে) থাকে তবে পরীক্ষার জন্য আমি বহুপাক্ষিক-সময়ের অ্যালগরিদমের বিশদটি কোথায় খুঁজে পেতে পারি?
ব্যবহারকারী541686

2

আমাদের কেবলমাত্র যাচাই করতে হবে যে ব্যাকরণটি এলএল হয় বা না কারণ প্রতিটি এলএল ব্যাকরণই এলআর যে এলআর তা এলআর এর সঠিক উপসেট। সুতরাং যদি একটি ব্যাকরণ এলএল হয় তবে তা অবশ্যই এলআর হওয়া উচিত তবে প্রতিটি এলআর এলএল নয়।

যখনই A-> C | D হয়, তখন একটি ব্যাকরণ জি এলএল থাকে, নিম্নলিখিত শর্তটি হওয়া উচিত:

  1. প্রথম (সি) এবং প্রথম (ডি) হ'ল বিচ্ছিন্ন সেট j
  2. ফাঁকা থাকলে ফার্স্ট (ডি) এ ফার্স্ট (সি) এবং ফলো (এ) হয় একইভাবে ফাঁকা সেট ফার্স্ট (সি) এ থাকে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.