থিওডোর নরভেল (১৯৯৯) দ্বারা রিকার্সিভ ডেসেন্টের পার্সিং এক্সপ্রেশনগুলি প্রবন্ধে লেখক পাটিগণিত প্রকাশের জন্য নিম্নলিখিত ব্যাকরণ দিয়ে শুরু করেছেন:
E --> E "+" E | E "-" E | "-" E | E "*" E | E "/" E | E "^" E | "(" E ")" | v
যা বেশ খারাপ, কারণ এটি অস্পষ্ট এবং বাম-পুনরাবৃত্ত। সুতরাং তিনি এটি থেকে বাম পুনরাবৃত্তি অপসারণ থেকে শুরু করেন এবং তার ফলস্বরূপ:
E --> P {B P}
P --> v | "(" E ")" | U P
B --> "+" | "-" | "*" | "/" | "^"
U --> "-"
তবে তিনি কীভাবে এই ফলাফলটি পেয়েছিলেন তা আমি বুঝতে পারি না। আমি যখন নিজেই বাম পুনরাবৃত্তি সরিয়ে দেওয়ার চেষ্টা করি, আমি এটি নিম্নলিখিত উপায়ে করছি:
প্রথমত, আমি এমন প্রোডাকশনগুলিকে একসাথে গ্রুপ করি যার একটি গ্রুপে পুনরাবৃত্তি না হয় এবং অন্যটিতে (বাম-পুনরাবৃত্ত):
E --> E "+" E | E "-" E | E "*" E | E "/" E | E "^" E // L-recursive E --> v | "(" E ")" | "-" E
এরপরে, আমি তাদের নাম রাখি এবং সহজ ম্যানিপুলেশনের জন্য ফ্যাক্টর:
E --> E B E // L-recursive; B stands for "Binary operator" E --> P // not L-recursive; P stands for "Primary Expression" P --> v | "(" E ")" | U E // U stands for "Unary operator" B --> "+" | "-" | "*" | "/" | "^" P --> "-"
এখন আমাকে কেবল প্রথম দুটি প্রযোজনার সাথেই ডিল করতে হবে, যা এখন মোকাবেলা করা আরও সহজ।
আমি অ-এল-রিকার্সিভ প্রডাকশন (যা কেবলমাত্র
P
প্রাথমিক অভিব্যক্তি) থেকে শুরু করে এবং এটিT
optionচ্ছিক টেইল অনুসারে অনুসরণ করে সেই প্রথম দুটি প্রযোজনা পুনরায় লিখি , যা আমি বাকী মূল উত্পাদনটিকে প্রথম বাম-রিকার্স ননটার্মিনাল হিসাবে কম হিসাবে সংজ্ঞায়িত করিB E
লেজ অনুসরণ করে (যা খালি ) ঠিক আছেT
, বা যা খালি থাকতে পারে:E --> P T T --> B E T |
(লেজের জন্য খালি বিকল্পটি নোট করুন)।
এই দুটি প্রযোজনা আমি এখন EBNF এ আবার লিখতে পারি:
E --> P {B E}
যা প্রায় কি লেখক পেতে, কিন্তু আমি আছে
E
পরিবর্তেP
শূন্য-অর-আরো পুনরাবৃত্তি ধরণ (লেঙ্গুড়) ভিতরে আছে। অন্যান্য প্রযোজনাগুলি আমি যেমন পেয়েছি তেমনই পেয়েছি:P --> v | "(" E ")" | U E B -> "+" | "-" | "*" | "/" | "^" U -> "-"
তবে এখানেও আমি প্রথম প্রযোজনার
E
পরিবর্তে পেয়েছি ।P
P
সুতরাং, আমার প্রশ্নটি: আমি কী মিস করছি? অটোরের মতো একই সঠিক ফর্মটি পেতে এখনই সিনট্যাক্সের আমার কী বীজগণিত রূপান্তরকরণের প্রয়োজন? আমি বিকল্পগুলির জন্য চেষ্টা করেছিলাম E
, তবে এটি কেবল আমাকে লুপগুলিতে নিয়ে যায়। আমার সন্দেহ হয় যে এর বিকল্প হিসাবে আমার কোনওরকম প্রয়োজন আছে , তবে এটি সমর্থন করার P
জন্য E
আমি কোনও আইনি রূপান্তর জানি না। সম্ভবত আপনি জানেন যে হারিয়ে যাওয়া শেষ পদক্ষেপটি কী?