আমি মনে করি যে প্রশ্নটিতে এমন একটি ধারণা রয়েছে যা কেবলমাত্র সীমান্তরেখায় সঠিক।
বাস্তব জীবনে এটি অস্পষ্ট ব্যাকরণগুলির সাথে বেঁচে থাকা খুব সাধারণ, যতক্ষণ না তারা খুব দ্ব্যর্থহীন (যতক্ষণ না বলা যায়)।
উদাহরণস্বরূপ, আপনি যদি ইয়্যাক (বা অনুরূপ, যেমন বাইসন বা বাইাক) এর সাথে সংকলিত ব্যাকরণগুলি ঘুরে দেখেন তবে আপনি যখন তাদের সংকলন করেন তখন বেশ কয়েকটি "এন শিফট / রিডাক্ট দ্বন্দ্ব" সম্পর্কে সতর্কবার্তা সরবরাহ করে। যখন ইয়্যাক একটি পরিবর্তন / হ্রাস বিরোধের মুখোমুখি হয়, এটি ব্যাকরণে একটি অস্পষ্টতার ইঙ্গিত দেয়।
একটি পরিবর্তন / হ্রাস বিবাদ, তবে সাধারণত একটি মোটামুটি ছোটখাটো সমস্যা। পার্সার জেনারেটর দ্বন্দ্বকে হ্রাসের পরিবর্তে "শিফট" এর পক্ষে সমাধান করবে। ব্যাকরণ পুরোপুরি ঠিক আছে যদি এটি আপনি চান (এবং এটি অনুশীলনে পুরোপুরি ভালভাবে কাজ করে বলে মনে হচ্ছে)।
একটি সাধারণ পরিবর্তন বা হ্রাস বিরোধ সাধারণত এই সাধারণ আদেশের ক্ষেত্রে দেখা দেয় (নন-টার্মিনালের জন্য ক্যাপগুলি ব্যবহার করে এবং টার্মিনালের জন্য লোয়ার-কেস ব্যবহার করে):
A -> B | c
B -> a | c
যখন আমরা একটিের মুখোমুখি হই তখন c
একটি দ্বিধাগ্রস্থতা থাকে: আমরা কি c
সরাসরি হিসাবে A
একটিকে পার্স করা উচিত, বা আমরা এটিকে একটি হিসাবে পার্স করা উচিত B
, যার ফলস্বরূপ এটি একটি A
? এর মতো ক্ষেত্রে, ইয়্যাক এবং এগুলি সহজ / খাটো রুটটি বেছে নেবে এবং -> -> রুটে যাওয়ার পরিবর্তে c
সরাসরি হিসাবে পার্স করবে । এটি ভুল হতে পারে, তবে যদি তা হয় তবে এর অর্থ সম্ভবত আপনার ব্যাকরণে আপনার খুব সাধারণ ত্রুটি রয়েছে এবং আপনার সম্ভাবনা হিসাবে কোনও বিকল্পের অনুমতি দেওয়া উচিত নয় ।A
c
B
A
c
A
এখন, বিপরীতে, আমাদের এর মতো আরও কিছু থাকতে পারে:
A -> B | C
B -> a | c
C -> b | c
এখন যখন আমরা একটি মুখোমুখি হই তখন আমাদের c
মধ্যে c
একটি B
বা এ হিসাবে আচরণ করা উচিত এর মধ্যে বিরোধ হয় C
। একটি স্বয়ংক্রিয় দ্বন্দ্ব সমাধানের কৌশলটি আসলে যা আমরা চাই তা চয়ন করতে পারে এমন অনেক কম সুযোগ রয়েছে। এগুলির কোনওটিই "শিফট" নয় - উভয়ই হ্রাস "হ্রাস", সুতরাং এটি একটি "হ্রাস / সংঘাত হ্রাস" (যা ইয়্যাকের অভ্যস্ত এবং এগুলি সাধারণত একটি স্থানান্তর / হ্রাস বিরোধের চেয়ে অনেক বড় সমস্যা হিসাবে স্বীকৃতি দেয়)।
সুতরাং, যদিও আমি নিশ্চিত নই যে আমি এতদূর যেতে পেরেছি যে যে কেউ তাদের ব্যাকরণে সত্যই অস্পষ্টতাকে স্বাগত জানায় , কমপক্ষে কিছু ক্ষেত্রে এটি যথেষ্টই সামান্য যে কেউ সত্যই এটি সম্পর্কে পুরোপুরি যত্ন নেন না। বিমূর্তে তারা সমস্ত অস্পষ্টতা অপসারণ করার ধারণাটি পছন্দ করতে পারে - তবে এটি সর্বদা বাস্তবে করার পক্ষে যথেষ্ট নয়। উদাহরণস্বরূপ, একটি ছোট, সরল ব্যাকরণ যার মধ্যে একটি ছোটখাটো অস্পষ্টতা রয়েছে তা বৃহত্তর, আরও জটিল ব্যাকরণের চেয়ে পছন্দসই হতে পারে যা অস্পষ্টতা দূর করে (বিশেষত আপনি যখন ব্যাকরণ থেকে পার্সার তৈরির বাস্তব ক্ষেত্রে আসতে পারেন এবং খুঁজে বের করেন না যে দ্ব্যর্থহীন ব্যাকরণ একটি পার্সার উত্পাদন করে যা আপনার লক্ষ্য মেশিনে চলবে না)।