আপনি উল্লেখ করেছেন যে, মানুষ একে অপরের মধ্যে ইংরেজি, ফরাসী, জার্মান এর মতো একটি "প্রাকৃতিক" ভাষার মাধ্যমে যোগাযোগ করে। এগুলিকে প্রাকৃতিক বলা হয় কারণ আমরা ইচ্ছাকৃতভাবে তাদের আবিষ্কার করার চেয়ে প্রাকৃতিকভাবে সেগুলি অর্জন করি (এস্পেরান্তো ব্যতিক্রম হিসাবে)।
একটি আনুষ্ঠানিক ভাষা হ'ল একটি উদ্ভাবিত হয় কোনও উদ্দেশ্যে বা অন্য উদ্দেশ্যে। উদাহরণস্বরূপ, সি এর মতো একটি প্রোগ্রামিং ভাষা হ'ল প্রোগ্রামিং কম্পিউটারগুলির উদ্দেশ্যে উদ্ভাবিত একটি আনুষ্ঠানিক ভাষা।
সমস্ত ভাষা, ব্যাকরণ ব্যবহার করে বর্ণনা করা যায়। ১৯৫6 সালে নোম চমস্কি দ্বারা ব্যাকরণের একটি শ্রেণিবিন্যাস বর্ণনা করা হয়েছিল। এটি নিম্নলিখিত স্তরগুলি নিয়ে গঠিত:
প্রকার -0 ব্যাকরণ (সীমাহীন ব্যাকরণ)। এগুলি সর্বাধিক সাধারণ এবং একটি ট্যুরিং মেশিনের সমতুল্য। সেই হিসাবে, প্রদত্ত স্ট্রিং একটি সীমিত ব্যাকরণের অংশ কিনা তা সিদ্ধান্ত নেওয়ার সমস্যাটি অনস্বীকার্য।
প্রকার -১ গ্রামার (প্রসঙ্গ-সংবেদনশীল ব্যাকরণ)। প্রায় সব প্রাকৃতিক ভাষা যেমন ইংরেজি ইংরেজি প্রসঙ্গ সংবেদনশীল। ইংরেজিতে প্রসঙ্গ-সংবেদনশীলতার উদাহরণ দুটি বাক্য: "সময় তীরের মতো উড়ে যায়।" এবং "ফলগুলি কলার মতো উড়ে যায়।" সাধারণভাবে, কম্পিউটারগুলির পক্ষে প্রসঙ্গ-সংবেদনশীল ভাষা বোঝা কঠিন।
প্রকার -২ ব্যাকরণ (প্রসঙ্গমুক্ত)। প্রসঙ্গমুক্ত ভাষা হ'ল বেশিরভাগ প্রোগ্রামিং ভাষার বাক্য গঠনের তাত্ত্বিক ভিত্তি।
প্রকার -3 গ্রামার (নিয়মিত ব্যাকরণ)। নিয়মিত ভাষাগুলির পরিবার নিয়মিত প্রকাশের মাধ্যমে পাওয়া যায়। নিয়মিত ভাষাগুলি সাধারণত অনুসন্ধানের নিদর্শনগুলি এবং প্রোগ্রামিং ভাষার সংক্ষিপ্ত কাঠামো সংজ্ঞায়িত করতে ব্যবহৃত হয়।
টাইপ 2 (প্রসঙ্গমুক্ত) এবং টাইপ 3 (নিয়মিত) ব্যাকরণ কম্পিউটারগুলি দ্বারা প্রায়শই হয় কারণ তাদের জন্য পার্সারগুলি কার্যকরভাবে প্রয়োগ করা যেতে পারে।
বিএনএফ (ব্যাকাস নরমাল ফর্ম বা ব্যাকাস – নওর ফর্ম) প্রসঙ্গমুক্ত ব্যাকরণগুলির জন্য একটি স্বরলিপি কৌশল, প্রায়শই কম্পিউটিংয়ে ব্যবহৃত ভাষার সিনট্যাক্স বর্ণনা করতে ব্যবহৃত হয়।
উদাহরণস্বরূপ একটি সনাক্তকারী হিসাবে বর্ণিত হতে পারে:
<identifier> ::= <letter> { <letter> | <digit> }
যার অর্থ এটি অবশ্যই একটি অক্ষর দিয়ে শুরু হবে এবং এতে অতিরিক্ত অক্ষর বা সংখ্যা থাকতে পারে।
আগে, একটি অক্ষর একটি 'a' সংজ্ঞায়িত করা হয় | 'খ' | 'সি' ইত্যাদি, এবং অঙ্কটি একই ধরণের স্বরলিপি ব্যবহার করে '9' এর মাধ্যমে '0' হিসাবে সংজ্ঞায়িত করা হয়।
এসি "ফর" বিবৃতি হিসাবে সংজ্ঞায়িত হতে পারে:
<for_statement> ::=
'for' '(' <expression> ';' <expression> ';' <expression> ')' <statement>
লেক্সিকাল বিশ্লেষক এবং পার্সার (সংকলক বা দোভাষীর প্রথম পর্যায়ে) তখন কোনও নির্দিষ্ট ভাষার জন্য বিএনএফ দ্বারা বর্ণিত নির্দিষ্ট ব্যাকরণ গ্রহণ করার জন্য নির্মিত হয়। লেক্সিকাল অ্যানালাইজারগুলি সাধারণত কোনও ভাষার বিভিন্ন টোকেনকে আলাদা করার জন্য ব্যবহৃত হয় (যেমন একটি কীওয়ার্ড, সনাক্তকারী বা একটি নম্বর), এবং পার্সারটি কীভাবে টোকেনগুলি একসাথে কাজ করে তা নির্ধারণ করতে ব্যবহৃত হয়, যেমন "" জন্য "বিবৃতিটি কীভাবে তৈরি করা হয় ।