Syntax (programming languages)
কম্পিউটার বিজ্ঞানে, একটি কম্পিউটার ভাষার বাক্য গঠন হল সেই নিয়ম যা সেই ভাষায় সঠিকভাবে কাঠামোগত বিবৃতি বা অভিব্যক্তি হিসাবে বিবেচিত প্রতীকগুলির সংমিশ্রণকে সংজ্ঞায়িত করে। এটি প্রোগ্রামিং ভাষাগুলির ক্ষেত্রে প্রযোজ্য, যেখানে নথিটি সোর্স কোডের প্রতিনিধিত্ব করে এবং মার্কআপ ভাষাগুলির ক্ষেত্রে, যেখানে নথিটি তথ্যের প্রতিনিধিত্ব করে। একটি ভাষার বাক্য গঠন তার পৃষ্ঠ রূপকে সংজ্ঞায়িত করে। পাঠ্য-ভিত্তিক কম্পিউটার ভাষাগুলি অক্ষরের ক্রমের উপর ভিত্তি করে, অন্যদিকে ভিজ্যুয়াল প্রোগ্রামিং ভাষাগুলি স্থানিক বিন্যাস এবং প্রতীকগুলির মধ্যে সংযোগের উপর ভিত্তি করে (যা পাঠ্য বা গ্রাফিকাল হতে পারে)। যে নথিগুলি বাক্যবিন্যাসগতভাবে অবৈধ, সেগুলির বাক্যবিন্যাস ত্রুটি রয়েছে বলে বলা হয়। কোনও ভাষার বাক্য গঠন নকশা করার সময়, একজন ডিজাইনার এই উদাহরণগুলি থেকে সাধারণ নিয়মগুলি বের করার চেষ্টা করার আগে আইনী এবং অবৈধ উভয় স্ট্রিংয়ের উদাহরণ লিখে শুরু করতে পারেন। সিনট্যাক্স তাই কোডের রূপকে বোঝায় এবং শব্দার্থবিজ্ঞানের সাথে বিপরীত হয়-অর্থ। কম্পিউটার ভাষাগুলির প্রক্রিয়াকরণে, শব্দার্থিক প্রক্রিয়াকরণ সাধারণত বাক্য গঠনমূলক প্রক্রিয়াকরণের পরে আসে; তবে, কিছু ক্ষেত্রে, সম্পূর্ণ বাক্য গঠনমূলক বিশ্লেষণের জন্য শব্দার্থিক প্রক্রিয়াকরণ প্রয়োজনীয়, এবং এগুলি একসাথে বা একযোগে করা হয়। একটি সংকলকের মধ্যে, বাক্যবিন্যাস বিশ্লেষণ ফ্রন্টএন্ড নিয়ে গঠিত, অন্যদিকে শব্দার্থিক বিশ্লেষণ ব্যাকএন্ড নিয়ে গঠিত (এবং মধ্য প্রান্ত, যদি এই পর্যায়টি আলাদা করা হয়)। বাক্যবিন্যাসের স্তরগুলি কম্পিউটার ভাষার বাক্যবিন্যাসকে সাধারণত তিনটি স্তরে বিভক্ত করা হয়ঃ শব্দ-আভিধানিক স্তর, যা নির্ধারণ করে যে অক্ষরগুলি কীভাবে টোকেন গঠন করে; বাক্যাংশ-ব্যাকরণ স্তর, সংকীর্ণভাবে বলতে গেলে, টোকেনগুলি কীভাবে বাক্যাংশ গঠন করে তা নির্ধারণ করে; প্রসঙ্গ-কোন বস্তু বা ভেরিয়েবলের নামগুলি বোঝায় তা নির্ধারণ করে, যদি প্রকারগুলি বৈধ হয় ইত্যাদি। এইভাবে পার্থক্য করলে মডুলারিটি পাওয়া যায়, যার ফলে প্রতিটি স্তরকে আলাদাভাবে এবং প্রায়শই স্বাধীনভাবে বর্ণনা এবং প্রক্রিয়া করা যায়। প্রথমত, একটি লেক্সার অক্ষরের রৈখিক ক্রমকে টোকেনের রৈখিক ক্রমে পরিণত করে; এটি "আভিধানিক বিশ্লেষণ" বা "লেক্সিং" নামে পরিচিত। দ্বিতীয়ত, পার্সার টোকেনের রৈখিক ক্রমকে একটি শ্রেণিবদ্ধ সিনট্যাক্স ট্রি-তে পরিণত করে; এটি সংকীর্ণভাবে বলতে গেলে "পার্সিং" নামে পরিচিত। তৃতীয়ত, প্রাসঙ্গিক বিশ্লেষণ নামগুলির সমাধান করে এবং প্রকারগুলি পরীক্ষা করে। এই মডুলারিটি কখনও কখনও সম্ভব হয়, তবে অনেক বাস্তব-বিশ্বের ভাষায় একটি পূর্ববর্তী পদক্ষেপ পরবর্তী পদক্ষেপের উপর নির্ভর করে-উদাহরণস্বরূপ, সি-তে লেক্সার হ্যাক কারণ টোকেনাইজেশন প্রসঙ্গের উপর নির্ভর করে। এমনকি এই ক্ষেত্রেও, বাক্যবিন্যাসগত বিশ্লেষণকে প্রায়শই এই আদর্শ মডেলের আনুমানিক হিসাবে দেখা হয়। পার্সিং পর্যায়টি নিজেই দুটি অংশে বিভক্ত করা যেতে পারেঃ পার্স ট্রি, বা "কংক্রিট সিনট্যাক্স ট্রি", যা ব্যাকরণ দ্বারা নির্ধারিত হয়, কিন্তু সাধারণত ব্যবহারিক ব্যবহারের জন্য খুব বিস্তারিত, এবং বিমূর্ত সিনট্যাক্স ট্রি (এ. এস. টি), যা এটিকে একটি ব্যবহারযোগ্য আকারে সহজতর করে। এ. এস. টি এবং প্রাসঙ্গিক বিশ্লেষণের পদক্ষেপগুলিকে শব্দার্থগত বিশ্লেষণের একটি রূপ হিসাবে বিবেচনা করা যেতে পারে, কারণ তারা বাক্যবিন্যাসে অর্থ এবং ব্যাখ্যা যোগ করছে, বা বিকল্পভাবে বাক্যবিন্যাসের নিয়মগুলির অনানুষ্ঠানিক, ম্যানুয়াল বাস্তবায়ন যা আনুষ্ঠানিকভাবে বর্ণনা করা বা বাস্তবায়ন করা কঠিন বা বিশ্রী হবে। স্তরগুলি সাধারণত চমস্কি শ্রেণিবিন্যাসের স্তরগুলির সাথে সামঞ্জস্যপূর্ণ। শব্দগুলি একটি নিয়মিত ভাষায় থাকে, যা আভিধানিক ব্যাকরণে নির্দিষ্ট করা হয়, যা একটি টাইপ-3 ব্যাকরণ, যা সাধারণত নিয়মিত অভিব্যক্তি হিসাবে দেওয়া হয়। বাক্যাংশগুলি একটি প্রসঙ্গ-মুক্ত ভাষায় (সি. এফ. এল) হয়, সাধারণত একটি নির্ধারক প্রসঙ্গ-মুক্ত ভাষা (ডি. সি. এফ. এল), যা একটি বাক্যাংশ কাঠামো ব্যাকরণে নির্দিষ্ট করা হয়, যা একটি টাইপ-2 ব্যাকরণ, সাধারণত ব্যাকাস-নৌর আকারে (বি. এন. এফ) উৎপাদন নিয়ম হিসাবে দেওয়া হয়। বাক্যাংশ ব্যাকরণগুলি প্রায়শই সম্পূর্ণ প্রসঙ্গ-মুক্ত ব্যাকরণের তুলনায় অনেক বেশি সীমাবদ্ধ ব্যাকরণে নির্দিষ্ট করা হয়, যাতে এগুলি বিশ্লেষণ করা সহজ হয়; যেখানে এলআর পার্সার রৈখিক সময়ে যে কোনও ডিসিএফএল বিশ্লেষণ করতে পারে, সাধারণ এলএলআর পার্সার এবং এমনকি সহজ এলএল পার্সার আরও দক্ষ, তবে কেবল এমন ব্যাকরণগুলি বিশ্লেষণ করতে পারে যার উৎপাদন নিয়ম সীমাবদ্ধ। নীতিগতভাবে, প্রাসঙ্গিক কাঠামো একটি প্রসঙ্গ-সংবেদনশীল ব্যাকরণ দ্বারা বর্ণনা করা যেতে পারে, এবং বৈশিষ্ট্য ব্যাকরণের মতো উপায়ে স্বয়ংক্রিয়ভাবে বিশ্লেষণ করা যেতে পারে, যদিও, সাধারণভাবে, এই পদক্ষেপটি নাম রেজোলিউশন নিয়ম এবং টাইপ চেকিংয়ের মাধ্যমে ম্যানুয়ালি করা হয় এবং একটি প্রতীক টেবিলের মাধ্যমে প্রয়োগ করা হয় যা প্রতিটি ক্ষেত্রের জন্য নাম এবং প্রকার সংরক্ষণ করে। এমন সরঞ্জাম লেখা হয়েছে যা স্বয়ংক্রিয়ভাবে নিয়মিত অভিব্যক্তিতে লেখা একটি আভিধানিক নির্দিষ্টকরণ থেকে একটি লেক্সার এবং বি. এন. এফ-এ লেখা বাক্যাংশ ব্যাকরণ থেকে একটি পার্সার তৈরি করেঃ এটি পদ্ধতিগত বা কার্যকরী প্রোগ্রামিংয়ের প্রয়োজনের পরিবর্তে ঘোষণাত্মক প্রোগ্রামিং ব্যবহার করার অনুমতি দেয়। একটি উল্লেখযোগ্য উদাহরণ হল লেক্স-ইয়াক জোড়া। এগুলি স্বয়ংক্রিয়ভাবে একটি কংক্রিট সিনট্যাক্স ট্রি তৈরি করে; পার্সার লেখককে অবশ্যই ম্যানুয়ালি কোড লিখতে হবে যা বর্ণনা করে যে এটি কীভাবে একটি বিমূর্ত সিনট্যাক্স ট্রীতে রূপান্তরিত হয়। প্রাসঙ্গিক বিশ্লেষণও সাধারণত ম্যানুয়ালি প্রয়োগ করা হয়। এই স্বয়ংক্রিয় সরঞ্জামগুলির অস্তিত্ব থাকা সত্ত্বেও, পার্সিং প্রায়শই বিভিন্ন কারণে ম্যানুয়ালি প্রয়োগ করা হয়-সম্ভবত বাক্যাংশের কাঠামো প্রসঙ্গ-মুক্ত নয়, বা একটি বিকল্প বাস্তবায়ন কর্মক্ষমতা বা ত্রুটি-প্রতিবেদনের উন্নতি করে, বা ব্যাকরণকে আরও সহজে পরিবর্তন করার অনুমতি দেয়। পার্সারগুলি প্রায়শই কার্যকরী ভাষায় লেখা হয়, যেমন হাস্কেল, বা স্ক্রিপ্টিং ভাষায়, যেমন পাইথন বা পার্ল, বা সি বা সি + +। ত্রুটির উদাহরণ উদাহরণস্বরূপ, (1 1 যোগ করুন) একটি বাক্যবিন্যাসগতভাবে বৈধ লিস্প প্রোগ্রাম ('যোগ' ফাংশন বিদ্যমান ধরে নেওয়া, অন্যথায় নাম রেজোলিউশন ব্যর্থ হয়), 1 এবং 1 যোগ করা। যাইহোক, নিম্নলিখিতগুলি অবৈধঃ (_ 1 1) আভিধানিক ত্রুটিঃ '_' বৈধ নয় (1 1 পার্সিং ত্রুটি যোগ করুনঃ ক্লোজিং অনুপস্থিত ')' লেক্সার প্রথম ত্রুটিটি সনাক্ত করতে অক্ষম-এটি কেবল জানে যে, টোকেন LEFT _ PAREN তৈরি করার পরে, '(' প্রোগ্রামের অবশিষ্টাংশ অবৈধ, যেহেতু কোনও শব্দ নিয়ম '_' দিয়ে শুরু হয় না। দ্বিতীয় ত্রুটিটি পার্সিং পর্যায়ে সনাক্ত করা হয়ঃ পার্সার '(' টোকেন (একমাত্র মিল হিসাবে) এর কারণে 'তালিকা' উৎপাদন নিয়মটি চিহ্নিত করেছে এবং এইভাবে একটি ত্রুটি বার্তা দিতে পারে; সাধারণভাবে এটি অস্পষ্ট হতে পারে। টাইপ ত্রুটি এবং অঘোষিত পরিবর্তনশীল ত্রুটিগুলি কখনও কখনও সিনট্যাক্স ত্রুটি হিসাবে বিবেচিত হয় যখন সেগুলি সংকলন-সময়ে সনাক্ত করা হয় (যা সাধারণত দৃঢ়ভাবে টাইপ করা ভাষাগুলি সংকলন করার সময় হয়), যদিও এই ধরনের ত্রুটিগুলিকে শব্দার্থগত ত্রুটি হিসাবে শ্রেণীবদ্ধ করা সাধারণ। উদাহরণস্বরূপ, পাইথন কোড 'এ' + 1-এ একটি টাইপ ত্রুটি রয়েছে কারণ এটি একটি পূর্ণসংখ্যা আক্ষরিকের সাথে একটি স্ট্রিং আক্ষরিক যোগ করে। এই ধরনের ত্রুটিগুলি সংকলন-সময়ে সনাক্ত করা যেতে পারেঃ এগুলি বিশ্লেষণের সময় সনাক্ত করা যেতে পারে (বাক্যাংশ বিশ্লেষণ) যদি সংকলক পৃথক নিয়ম ব্যবহার করে যা "ইন্টিজারলিটারাল + ইন্টিজারলিটারাল"-কে অনুমতি দেয় তবে "স্ট্রিংলিটারাল + ইন্টিজারলিটারাল"-কে অনুমতি দেয় না, যদিও এটি সম্ভবত যে সংকলক একটি পার্সিং নিয়ম ব্যবহার করবে যা "লিটারালওআরআইডেন্টিফায়ার + লিটারালওআরআইডেন্টিফায়ার" ফর্মের সমস্ত অভিব্যক্তিগুলিকে অনুমতি দেয় এবং তারপরে প্রাসঙ্গিক বিশ্লেষণের সময় ত্রুটিটি সনাক্ত করা হবে (যখন টাইপ চেকিং ঘটে)। কিছু ক্ষেত্রে এই বৈধতা কম্পাইলার দ্বারা করা হয় না এবং এই ত্রুটিগুলি শুধুমাত্র রানটাইমে সনাক্ত করা হয়। গতিশীলভাবে টাইপ করা ভাষায়, যেখানে টাইপ শুধুমাত্র রানটাইমে নির্ধারণ করা যায়, অনেক ধরনের ত্রুটি শুধুমাত্র রানটাইমে সনাক্ত করা যায়। উদাহরণস্বরূপ, পাইথন কোড a + b বাক্যাংশ স্তরে বাক্যগতভাবে বৈধ, তবে a এবং b এর প্রকারের সঠিকতা শুধুমাত্র রানটাইমে নির্ধারণ করা যেতে পারে, কারণ চলকগুলির পাইথনে প্রকার নেই, শুধুমাত্র মানগুলি করে। কম্পাইলার দ্বারা সনাক্ত করা কোনও ধরনের ত্রুটিকে সিনট্যাক্স ত্রুটি বলা উচিত কিনা তা নিয়ে মতবিরোধ রয়েছে (স্ট্যাটিক শব্দার্থিক ত্রুটির পরিবর্তে), টাইপের ত্রুটিগুলি যা কেবল প্রোগ্রাম সম্পাদনের সময় সনাক্ত করা যায় তা সর্বদা সিনট্যাক্স ত্রুটির পরিবর্তে শব্দার্থিক হিসাবে বিবেচিত হয়। বাক্যবিন্যাসের সংজ্ঞা পাঠ্য প্রোগ্রামিং ভাষাগুলির বাক্যবিন্যাস সাধারণত নিয়মিত অভিব্যক্তি (আভিধানিক কাঠামোর জন্য) এবং ব্যাকাস-নৌর ফর্ম (ব্যাকরণগত কাঠামোর জন্য) এর সংমিশ্রণ ব্যবহার করে সংজ্ঞায়িত করা হয় যাতে বাক্যবিন্যাসের বিভাগগুলি (নন-টার্মিনাল) এবং টার্মিনাল চিহ্নগুলি অন্তর্বর্তীভাবে নির্দিষ্ট করা যায়। সিনট্যাক্টিক বিভাগগুলি প্রোডাকশন নামক নিয়ম দ্বারা সংজ্ঞায়িত করা হয়, যা একটি নির্দিষ্ট সিনট্যাক্টিক বিভাগের অন্তর্গত মানগুলি নির্দিষ্ট করে। টার্মিনাল চিহ্নগুলি হল সুনির্দিষ্ট অক্ষর বা অক্ষরের স্ট্রিং (উদাহরণস্বরূপ কীওয়ার্ড যেমন সংজ্ঞায়িত, যদি, যাক বা বাতিল) যা থেকে বাক্যবিন্যাসগতভাবে বৈধ প্রোগ্রাম তৈরি করা হয়। একটি ভাষার বিভিন্ন সমতুল্য ব্যাকরণ থাকতে পারে, যেমন সমতুল্য নিয়মিত অভিব্যক্তি (আভিধানিক স্তরে), বা বিভিন্ন বাক্যাংশের নিয়ম যা একই ভাষা তৈরি করে। এল. আর ব্যাকরণের মতো ব্যাকরণের একটি বিস্তৃত বিভাগ ব্যবহার করে, এল. এল ব্যাকরণের মতো আরও সীমাবদ্ধ বিভাগগুলির তুলনায় ছোট বা সহজ ব্যাকরণের অনুমতি দেওয়া যেতে পারে, যার জন্য আরও নিয়ম সহ দীর্ঘ ব্যাকরণের প্রয়োজন হতে পারে। বিভিন্ন কিন্তু সমতুল্য বাক্যাংশ ব্যাকরণগুলি বিভিন্ন পার্স ট্রি দেয়, যদিও অন্তর্নিহিত ভাষা (বৈধ নথির সেট) একই। উদাহরণস্বরূপঃ লিস্প এস-অভিব্যক্তি নীচে একটি সহজ ব্যাকরণ রয়েছে, যা নিয়মিত অভিব্যক্তি এবং বর্ধিত ব্যাকাস-নৌর ফর্মের স্বরলিপি ব্যবহার করে সংজ্ঞায়িত করা হয়েছে। এটি এস-এক্সপ্রেশন-এর সিনট্যাক্স বর্ণনা করে, যা প্রোগ্রামিং ভাষা লিস্প-এর একটি ডেটা সিনট্যাক্স, যা সিনট্যাক্টিক বিভাগগুলির এক্সপ্রেশন, পরমাণু, সংখ্যা, প্রতীক এবং তালিকার জন্য উৎপাদনকে সংজ্ঞায়িত করেঃ এক্সপ্রেশন = পরমাণু। তালিকা পরমাণু = সংখ্যা। প্রতীক সংখ্যা = [+-]? ['0'-'9'] + প্রতীক = ['এ'-'জেড'] ['এ'-'জেড' 0 '-' 9 ']। * তালিকা = '(', অভিব্যক্তি *, ')' এই ব্যাকরণটি নিম্নলিখিতগুলি নির্দিষ্ট করেঃ একটি অভিব্যক্তি হয় একটি পরমাণু বা একটি তালিকা; একটি পরমাণু হয় একটি সংখ্যা বা একটি প্রতীক; একটি সংখ্যা হল এক বা একাধিক দশমিক সংখ্যার একটি অবিচ্ছিন্ন ক্রম, যা ঐচ্ছিকভাবে একটি যোগ বা বিয়োগ চিহ্নের আগে থাকে; একটি প্রতীক হল একটি অক্ষর যার পরে যে কোনও অক্ষরের শূন্য বা তার বেশি থাকে (শ্বেতস্থান বাদে); এবং একটি তালিকা হল বন্ধনীর একটি মিলিত জোড়া, যার ভিতরে শূন্য বা তার বেশি অভিব্যক্তি থাকে। এখানে দশমিক সংখ্যা, বড় এবং ছোট অক্ষর এবং বন্ধনীগুলি প্রান্তিক প্রতীক। এই ব্যাকরণে সু-গঠিত টোকেন ক্রমের উদাহরণগুলি নিম্নরূপঃ '12345', '()', '(এ বি সি 232 (1))' জটিল ব্যাকরণ একটি প্রোগ্রামিং ভাষা নির্দিষ্ট করার জন্য প্রয়োজনীয় ব্যাকরণকে চমস্কি শ্রেণিবিন্যাসে তার অবস্থান দ্বারা শ্রেণীবদ্ধ করা যেতে পারে। বেশিরভাগ প্রোগ্রামিং ভাষার বাক্যাংশ ব্যাকরণ একটি টাইপ-2 ব্যাকরণ ব্যবহার করে নির্দিষ্ট করা যেতে পারে, অর্থাৎ, এগুলি প্রসঙ্গ-মুক্ত ব্যাকরণ, যদিও সামগ্রিক বাক্য গঠন প্রসঙ্গ-সংবেদনশীল (পরিবর্তনশীল ঘোষণা এবং নেস্টেড স্কোপের কারণে), তাই টাইপ-1। যাইহোক, ব্যতিক্রম আছে, এবং কিছু ভাষার জন্য ব্যাকরণ বাক্যাংশটি টাইপ-0 (টুরিং-সম্পূর্ণ)। পার্ল এবং লিস্পের মতো কিছু ভাষায় ভাষার নির্দিষ্টকরণ (বা বাস্তবায়ন) পার্সিং পর্যায়ে কার্যকর করার অনুমতি দেয়। উপরন্তু, এই ভাষাগুলির এমন গঠন রয়েছে যা প্রোগ্রামারকে পার্সারের আচরণ পরিবর্তন করতে দেয়। এই সংমিশ্রণটি কার্যকরভাবে পার্সিং এবং এক্সিকিউশনের মধ্যে পার্থক্যকে অস্পষ্ট করে এবং বাক্য গঠন বিশ্লেষণকে এই ভাষাগুলিতে একটি অনিবার্য সমস্যা করে তোলে, যার অর্থ পার্সিং পর্যায়টি শেষ নাও হতে পারে। উদাহরণস্বরূপ, পার্ল-এ একটি বি. ই. জি. আই. এন বিবৃতি ব্যবহার করে পার্স করার সময় কোড এক্সিকিউট করা সম্ভব, এবং পার্ল ফাংশন প্রোটোটাইপগুলি বাক্যবিন্যাসগত ব্যাখ্যাকে পরিবর্তন করতে পারে, এবং সম্ভবত অবশিষ্ট কোডের বাক্যবিন্যাসগত বৈধতাও। কথোপকথনে এটিকে "শুধুমাত্র পার্ল পার্ল বিশ্লেষণ করতে পারে" (কারণ কোডটি অবশ্যই বিশ্লেষণের সময় কার্যকর করতে হবে এবং ব্যাকরণ পরিবর্তন করতে পারে), বা আরও দৃঢ়ভাবে "এমনকি পার্লও পার্ল বিশ্লেষণ করতে পারে না" (কারণ এটি অনিশ্চিত) হিসাবে উল্লেখ করা হয়। একইভাবে, ডিফম্যাক্রো সিনট্যাক্স দ্বারা প্রবর্তিত লিস্প ম্যাক্রোগুলিও পার্সিংয়ের সময় কার্যকর হয়, যার অর্থ একটি লিস্প সংকলকের অবশ্যই একটি সম্পূর্ণ লিস্প রান-টাইম সিস্টেম উপস্থিত থাকতে হবে। বিপরীতে, সি ম্যাক্রো কেবল স্ট্রিং প্রতিস্থাপন, এবং কোড কার্যকর করার প্রয়োজন হয় না। সিনট্যাক্স বনাম শব্দার্থবিজ্ঞান একটি ভাষার সিনট্যাক্স একটি বৈধ প্রোগ্রামের রূপ বর্ণনা করে, তবে প্রোগ্রামের অর্থ বা সেই প্রোগ্রামটি কার্যকর করার ফলাফল সম্পর্কে কোনও তথ্য সরবরাহ করে না। প্রতীকগুলির সংমিশ্রণে প্রদত্ত অর্থ শব্দার্থবিদ্যা দ্বারা পরিচালিত হয় (রেফারেন্স বাস্তবায়নে আনুষ্ঠানিক বা হার্ড-কোডেড)। সমস্ত বাক্যবিন্যাসগতভাবে সঠিক প্রোগ্রাম শব্দার্থগতভাবে সঠিক নয়। অনেক বাক্যবিন্যাসগতভাবে সঠিক প্রোগ্রাম তবুও ভাষার নিয়ম অনুসারে অ-গঠিত; এবং (ভাষার নির্দিষ্টকরণ এবং বাস্তবায়নের সুস্থতার উপর নির্ভর করে) অনুবাদ বা সম্পাদনে ত্রুটির কারণ হতে পারে। কিছু ক্ষেত্রে, এই ধরনের প্রোগ্রামগুলি অনির্ধারিত আচরণ প্রদর্শন করতে পারে। এমনকি যখন কোনও প্রোগ্রাম কোনও ভাষার মধ্যে ভালভাবে সংজ্ঞায়িত করা হয়, তখনও এর এমন একটি অর্থ থাকতে পারে যা যে ব্যক্তি এটি লিখেছেন তার উদ্দেশ্য নয়। উদাহরণস্বরূপ প্রাকৃতিক ভাষা ব্যবহার করে, একটি ব্যাকরণগতভাবে সঠিক বাক্যের অর্থ নির্ধারণ করা সম্ভব নাও হতে পারে অথবা বাক্যটি মিথ্যা হতে পারেঃ "বর্ণহীন সবুজ ধারণাগুলি ক্রুদ্ধভাবে ঘুমায়"। ব্যাকরণগতভাবে ভালভাবে গঠিত তবে এর কোনও সাধারণভাবে গৃহীত অর্থ নেই। "জন একজন বিবাহিত ব্যাচেলর।" ব্যাকরণগতভাবে ভালভাবে গঠিত তবে এমন একটি অর্থ প্রকাশ করে যা সত্য হতে পারে না। নিম্নলিখিত সি ভাষার খণ্ডটি বাক্যবিন্যাসগতভাবে সঠিক, তবে এমন একটি ক্রিয়া সম্পাদন করে যা শব্দার্থগতভাবে সংজ্ঞায়িত নয় (কারণ এটি একটি নাল পয়েন্টার, ক্রিয়াকলাপ এবং এর কোনও অর্থ নেই): জটিল * পি = এনইউএলএল; জটিল অ্যাবস _ পি = এসকিউআরটি (পি-> বাস্তব * পি-> বাস্তব + পি-> আইএম * পি-> আইএম); একটি সহজ উদাহরণ হিসাবে, ইন্ট এক্স; প্রিন্টএফ ("% ডি", এক্স); বাক্যবিন্যাসগতভাবে বৈধ, তবে শব্দার্থগতভাবে সংজ্ঞায়িত নয়, কারণ এটি একটি আরম্ভহীন পরিবর্তনশীল ব্যবহার করে। যদিও কিছু প্রোগ্রামিং ভাষার সংকলক (যেমন, জাভা এবং সি #) এই ধরনের আরম্ভহীন পরিবর্তনশীল ত্রুটিগুলি সনাক্ত করবে, সেগুলিকে বাক্য গঠনগত ত্রুটির পরিবর্তে শব্দার্থগত ত্রুটি হিসাবে বিবেচনা করা উচিত। আরও দেখুন নামকরণ প্রথা (প্রোগ্রামিং) প্রোগ্রামিং ভাষার তুলনা (সিনট্যাক্স) বিভিন্ন প্রোগ্রামিং ভাষার সিনট্যাক্স দ্রুত তুলনা করার জন্য, "হ্যালো, ওয়ার্ল্ড!" তালিকাটি দেখুন। প্রোগ্রামের উদাহরণগুলিঃ প্রোলগ সিনট্যাক্স এবং শব্দার্থবিদ্যা পার্ল সিনট্যাক্স পিএইচপি সিনট্যাক্স এবং শব্দার্থবিদ্যা সি সিনট্যাক্স সি + + সিনট্যাক্স জাভা সিনট্যাক্স জাভাস্ক্রিপ্ট সিনট্যাক্স পাইথন সিনট্যাক্স এবং শব্দার্থবিদ্যা লুয়া সিনট্যাক্স হাস্কেল সিনট্যাক্স রেফারেন্স বাহ্যিক লিঙ্কগুলি কম্পিউটার প্রোগ্রামিং ভাষাগুলিতে ব্যবহৃত বিভিন্ন সিনট্যাক্টিক গঠন পাইথন ত্রুটি "আমদানি ত্রুটিঃ" কেন? কিভাবে? কমান্ড-লাইন? [সমাধান 2021] প্রোগ্রামিং ভাষার বিষয় সোর্স কোড