সি ++ পার্সিং করা শক্ত হয়ে উঠছে। পার্সিং জাভা ঠিক ততই শক্ত হয়ে উঠছে।
কেন সি (এবং সি ++) পার্স করা "শক্ত" কেন তা নিয়ে আলোচনা করে এই এসও উত্তর দেখুন । সংক্ষিপ্তসারটি হ'ল সি এবং সি ++ ব্যাকরণগুলি সহজাতভাবে অস্পষ্ট; তারা আপনাকে একাধিক বিশ্লেষণ দেবে এবং অস্পষ্টতাগুলি সমাধান করতে আপনাকে অবশ্যই প্রসঙ্গ ব্যবহার করতে হবে । লোকেরা তারপরে পার্স করার সময় আপনাকে অস্পষ্টতাগুলি সমাধান করতে হবে বলে ধরে নিতে ভুল করে; তাই না, নীচে দেখুন। পার্স করার সময় আপনি যদি অস্পষ্টতাগুলি সমাধান করার জন্য জোর দেন, আপনার পার্সার আরও জটিল হয়ে উঠবে এবং এটি তৈরি করা আরও কঠিন; তবে সেই জটিলতা একটি স্ব-ক্ষতিযুক্ত ক্ষত।
আইআইআরসি, জাভা 1.4 এর "সুস্পষ্ট" এলএলআর (1) ব্যাকরণটি অস্পষ্ট নয়, সুতরাং এটি বিশ্লেষণ করা "সহজ" ছিল। আমি এতটা নিশ্চিত নই যে আধুনিক জাভা কমপক্ষে দীর্ঘ দূরত্বের স্থানীয় অস্পষ্টতা পায় নি; "... >>" দুটি টেম্পলেট বন্ধ করে দেয় বা "ডান শিফট অপারেটর" কিনা তা সিদ্ধান্ত নেওয়ার ক্ষেত্রে সবসময় সমস্যা রয়েছে। আমার সন্দেহ হয় আধুনিক জাভা আর এলএলআর (1) এর সাথে বিশ্লেষণ করে না ।
তবে উভয় ভাষার জন্য শক্তিশালী পার্সার (বা দুর্বল পার্সার এবং কনটেক্সট কালেকশন হ্যাক যেমন সি এবং সি ++ সামনের দিকে শেষ হয়) ব্যবহার করে কেউ পার্সিংয়ের সমস্যাটি পেরিয়ে যেতে পারে। সি এবং সি ++ প্রিপ্রোসেসর থাকার অতিরিক্ত জটিলতা রয়েছে; এগুলি বাস্তবে আরও বেশি জটিল তারা দেখায়। একটি দাবি হ'ল সি এবং সি ++ পার্সারগুলি এত শক্ত যে তাদের হাতে লিখে যেতে হবে। এটা সত্য নয়; আপনি জিএলআর পার্সার জেনারেটরগুলির সাথে জাভা এবং সি ++ পার্সার তৈরি করতে পারেন।
সমস্যাটি যেখানে ঠিক আছে সেখানে পার্সিং করা হয়নি।
একবার পার্স করার পরে আপনি এএসটি / পার্স ট্রি দিয়ে কিছু করতে চাইবেন। অনুশীলনে, আপনাকে প্রতিটি সনাক্তকারী হিসাবে, এর সংজ্ঞাটি কী এবং এটি কোথায় ব্যবহৃত হয় তা জানতে হবে ("নাম এবং প্রকারের রেজোলিউশন", slালুভাবে, বিল্ডিং প্রতীক টেবিল)। এটি উত্তরাধিকার, ইন্টারফেস, ওভারলোডিং এবং টেমপ্লেটগুলি সংশ্লেষ করে পার্সার ডান পাওয়ার চেয়ে অনেক বেশি কাজ হতে দেখা যায় এবং এই সমস্তটির জন্য শব্দার্থক শব্দগুলি দশকে শত শত পৃষ্ঠায় ছড়িয়ে পড়ে অনানুষ্ঠানিক প্রাকৃতিক ভাষায় লিখিত হয়েছিল fact ভাষা মান। সি ++ এখানে সত্যিই খারাপ। জাভা 7 এবং 8 এই দৃষ্টিকোণ থেকে বেশ ভয়ঙ্কর হতে চলেছে। (এবং প্রতীক টেবিলগুলি আপনার যা দরকার তা নয়; "পার্সিংয়ের পরে জীবন" শীর্ষক দীর্ঘ নিবন্ধের জন্য আমার বায়ো দেখুন)।
বেশিরভাগ লোকেরা খাঁটি পার্সিং অংশের সাথে লড়াই করে (প্রায়শই শেষ হয় না; অনেকের জন্য নিজেকেই পরীক্ষা করে দেখুন, রিয়েল ল্যাঙ্গগুলির জন্য ওয়ার্কিং পার্সার কীভাবে তৈরি করবেন সে সম্পর্কে অনেক প্রশ্ন), তাই তারা পার্স করার পরে কখনও জীবন দেখেন না। এবং তারপরে আমরা কী পার্স করা কঠিন এবং সেই পর্যায়ে পরে কী ঘটে যায় সে সম্পর্কে কোনও সঙ্কেত নেই।
সি ++ সিনট্যাক্স ঠিক করা আপনাকে কোথাও পাবেন না get
সি ++ সিনট্যাক্স পরিবর্তন সম্পর্কিত: আপনি দেখতে পাবেন যে কোনও সি ++ ব্যাকরণে বিভিন্ন স্থানীয় এবং আসল অস্পষ্টতার যত্ন নিতে আপনাকে প্রচুর জায়গা প্যাচ করতে হবে। আপনি যদি জেদ করেন তবে নীচের তালিকাটি শুরু করার ভাল জায়গা হতে পারে । আমি দাবি করি যে আপনি যদি সি ++ স্ট্যান্ডার্ড কমিটি না হন তবে এটি করার কোনও অর্থ নেই; যদি আপনি এটি করেন এবং এটি ব্যবহার করে একটি সংকলক তৈরি করেন, তবে কেউই এটি ব্যবহার করবে না। ছেলেরা পার্সার তৈরির সুবিধার্থে স্যুইচ করতে বিদ্যমান সি ++ অ্যাপ্লিকেশনগুলিতে অনেক বেশি বিনিয়োগ হয়েছে; এছাড়াও, তাদের ব্যথা শেষ এবং বিদ্যমান পার্সারগুলি ঠিকঠাক কাজ করে।
আপনি নিজের পার্সার লিখতে চাইতে পারেন। সব ঠিকঠাক আছে; আপনার কাছে আরও সহজ করার জন্য কেবলমাত্র সম্প্রদায়ের বাকী ভাষাগুলি তাদের যে ভাষাটি ব্যবহার করতে হবে তা পরিবর্তনের জন্য আশা করবেন না। তারা সকলেই তাদের জন্য এটি আরও সহজ চায় এবং এটি ডকুমেন্টেড এবং প্রয়োগকৃত হিসাবে ভাষাটি ব্যবহার করা।