এখানে একটি লোক-উপপাদ্য রয়েছে যা বলেছে যে পার্স করা কঠিন, এবং সি ++ মূলত অসম্ভব।
এটা সত্য নয়।
সত্যটি হ'ল সি এবং সি ++ পার্সিং মেশিনিকে হ্যাক না করে এবং প্রতীক টেবিলের ডেটাতে জটলা না করেই LALR (1) পার্সার ব্যবহার করে পার্স করা বেশ শক্ত। জিসিসি প্রকৃতপক্ষে এগুলিকে পার্স করতে, ওয়াইএসিসি এবং এর মতো অতিরিক্ত হ্যাকারি ব্যবহার করত এবং হ্যাঁ এটি কুৎসিত ছিল। এখন জিসিসি হস্তাক্ষরযুক্ত পার্সার ব্যবহার করে, তবে এখনও প্রতীক টেবিল হ্যাকারি সহ। ক্লেং লোকেরা কখনও স্বয়ংক্রিয় পার্সার জেনারেটর ব্যবহার করার চেষ্টা করেনি; এএফআইএকে ক্ল্যাং পার্সারটি সর্বদা হ্যান্ড-কোডেড পুনরাবৃত্ত উত্পন্ন।
সত্য, সি এবং সি ++ শক্তিশালী স্বয়ংক্রিয়ভাবে উত্পাদিত পার্সারগুলি উদাহরণস্বরূপ, জিএলআর পার্সারগুলির সাথে পার্স করা তুলনামূলক সহজ এবং আপনার কোনও হ্যাকের দরকার নেই। এলসা সি ++ পার্সার এই একটি উদাহরণ। আমাদের সি ++ ফ্রন্ট এন্ড অন্যটি (যেমন আমাদের সমস্ত "সংকলক" সামনের প্রান্তে রয়েছে, জিএলআর বেশ দুর্দান্ত পার্সিং প্রযুক্তি)।
আমাদের সি ++ সামনের প্রান্তটি জিসিসির মতো তত দ্রুত নয় এবং অবশ্যই এলসার চেয়েও ধীর; আমরা এটিকে সাবধানে টিউন করার জন্য সামান্য শক্তি রেখেছি কারণ আমাদের আরও বেশি চাপের সমস্যা রয়েছে (তবে এটি লক্ষ লক্ষ লাইনের সি ++ কোডে ব্যবহৃত হয়েছে)। এলসা সম্ভবত জিসিসির চেয়ে ধীর গতির কারণ এটি বেশি সাধারণ। এই দিনগুলিতে প্রসেসরের গতি দেওয়া, এই পার্থক্যগুলি অনুশীলনে খুব বেশি গুরুত্ব পাবে না।
তবে "সত্যিকারের সংকলক" যেগুলি আজ ব্যাপকভাবে বিতরণ করা হয় তার মূলগুলি 10 বা 20 বছর আগে বা তারও বেশি সংকলকগুলিতে রয়েছে। অদক্ষতাগুলি তখন আরও অনেক বেশি গুরুত্বপূর্ণ হয়ে পড়েছিল এবং কেউ জিএলআর পার্সারগুলির কথা শুনেনি, তাই লোকেরা কীভাবে তারা কীভাবে করতে হবে তা জানত। ঝনঝনানি অবশ্যই খুব সাম্প্রতিক, তবে তারপরে লোকজ তত্ত্বগুলি দীর্ঘ সময়ের জন্য তাদের "প্ররোচনার" বজায় রাখে।
আপনাকে আর সেভাবে করতে হবে না। সংকলক রক্ষণাবেক্ষণের উন্নতি সহ আপনি খুব যুক্তিসঙ্গতভাবে জিএলআর এবং অন্যান্য অন্যান্য পার্সারকে সামনের প্রান্ত হিসাবে ব্যবহার করতে পারেন।
কি হল সত্য, যে একটি ব্যাকরণ আপনার বন্ধুত্বপূর্ণ আশপাশ কম্পাইলার আচরণ ম্যাচ পেয়ে কঠিন হয়। কার্যত সমস্ত সি ++ সংকলকগুলি মূল স্ট্যান্ডার্ডটির বেশিরভাগ প্রয়োগ করে (বেশিরভাগ), তাদের প্রচুর অন্ধকার কোণার এক্সটেনশনগুলি থাকে, যেমন, এমএস সংকলকগুলিতে ডিএলএল স্পেসিফিকেশন ইত্যাদি If আপনার পার্সার জেনারেটরের সীমাবদ্ধতার সাথে মেলে আপনার ব্যাকরণকে বাঁকানোর চেষ্টা করার চেয়ে, বাস্তবের সাথে মেলে চূড়ান্ত ব্যাকরণ।
নভেম্বর ২০১২ সম্পাদনা করুন: এই উত্তরটি লেখার পর থেকে আমরা এএনএসআই, জিএনইউ, এবং এমএস বৈকল্পিক সহ পুরো সি ++ 11 হ্যান্ডেল করার জন্য আমাদের সি ++ সামনের প্রান্তটি উন্নত করেছি। যখন প্রচুর অতিরিক্ত স্টাফ ছিল, আমাদের পার্সিং ইঞ্জিনটি পরিবর্তন করতে হবে না; আমরা কেবল ব্যাকরণের নিয়মগুলি সংশোধন করেছি। আমরা হয়নি শব্দার্থিক বিশ্লেষণ পরিবর্তন করতে হবে; সি ++ 11 শব্দার্থগতভাবে অত্যন্ত জটিল, এবং এই কাজটি পার্সারটি চালানোর প্রচেষ্টাটিকে সোয়েম করে।
ফেব্রুয়ারী 2015 সম্পাদনা করুন: ... এখন পুরো সি ++ 14 পরিচালনা করে। ( সাধারণ বিট কোডের জিএলআর পার্সের জন্য সি ++ কোড থেকে মানব পাঠযোগ্য এএসটি দেখুন , এবং সি ++ এর কুখ্যাত "সর্বাধিক ভেক্সিং পার্স"))
এডিআইটি এপ্রিল 2017: এখন পরিচালনা করে (খসড়া) সি ++ 17।