উত্তর:
সিনট্যাক্স ভাষাটির গঠন বা ব্যাকরণ সম্পর্কে । এটি প্রশ্নের উত্তর দেয়: আমি কীভাবে একটি কার্যকর বাক্যটি তৈরি করব? সমস্ত ভাষা, এমনকি ইংরেজি এবং অন্যান্য মানব (ওরফে "প্রাকৃতিক") ভাষাগুলিতে ব্যাকরণ রয়েছে, অর্থাত, বাক্যটি যথাযথভাবে নির্মিত হয়েছে কিনা তা নির্ধারণ করে এমন নিয়ম রয়েছে।
এখানে সি ভাষার কয়েকটি বাক্য গঠন নিয়ম রয়েছে:
শব্দার্থবিদ্যা বাক্যটির অর্থ সম্পর্কে । এটি প্রশ্নের উত্তর দেয়: এই বাক্যটি কি বৈধ? যদি তাই হয় তবে বাক্যের অর্থ কী? উদাহরণ স্বরূপ:
x++; // increment
foo(xyz, --b, &qrs); // call foo
সিনথেটিকভাবে বৈধ সি স্টেটমেন্ট। তবে তারা কী বোঝাতে চাইছে? এমনকি এই বিবৃতিগুলিকে নির্দেশের একটি কার্যকরযোগ্য অনুক্রমে রূপান্তর করার চেষ্টা করা কি বৈধ? এই প্রশ্নগুলি শব্দার্থবিজ্ঞানের কেন্দ্রবিন্দুতে রয়েছে।
প্রথম বিবৃতিতে ++ অপারেটরটি বিবেচনা করুন। প্রথমত, এটি চেষ্টা করা কি বৈধ?
শেষ অবধি, লক্ষ্য করুন যে কয়েকটি শব্দার্থবিজ্ঞান সংকলন সময়ে নির্ধারণ করা যায় না এবং তাই রান-টাইমে অবশ্যই মূল্যায়ন করা উচিত। ++ অপারেটরের উদাহরণে, x যদি এর ডেটা টাইপের সর্বাধিক মান থেকে থাকে তবে আপনি এটিতে 1 যুক্ত করার চেষ্টা করলে কি হবে? আরেকটি উদাহরণ: যদি আপনার প্রোগ্রামটি এমন কোনও পয়েন্টারকে মূল্য দিতে হয় যার মান NUL হয়?
সংক্ষেপে, বাক্য গঠনটি এমন ধারণা যা ভাষার ব্যাকরণের জন্য বাক্যটি বৈধ কিনা কেবল তা নিজেই উদ্বেগ প্রকাশ করে। শব্দার্থটির বাক্যটির বৈধ অর্থ আছে কি না তা নিয়ে রয়েছে।
x
এটির ডেটার সর্বাধিক মান 1
হয় এবং এটিতে যোগ করা হয় তবে এর ফলে কিছু অদ্ভুত আউটপুট আসে ( 0
), এটি কী অর্থগত ত্রুটি নয়?
UINT_MAX + 1 == 0
) হিসাবে সংজ্ঞায়িত করা হয় । স্বাক্ষরিত ওভারফ্লো অপরিশোধিত। আধুনিক কম্পাইলার সাধারণত আছে INT_MAX + 1 == INT_MIN
, কিন্তু সেখানে মামলা এই নির্ভর করতে পারে না (যেমন হয় for (i = 0; i <= N; ++i) { ... }
যেখানে N
হয় INT_MAX
অপ্টিমাইজেশান উপর নির্ভর করে অসীম নয়; দেখতে blog.llvm.org/2011/05/what-every-c-programmer-should-know। এইচটিএমএল )।
সিনট্যাক্স একটি ভাষার কাঠামোকে বোঝায়, কীভাবে জিনিসগুলিকে একসাথে রাখা হয় তা সম্পর্কিত তার ব্যুৎপত্তিটি সনাক্ত করে।
উদাহরণস্বরূপ, আপনাকে সিন্টেক্সটিক্যালি সঠিক হওয়ার জন্য কোনও প্রকারের নাম, পরে একটি নাম এবং পরে একটি সেমিকোলন ঘোষণার মাধ্যমে কোডটি একসাথে রাখার প্রয়োজন হতে পারে।
Type token;
অন্যদিকে, শব্দার্থক অর্থ সম্পর্কে। একটি সংকলক বা দোভাষা সিনট্যাক্স ত্রুটি সম্পর্কে অভিযোগ করতে পারে। আপনার সহকর্মীরা শব্দার্থবিজ্ঞানের বিষয়ে অভিযোগ করবেন।
উইকিপিডিয়া এর উত্তর আছে। পড়ুন সিনট্যাক্স (প্রোগ্রামিং ভাষা) ও শব্দার্থবিদ্যা (কম্পিউটার বিজ্ঞান) wikipages।
অথবা যে কোনও সংকলক বা দোভাষীর কাজ সম্পর্কে ভাবেন । প্রথম পদক্ষেপটি লেক্সিকাল এনালাইসিস যেখানে টোকেনগুলি লেক্সেমিতে স্ট্রিংকে পার্সিং করে পার্সিংয়ের মাধ্যমে উত্পাদিত হয় যা কিছু বিমূর্ত সিনট্যাক্স ট্রি তৈরি করে (যা সিনট্যাক্সের উপস্থাপনা)। পরবর্তী পদক্ষেপগুলির মধ্যে এই এএসটি (শব্দার্থক) রূপান্তর করা বা মূল্যায়ন করা জড়িত।
এছাড়াও, পালন যে আপনি যদি C- এর একটি বৈকল্পিক যেখানে প্রত্যেক শব্দ তার ফরাসি সমতুল্য রুপান্তরিত হল সংজ্ঞায়িত (তাই if
হয়ে উঠছে si
, do
উঠছে faire
, else
উঠছে sinon
ইত্যাদি ইত্যাদি ...) আপনি স্পষ্টভাবে আপনার ভাষার সিনট্যাক্স পরিবর্তন হবে, কিন্তু আপনি অনেক পরিবর্তন করবে না শব্দার্থবিজ্ঞান: ফরাসি-সি তে প্রোগ্রামিং সহজ হবে না!
শব্দার্থবিজ্ঞান হ'ল আপনার কোডটির অর্থ - আপনি সিউডো কোডে কী বর্ণনা করতে পারেন। সিনট্যাক্স হ'ল আসল কাঠামো - ভেরিয়েবলের নাম থেকে শুরু করে আধা-কোলন পর্যন্ত সমস্ত কিছু।
বাক্য গঠন, বিবৃতি এবং প্রোগ্রাম ইউনিটগুলির গঠন বা রূপটি সিন্ট্যাক্স তবে শব্দার্থক শব্দগুলি সেই অভিব্যক্তি, বিবৃতি এবং প্রোগ্রাম ইউনিটের অর্থ। শব্দার্থবিজ্ঞানগুলি সিনট্যাক্স থেকে সরাসরি অনুসরণ করে । সিনট্যাক্স কোডের কাঠামো / ফর্মকে বোঝায় যা একটি নির্দিষ্ট প্রোগ্রামিং ভাষা নির্দিষ্ট করে তবে শব্দার্থক চিহ্নগুলি, চরিত্রগুলি এবং শব্দের সাথে অর্পিত অর্থটি বোঝায়।
সিনট্যাক্স একটি প্রোগ্রামিং ভাষা তার এক্সপ্রেশন, বিবৃতি, এবং প্রোগ্রাম ইউনিট ফর্ম। এর শব্দার্থক শব্দগুলি হল সেই অভিব্যক্তি, বিবৃতি এবং প্রোগ্রাম ইউনিটের অর্থ। উদাহরণস্বরূপ, জাভাটির বাক্য গঠনটি যখন স্টেটমেন্ট হয়
while (boolean_expr) statement
এই বিবৃতি ফর্মের শব্দার্থবিজ্ঞান হ'ল বুলিয়ান এক্সপ্রেশনটির বর্তমান মানটি সত্য হলে এমবেডেড স্টেটমেন্টটি কার্যকর করা হয়। তারপরে নিয়ন্ত্রণটি স্পষ্টভাবে প্রক্রিয়াটির পুনরাবৃত্তি করতে বুলিয়ান এক্সপ্রেশনটিতে ফিরে আসে। বুলিয়ান এক্সপ্রেশনটি মিথ্যা হলে, নির্মাণের পরে নিম্নলিখিত বিবৃতিতে নিয়ন্ত্রণ স্থানান্তর করে।
সিনট্যাক্স: এটি ভাষার ব্যাকরণগত কাঠামোর কথা উল্লেখ করছে .. আপনি যদি সি ভাষা লিখছেন। আপনাকে ডেটা ধরণের, টোকেনগুলি ব্যবহার করতে খুব যত্ন নিতে হবে [এটি আক্ষরিক বা "প্রিন্টফ ()" এর মতো প্রতীক হতে পারে। এটির 3 টি টোকস রয়েছে, "প্রিন্টফ, (,)"]। একইভাবে, আপনাকে খুব সতর্কতা অবলম্বন করতে হবে, আপনি কীভাবে ফাংশন, ফাংশন সিনট্যাক্স, ফাংশন ডিক্লেয়ারেশন, সংজ্ঞা, আরম্ভ এবং এর কলিং ব্যবহার করেন।
শব্দার্থবিজ্ঞানের সময়, এটি যুক্তি বা বাক্য বা বক্তব্যগুলির ধারণার সাথে সম্পর্কিত। আপনি যদি ধারণা বা যুক্তিযুক্ত কিছু বলছেন বা লিখছেন, তবে আপনি শব্দার্থগতভাবে ভুল।
সাধারণত, কোডটির বাক্য গঠন এবং শব্দার্থবিজ্ঞান বিশ্লেষণ সংকলকটির 'সম্মুখভাগ' অংশে করা হয়।
সিনট্যাক্স: সংকলক প্রতিটি কীওয়ার্ড এবং চিহ্নগুলির জন্য টোকেন উত্পন্ন করে: টোকেনে কোডের তথ্য-টাইপ এবং এর অবস্থান ধারণ করে। এই টোকেনগুলি ব্যবহার করে একটি এএসটি (বিমূর্ত সিনট্যাক্স গাছের জন্য সংক্ষিপ্ত) তৈরি এবং বিশ্লেষণ করা হয়। এখানে কোন সংকলক প্রকৃতপক্ষে যাচাই করে তা হল কোডটি বর্ণিতভাবে অর্থবহ অর্থাত্ কি 'কীওয়ার্ডের ক্রম' ভাষার নিয়ম মেনে চলে? পূর্ববর্তী উত্তরের পরামর্শ অনুসারে, আপনি এটিকে ভাষার ব্যাকরণ হিসাবে দেখতে পারেন (কোডটির অর্থে / অর্থ নয়)। পার্শ্ব নোট: সিন্ট্যাক্স ত্রুটিগুলি এই পর্যায়ে রিপোর্ট করা হয়েছে। (সিস্টেমে ত্রুটির ধরণের টোকেনগুলি ফেরত দেয়)
শব্দার্থবিজ্ঞান: এখন, সংকলকটি আপনার কোড অপারেশনগুলি 'অর্থবোধ করে' তা পরীক্ষা করবে। উদাহরণস্বরূপ ভাষা যদি টাইপ ইনফারেন্সকে সমর্থন করে, আপনি যদি একটি ফ্লোটকে স্ট্রিং বরাদ্দ করার চেষ্টা করছেন তবে সেমেটিক ত্রুটি জানানো হবে। বা একই ভেরিয়েবলটি দু'বার ঘোষণা করছে। এগুলি ত্রুটিগুলি যা 'ব্যাকরণগতভাবে' / সিন্টেক্সিয়ালি সঠিক, তবে অপারেশনের সময় কোনও অর্থ দেয় না। পার্শ্ব দ্রষ্টব্য: একই চলকটি দু'বার ঘোষিত হয়েছে কিনা তা যাচাই করার জন্য, সংকলক একটি প্রতীক টেবিল পরিচালনা করে
সুতরাং, এই 2 টি ফ্রন্টএন্ড পর্যায়গুলির আউটপুট হ'ল একটি টিকাশিত এএসটি (ডেটা টাইপ সহ) এবং প্রতীক টেবিল।
আমরা যে সাধারণ ভাষা ব্যবহার করি তা বিবেচনা করে; এখানে, ইংরেজি:
যেমন সে স্কুলে যায়। - ভুল ব্যাকরণ / বাক্য গঠন, যদিও তিনি একটি সঠিক জ্ঞান / শব্দার্থক বোঝাতে চেয়েছিলেন।
যেমন সে ঠান্ডায় যায়। - ঠান্ডা একটি বিশেষণ। ইংরেজী ভাষায়, আমরা বলতে পারি যে এটি ব্যাকরণের সাথে সম্মতি দেয় না, তবে এটি আসলে সঠিক সিনট্যাক্সের সাথে ভুল ধারণাটির সঠিক ধারণা যা আমি ভাবতে পারি তার নিকটতম উদাহরণ।