প্রোগ্রামিং ভাষাগুলিতে সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের মধ্যে পার্থক্য কী?


120

প্রোগ্রামিং ভাষার (সি, সি ++ এর মতো) সিনট্যাক্স এবং শব্দার্থবিজ্ঞানের মধ্যে পার্থক্য কী ?


2
আমি ভোট দিতে চাই তবে কোনও গবেষণার প্রচেষ্টা স্পষ্ট হয় না।
নাল

উত্তর:


201

সিনট্যাক্স ভাষাটির গঠন বা ব্যাকরণ সম্পর্কে । এটি প্রশ্নের উত্তর দেয়: আমি কীভাবে একটি কার্যকর বাক্যটি তৈরি করব? সমস্ত ভাষা, এমনকি ইংরেজি এবং অন্যান্য মানব (ওরফে "প্রাকৃতিক") ভাষাগুলিতে ব্যাকরণ রয়েছে, অর্থাত, বাক্যটি যথাযথভাবে নির্মিত হয়েছে কিনা তা নির্ধারণ করে এমন নিয়ম রয়েছে।

এখানে সি ভাষার কয়েকটি বাক্য গঠন নিয়ম রয়েছে:

  • একটি আধা-কোলনের সাথে পৃথক বিবৃতি
  • প্রথম বন্ধনীর ভিতরে আইএফ স্টেটমেন্টের শর্তসাপেক্ষ প্রকাশটি বন্ধ করুন
  • কোঁকড়া ধনুর্বন্ধনী বন্ধন করে একক বিবৃতিতে একাধিক বিবৃতি গ্রুপ
  • প্রথম এক্সিকিউটেবল স্টেটমেন্টের আগে ডেটা ধরণের এবং ভেরিয়েবলগুলি অবশ্যই ঘোষণা করতে হবে (এই বৈশিষ্ট্যটি C99 এ বাদ দেওয়া হয়েছে। C99 এবং পরে মিশ্র প্রকারের ঘোষণার অনুমতি দেয়।)

শব্দার্থবিদ্যা বাক্যটির অর্থ সম্পর্কে । এটি প্রশ্নের উত্তর দেয়: এই বাক্যটি কি বৈধ? যদি তাই হয় তবে বাক্যের অর্থ কী? উদাহরণ স্বরূপ:

x++;                  // increment
foo(xyz, --b, &qrs);  // call foo

সিনথেটিকভাবে বৈধ সি স্টেটমেন্ট। তবে তারা কী বোঝাতে চাইছে? এমনকি এই বিবৃতিগুলিকে নির্দেশের একটি কার্যকরযোগ্য অনুক্রমে রূপান্তর করার চেষ্টা করা কি বৈধ? এই প্রশ্নগুলি শব্দার্থবিজ্ঞানের কেন্দ্রবিন্দুতে রয়েছে।

প্রথম বিবৃতিতে ++ অপারেটরটি বিবেচনা করুন। প্রথমত, এটি চেষ্টা করা কি বৈধ?

  • X যদি একটি ফ্লোট ডেটা টাইপ হয় তবে এই বিবৃতিটির কোনও অর্থ নেই (সি ভাষার নিয়ম অনুসারে) এবং সুতরাং এটি বিবৃতিটি সিন্টেক্সিকভাবে সঠিক হলেও এটি একটি ত্রুটি
  • যদি এক্স কিছু ডেটা টাইপের পয়েন্টার হয় তবে বিবৃতিটির অর্থ " অ্যাড্রেস এক্স এর মানের সাথে মাপের ( কিছু উপাত্তের টাইপ ) যুক্ত করা এবং ফলাফল এক্সের ঠিকানায় অবস্থানে সংরক্ষণ করা"।
  • যদি এক্স একটি স্কেলার হয় তবে বিবৃতিটির অর্থ "অ্যাড্রেস এক্সের মানটিতে একটি যুক্ত করুন এবং ফলাফলটি ঠিকানার এক্সে অবস্থিতি সংরক্ষণ করুন"।

শেষ অবধি, লক্ষ্য করুন যে কয়েকটি শব্দার্থবিজ্ঞান সংকলন সময়ে নির্ধারণ করা যায় না এবং তাই রান-টাইমে অবশ্যই মূল্যায়ন করা উচিত। ++ অপারেটরের উদাহরণে, x যদি এর ডেটা টাইপের সর্বাধিক মান থেকে থাকে তবে আপনি এটিতে 1 যুক্ত করার চেষ্টা করলে কি হবে? আরেকটি উদাহরণ: যদি আপনার প্রোগ্রামটি এমন কোনও পয়েন্টারকে মূল্য দিতে হয় যার মান NUL হয়?

সংক্ষেপে, বাক্য গঠনটি এমন ধারণা যা ভাষার ব্যাকরণের জন্য বাক্যটি বৈধ কিনা কেবল তা নিজেই উদ্বেগ প্রকাশ করে। শব্দার্থটির বাক্যটির বৈধ অর্থ আছে কি না তা নিয়ে রয়েছে।


ঠিক আছে. যদি xএটির ডেটার সর্বাধিক মান 1হয় এবং এটিতে যোগ করা হয় তবে এর ফলে কিছু অদ্ভুত আউটপুট আসে ( 0), এটি কী অর্থগত ত্রুটি নয়?
হ্যাকস

যানবাহনের একটি ওডোমিটার বিবেচনা করুন - এটির প্রতিটিটিতে মুদ্রিত 0 থেকে 9 অঙ্কের সাথে আন্তঃবিবাহিত চাকাগুলির একটি সিরিজ রয়েছে। ডানদিকের চাকা দ্রুততম ঘোরে; যখন এটি 9 থেকে শূন্যে জড়িয়ে যায়, চাকাটি তার তাত্ক্ষণিক বাম দিকে এগিয়ে যায় one যখন এই চাকাটি 9 থেকে 0 পর্যন্ত অগ্রসর হয়, তখন তার বাম দিকে অগ্রসর হওয়া ইত্যাদি।
জেফ এন

একটি ডেটাটাইপ হ'ল ওডোমিটারের চাকার মতো: এটি কেবল একটি নির্দিষ্ট মান ধরে রাখতে পারে। যখন সর্বোচ্চ মান পৌঁছে যায়, পরবর্তী অগ্রিম চাকাটি শূন্যে ফিরে আসে। এটি একটি অর্থপূর্ণ ত্রুটি কিনা তা নিয়মের উপর নির্ভর করে। এই ক্ষেত্রে, আপনাকে সি ভাষার মানটি উল্লেখ করতে হবে। সি ভাষার মানটি ঠিক কী বলে আমি জানি না, তবে এখানে কয়েকটি বিকল্প রয়েছে। ওভারফ্লো হ'ল: ত্রুটি নয়; ফলাফল শূন্য। -একটি ভুল; সংকলকটি একটি ওভারফ্লো ব্যতিক্রম উত্পন্ন করতে হবে। সংজ্ঞায়িত; সংকলকটি যা চায় তা করতে নির্দ্বিধায়।
জেফ এন

2
যদি কেউ নির্দিষ্ট উদাহরণের বিষয়ে চিন্তা করে তবে স্বাক্ষরযুক্ত ওভারফ্লোটি মডুলার পাটিগণিত (তাই 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। এইচটিএমএল )।
ড্যানিয়েল এইচ

"দ্রষ্টব্য যে কয়েকটি শব্দার্থবিজ্ঞানের সংকলন সময়ে নির্ধারণ করা যায় না এবং তাই রান-টাইমে অবশ্যই মূল্যায়ন করা উচিত" - আমি পছন্দ করি যে এটি কীভাবে প্রাকৃতিক ভাষার সমান্তরাল রয়েছে। আপনি প্রসঙ্গ ব্যতীত কিছু বাক্যাংশের অর্থ জানতে পারবেন না। উদাহরণস্বরূপ, "তিনি কলা পছন্দ করেন" এই বাক্যটিতে "তিনি" এর অর্থ প্রসঙ্গে নির্ভর করে।
yMLn

21

সিনট্যাক্স একটি ভাষার কাঠামোকে বোঝায়, কীভাবে জিনিসগুলিকে একসাথে রাখা হয় তা সম্পর্কিত তার ব্যুৎপত্তিটি সনাক্ত করে।
উদাহরণস্বরূপ, আপনাকে সিন্টেক্সটিক্যালি সঠিক হওয়ার জন্য কোনও প্রকারের নাম, পরে একটি নাম এবং পরে একটি সেমিকোলন ঘোষণার মাধ্যমে কোডটি একসাথে রাখার প্রয়োজন হতে পারে।

Type token;

অন্যদিকে, শব্দার্থক অর্থ সম্পর্কে। একটি সংকলক বা দোভাষা সিনট্যাক্স ত্রুটি সম্পর্কে অভিযোগ করতে পারে। আপনার সহকর্মীরা শব্দার্থবিজ্ঞানের বিষয়ে অভিযোগ করবেন।


কাঠামোর পরিবর্তে @ টলেসপিন_কিট অর্থ: যুক্তি আরও বিমূর্ততা যেমন পি => কিউ, ইত্যাদি! 'আমি না আন-খুশি "! =" আমি খুশি "
ডক্টরলভ

5
"1 এর জন্য" একটি সংকলক বা দোভাষা সিনট্যাক্স ত্রুটি সম্পর্কে অভিযোগ করতে পারে Your আপনার সহকর্মীরা শব্দার্থবিজ্ঞানের বিষয়ে অভিযোগ করবেন ""
গিকিজে

11

উইকিপিডিয়া এর উত্তর আছে। পড়ুন সিনট্যাক্স (প্রোগ্রামিং ভাষা)শব্দার্থবিদ্যা (কম্পিউটার বিজ্ঞান) wikipages।

অথবা যে কোনও সংকলক বা দোভাষীর কাজ সম্পর্কে ভাবেন । প্রথম পদক্ষেপটি লেক্সিকাল এনালাইসিস যেখানে টোকেনগুলি লেক্সেমিতে স্ট্রিংকে পার্সিং করে পার্সিংয়ের মাধ্যমে উত্পাদিত হয় যা কিছু বিমূর্ত সিনট্যাক্স ট্রি তৈরি করে (যা সিনট্যাক্সের উপস্থাপনা)। পরবর্তী পদক্ষেপগুলির মধ্যে এই এএসটি (শব্দার্থক) রূপান্তর করা বা মূল্যায়ন করা জড়িত।

এছাড়াও, পালন যে আপনি যদি C- এর একটি বৈকল্পিক যেখানে প্রত্যেক শব্দ তার ফরাসি সমতুল্য রুপান্তরিত হল সংজ্ঞায়িত (তাই ifহয়ে উঠছে si, doউঠছে faire, elseউঠছে sinonইত্যাদি ইত্যাদি ...) আপনি স্পষ্টভাবে আপনার ভাষার সিনট্যাক্স পরিবর্তন হবে, কিন্তু আপনি অনেক পরিবর্তন করবে না শব্দার্থবিজ্ঞান: ফরাসি-সি তে প্রোগ্রামিং সহজ হবে না!


8

শব্দার্থবিজ্ঞান হ'ল আপনার কোডটির অর্থ - আপনি সিউডো কোডে কী বর্ণনা করতে পারেন। সিনট্যাক্স হ'ল আসল কাঠামো - ভেরিয়েবলের নাম থেকে শুরু করে আধা-কোলন পর্যন্ত সমস্ত কিছু।


এটা কি বিভিন্ন মানুষের মধ্যে কথোপকথন? নাকি এটি কেবল একটি পদ? আমি পাই না। উদাহরণস্বরূপ "নিম্নলিখিতটির অর্থ কী বোঝার তা ধারণা নেই It এটি আরও ভুল হতে পারে না"।
ডাবলআর্ট

5

বাক্য গঠন, বিবৃতি এবং প্রোগ্রাম ইউনিটগুলির গঠন বা রূপটি সিন্ট্যাক্স তবে শব্দার্থক শব্দগুলি সেই অভিব্যক্তি, বিবৃতি এবং প্রোগ্রাম ইউনিটের অর্থ। শব্দার্থবিজ্ঞানগুলি সিনট্যাক্স থেকে সরাসরি অনুসরণ করে । সিনট্যাক্স কোডের কাঠামো / ফর্মকে বোঝায় যা একটি নির্দিষ্ট প্রোগ্রামিং ভাষা নির্দিষ্ট করে তবে শব্দার্থক চিহ্নগুলি, চরিত্রগুলি এবং শব্দের সাথে অর্পিত অর্থটি বোঝায়।


5
  • সংকলনের জন্য আপনার সঠিক বাক্য গঠন প্রয়োজন ।
  • এটি কার্যকর করতে আপনার সঠিক শব্দার্থবিজ্ঞানের প্রয়োজন ।

1

সিনট্যাক্স একটি প্রোগ্রামিং ভাষা তার এক্সপ্রেশন, বিবৃতি, এবং প্রোগ্রাম ইউনিট ফর্ম। এর শব্দার্থক শব্দগুলি হল সেই অভিব্যক্তি, বিবৃতি এবং প্রোগ্রাম ইউনিটের অর্থ। উদাহরণস্বরূপ, জাভাটির বাক্য গঠনটি যখন স্টেটমেন্ট হয়

while (boolean_expr) statement

এই বিবৃতি ফর্মের শব্দার্থবিজ্ঞান হ'ল বুলিয়ান এক্সপ্রেশনটির বর্তমান মানটি সত্য হলে এমবেডেড স্টেটমেন্টটি কার্যকর করা হয়। তারপরে নিয়ন্ত্রণটি স্পষ্টভাবে প্রক্রিয়াটির পুনরাবৃত্তি করতে বুলিয়ান এক্সপ্রেশনটিতে ফিরে আসে। বুলিয়ান এক্সপ্রেশনটি মিথ্যা হলে, নির্মাণের পরে নিম্নলিখিত বিবৃতিতে নিয়ন্ত্রণ স্থানান্তর করে।


1

সিনট্যাক্স: এটি ভাষার ব্যাকরণগত কাঠামোর কথা উল্লেখ করছে .. আপনি যদি সি ভাষা লিখছেন। আপনাকে ডেটা ধরণের, টোকেনগুলি ব্যবহার করতে খুব যত্ন নিতে হবে [এটি আক্ষরিক বা "প্রিন্টফ ()" এর মতো প্রতীক হতে পারে। এটির 3 টি টোকস রয়েছে, "প্রিন্টফ, (,)"]। একইভাবে, আপনাকে খুব সতর্কতা অবলম্বন করতে হবে, আপনি কীভাবে ফাংশন, ফাংশন সিনট্যাক্স, ফাংশন ডিক্লেয়ারেশন, সংজ্ঞা, আরম্ভ এবং এর কলিং ব্যবহার করেন।

শব্দার্থবিজ্ঞানের সময়, এটি যুক্তি বা বাক্য বা বক্তব্যগুলির ধারণার সাথে সম্পর্কিত। আপনি যদি ধারণা বা যুক্তিযুক্ত কিছু বলছেন বা লিখছেন, তবে আপনি শব্দার্থগতভাবে ভুল।


1

সংকলক কোডটি কীভাবে দেখে তা বোঝা

সাধারণত, কোডটির বাক্য গঠন এবং শব্দার্থবিজ্ঞান বিশ্লেষণ সংকলকটির 'সম্মুখভাগ' অংশে করা হয়।

  • সিনট্যাক্স: সংকলক প্রতিটি কীওয়ার্ড এবং চিহ্নগুলির জন্য টোকেন উত্পন্ন করে: টোকেনে কোডের তথ্য-টাইপ এবং এর অবস্থান ধারণ করে। এই টোকেনগুলি ব্যবহার করে একটি এএসটি (বিমূর্ত সিনট্যাক্স গাছের জন্য সংক্ষিপ্ত) তৈরি এবং বিশ্লেষণ করা হয়। এখানে কোন সংকলক প্রকৃতপক্ষে যাচাই করে তা হল কোডটি বর্ণিতভাবে অর্থবহ অর্থাত্ কি 'কীওয়ার্ডের ক্রম' ভাষার নিয়ম মেনে চলে? পূর্ববর্তী উত্তরের পরামর্শ অনুসারে, আপনি এটিকে ভাষার ব্যাকরণ হিসাবে দেখতে পারেন (কোডটির অর্থে / অর্থ নয়)। পার্শ্ব নোট: সিন্ট্যাক্স ত্রুটিগুলি এই পর্যায়ে রিপোর্ট করা হয়েছে। (সিস্টেমে ত্রুটির ধরণের টোকেনগুলি ফেরত দেয়)

  • শব্দার্থবিজ্ঞান: এখন, সংকলকটি আপনার কোড অপারেশনগুলি 'অর্থবোধ করে' তা পরীক্ষা করবে। উদাহরণস্বরূপ ভাষা যদি টাইপ ইনফারেন্সকে সমর্থন করে, আপনি যদি একটি ফ্লোটকে স্ট্রিং বরাদ্দ করার চেষ্টা করছেন তবে সেমেটিক ত্রুটি জানানো হবে। বা একই ভেরিয়েবলটি দু'বার ঘোষণা করছে। এগুলি ত্রুটিগুলি যা 'ব্যাকরণগতভাবে' / সিন্টেক্সিয়ালি সঠিক, তবে অপারেশনের সময় কোনও অর্থ দেয় না। পার্শ্ব দ্রষ্টব্য: একই চলকটি দু'বার ঘোষিত হয়েছে কিনা তা যাচাই করার জন্য, সংকলক একটি প্রতীক টেবিল পরিচালনা করে

সুতরাং, এই 2 টি ফ্রন্টএন্ড পর্যায়গুলির আউটপুট হ'ল একটি টিকাশিত এএসটি (ডেটা টাইপ সহ) এবং প্রতীক টেবিল।

এটি কম প্রযুক্তিগত উপায়ে বোঝা

আমরা যে সাধারণ ভাষা ব্যবহার করি তা বিবেচনা করে; এখানে, ইংরেজি:

যেমন সে স্কুলে যায়। - ভুল ব্যাকরণ / বাক্য গঠন, যদিও তিনি একটি সঠিক জ্ঞান / শব্দার্থক বোঝাতে চেয়েছিলেন।

যেমন সে ঠান্ডায় যায়। - ঠান্ডা একটি বিশেষণ। ইংরেজী ভাষায়, আমরা বলতে পারি যে এটি ব্যাকরণের সাথে সম্মতি দেয় না, তবে এটি আসলে সঠিক সিনট্যাক্সের সাথে ভুল ধারণাটির সঠিক ধারণা যা আমি ভাবতে পারি তার নিকটতম উদাহরণ।


সংকলকগণ এই লিঙ্কটি আরও
জানার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.