আমি সবসময়ই ভেবেছিলাম যে কোনও ভাষার বাক্য গঠনকে উল্লেখ করা কোনও ভাষার শব্দার্থকে বোঝার মতোই। তবে আমাকে জানিয়ে দেওয়া হয়েছে যে আপাতদৃষ্টিতে এটি তেমন নয়। পার্থক্য কি?
আমি সবসময়ই ভেবেছিলাম যে কোনও ভাষার বাক্য গঠনকে উল্লেখ করা কোনও ভাষার শব্দার্থকে বোঝার মতোই। তবে আমাকে জানিয়ে দেওয়া হয়েছে যে আপাতদৃষ্টিতে এটি তেমন নয়। পার্থক্য কি?
উত্তর:
শব্দার্থবিজ্ঞান ~ অর্থ
সিনট্যাক্স ~ প্রতীকী উপস্থাপনা
সুতরাং বিভিন্ন ভাষায় লেখা দুটি প্রোগ্রাম একই জিনিস (শব্দার্থবিজ্ঞান) করতে পারে তবে প্রোগ্রামটি লেখার জন্য ব্যবহৃত চিহ্নগুলি আলাদা (সিনট্যাক্স) হতে পারে।
একটি সংকলক আপনার জন্য সিনট্যাক্স পরীক্ষা করবে (সংকলন-সময় ত্রুটিগুলি) এবং ভাষার বিধিগুলি থেকে শব্দার্থ আবিষ্কার করবে (মেশিনের নির্দেশাবলীতে সিনট্যাক্স ম্যাপিং বলে), তবে সমস্ত শব্দার্থক ত্রুটিগুলি খুঁজে পাবে না (রান-টাইম ত্রুটিগুলি, যেমন গণনা করা হচ্ছে) ভুল ফলাফল কারণ কোড বলায় 2 যোগ করার পরিবর্তে 1 যোগ করুন)।
x + y
যেখানে +
এই অপারেশনগুলির জন্য কোনও উপযুক্ত অপারেটর নেই )। 2 এর পরিবর্তে 1 যোগ করা যাকে আমি লজিক্যাল ত্রুটি বলি ।
আসলে দুটি স্তর নয় তিনটি রয়েছে:
i
এবং f
উত্পন্ন করে if
)if
, (
, 42
, ==
, answer
এবং )
একটি শর্তাধীন বিবৃতি উত্পাদন করে)ValidIdentifier
টার্মিনাল থাকবে, যা এমন কিছু হিসাবে সংজ্ঞায়িত করা যেতে পারে ![AnyKeyword] [Identifier]
(আমি এখানে পিইজি-জাতীয় স্বরলিপি ব্যবহার করছি)। এই জাতীয় ভাষার জন্য আপনার আলাদা লেক্সিং পাসের দরকার নেই। উদাহরণস্বরূপ, জিএলআর-ভিত্তিক সি ++ পার্সারগুলি দেখুন।
শব্দার্থবিজ্ঞান একটি প্রোগ্রামিং ভাষার যৌক্তিক সত্তা এবং তাদের মিথস্ক্রিয়াগুলি বর্ণনা করে। সিনট্যাক্স নির্ধারণ করে যে কীভাবে এগুলি অক্ষরে প্রকাশ করা হয়।
উদাহরণস্বরূপ, পয়েন্টার পাটিগণিতের ধারণা সি এর শব্দার্থবিজ্ঞানের অংশ; পয়েন্টার অপারেশনগুলি প্রকাশ করার জন্য +
এবং -
অপারেটরগুলি যেভাবে ব্যবহার করা যেতে পারে তার সিনট্যাক্সের অংশ।
কখনও কখনও, দুটি ভাষাগুলি তাদের শব্দার্থবিজ্ঞানের অংশ ভাগ করে, তবে বাক্য গঠনটি ভিন্নভাবে পৃথক হয় (উদাহরণস্বরূপ সি # এবং ভিবি.এনইটি - উভয়ই মান ধরণের এবং রেফারেন্সের ধরণ ব্যবহার করে, তবে আপনি যে অক্ষরগুলি সংজ্ঞাতে টাইপ করেন তা আলাদা হয়); অন্যান্য ক্ষেত্রে দুটি ভাষাগুলি সিনথেটিকভাবে সমান, তবে শব্দার্থবিজ্ঞানের মিল মেলে না (জাভা বনাম জাভা স্ক্রিপ্ট বিবেচনা করুন, যেখানে মিলগুলি প্রায়শই প্রাথমিকভাবে বিভ্রান্ত করে)।
সিন্ট্যাক্স হ'ল আপনি কীভাবে কোনও ভাষার টোকেনগুলি সাজান। শব্দার্থক শব্দগুলি সেই টোকেনগুলি যা বোঝায় (সাধারণত, টোকেনগুলির একটি নির্দিষ্ট বিন্যাসের অর্থ কী)।
আপনি কেবল প্রোগ্রামিং ভাষা বা প্রোগ্রামিংয়ে ব্যবহৃত সাধারণ ভাষাগুলির উল্লেখ করেন কিনা তা আপনি নির্দিষ্ট করেননি, সুতরাং আমার উত্তরটি ডেটা ভাষাগুলি সম্পর্কে (যেমন এক্সএমএল, আরডিএফ, ডেটা টাইপ সিস্টেম ইত্যাদি):
ব্রায়ান এল। মেক ভাষা-স্বাধীন মান (১৯৯৫) তৈরির জন্য তার সাতটি সোনার নিয়মে লিখেছেন যে "একটি ভাষার বাক্য গঠনটি অন্যের শব্দার্থক হতে পারে" । তিনি ডেটা বর্ণনায় ব্যবহৃত শব্দ "সিনট্যাক্স" এবং "শব্দার্থক" উল্লেখ করেছেন: সুতরাং আপনি যদি কিছু ডেটা ফর্ম্যাটের নির্দিষ্টকরণে এই শব্দগুলিতে হোঁচট খেয়ে থাকেন তবে আপনার অবশ্যই কাজ করা আবশ্যক তা পরিষ্কার করার জন্য আপনার উভয় শব্দের "পোট্রজেবি" দিয়ে আরও ভাল করে প্রতিস্থাপন করা উচিত clear নিজের জন্য অর্থ।
কমপক্ষে ঠিক নির্দিষ্ট ডেটাতে সিনট্যাক্স এবং শব্দার্থবিরোধের মধ্যে সম্পর্কটিকে "এনকোডিং" শব্দটির মাধ্যমে আরও ভালভাবে বর্ণনা করা যেতে পারে । শব্দার্থক বাক্য গঠনতে এনকোড করা আছে। রেকর্ডিংগুলি যেমন বাসা বেঁধে দেওয়া যায়, তেমনি একটি ভাষার বাক্য গঠনটি অন্যটির শব্দার্থক শব্দ। যদি কেউ তথ্যের ক্ষেত্রের বাইরে চলে যায় তবে এই নেস্টিং কার্যত অসীম হতে পারে, যেমন উম্বের্তো ইকো "সীমাহীন সেমোসিস" হিসাবে বর্ণনা করেছেন।
একটি উদাহরণ দিতে:
লোকেরা সাধারণত কোনও স্তরে থামে এবং শব্দার্থক হিসাবে গ্রহণ করে তবে শেষ পর্যন্ত কোনও চূড়ান্ত শব্দার্থবিজ্ঞান হয় না যতক্ষণ না কিছু মানুষ তার মনের মধ্যে ডেটা ব্যাখ্যা করে। ডেটা আকারে শব্দার্থক প্রকাশ করার চেষ্টা করার সাথে সাথে এটি সিনট্যাক্সে পরিণত হয়।
যদি এটিকে বিএনএফ (ব্যাকাস-নওর ফর্ম) বা এর অনুরূপ কিছুতে বর্ণনা করা যায় তবে এটি সিনট্যাক্স। যদি এটি না পারে তবে তা নয়।
অন্যদিকে শব্দার্থবিজ্ঞান একটি প্রোগ্রামের অর্থ (বা উত্স কোডের অন্যান্য অংশ) এর অর্থ about
এবং কখনও কখনও দুজনের মধ্যে লাইন অস্পষ্ট হতে পারে।
পার্থক্য বোঝার একটি উপায় হ'ল আপনার প্রোগ্রামের বাক্য গঠন বা শব্দার্থতত্ত্ব ভুল হলে আপনি কী ধরণের ত্রুটি পান at
একটি সিনট্যাক্স ত্রুটি ভাষা ব্যাকরণের সাথে মেলে উত্স কোডের ব্যর্থতা, উদাহরণস্বরূপ, যেখানে একটি সেমিকোলন না থাকা প্রয়োজন।
শব্দার্থত ত্রুটি হ'ল অন্য ভাষার প্রয়োজনীয়তা মেটাতে ব্যর্থতা (যাকে সি, উদাহরণস্বরূপ, "সীমাবদ্ধতা" বলে); একটি উদাহরণ লিখিত হতে পারে x + y
যেখানে x
এবং y
বেমানান ধরনের types ভাষা ব্যাকরণ আপনাকে বলে যে একটি সংযোজন দেখতে ভাল লাগে something + something
তবে এটি বাম এবং ডান ক্রিয়াকলাপগুলির ধরণের প্রয়োজনীয়তাগুলি প্রকাশ করার মতো শক্তিশালী নয়।
(যৌক্তিক ত্রুটিগুলি, যেমন 1 যেখানে 2 ব্যবহার করা সঠিক হবে তা সাধারণভাবে সংকলক দ্বারা সনাক্তযোগ্য নয় - যদিও কিছু ক্ষেত্রে একটি সংকলক সন্দেহজনক কোড সম্পর্কে সতর্ক করতে পারে))
সিনট্যাক্স হ'ল (লেক্সিকাল) প্রতীকগুলি যা বলে। শব্দার্থবিজ্ঞানগুলি তাদের অর্থ।
বিবেচনা:
সি #: condition ? true_value : false_value
ভিবি.এনইটি: If(condition, true_value, false_value)
- বিভিন্ন সিনট্যাক্স, একই শব্দার্থক।
সি #: left_value / right_value
ভিবি.এনইটি: left_value / right_value
- একই সিনট্যাক্স, বিভিন্ন শব্দার্থক (পূর্ণসংখ্যার জন্য)।
বাক্য বা শব্দ বিন্যাসে শব্দের ব্যাকরণগত বিন্যাস সিনট্যাক্স ।
(ইংরেজি) ' বিড়াল কুকুর ছেলে ' এবং (প্রোগ্রামিং) ' hi.5 ' হল না চিহ্নগুলি সিন্টেক্সের সঠিক।
(ইংরাজী) ' বিড়াল আলিঙ্গন ছেলে ' এবং (প্রোগ্রামিং) '* 3.2 * 5 *' সিন্টেক্সিকভাবে বৈধ।
স্ট্যাটিক সিমানটিকস হচ্ছে সিনথেটিকভাবে বৈধ বিবৃতিগুলির কোনও অর্থ আছে কিনা।
(ইংরাজী) ' আমি বড় ' (প্রোগ্রামিং) (পাইথন) ' 3 +' হাই ' ' সিনট্যাক্টিক্যালি সঠিক তবে স্থির শব্দার্থ ত্রুটি রয়েছে।
শব্দার্থবিজ্ঞান অর্থ স্থির শব্দার্থক ত্রুটিবিহীন চিহ্নগুলির সিনট্যাক্টিক্যালি সঠিক স্ট্রিংয়ের সাথে যুক্ত অর্থ অর্থাত বাক্যটি সিনট্যাকটিকালি এবং সিমেটিক্যালি সঠিক, তবে এর অর্থটি যা উদ্দেশ্য ছিল তা হতে পারে না।
(ইংরাজী) ' উড়ন্ত বিমানগুলি বিপজ্জনক হতে পারে ' এর দুটি অর্থ হতে পারে অর্থাৎ বিমানের উড়ান বিপজ্জনক হতে পারে বা উড়োজাহাজগুলি উড়ন্ত বিপজ্জনক হতে পারে।
(প্রোগ্রামিং) 'কম্পিউটার কোনও ত্রুটি বার্তা উত্পন্ন করবে না, তবে এটি আপনি যা করতে বলেছেন তা তা করবে না; এটি অন্য কিছু করবে। '
সূত্র : এমআইটি 6.00.1
সিনট্যাক্স বলতে বোঝায় কোনও ভাষায় বৈধ বিবৃতি নির্মাণের নিয়মিত আনুষ্ঠানিক নিয়ম। শব্দার্থবিজ্ঞান নিয়মের সেটকে বোঝায় যা বিবৃতিটির অর্থ দেয়।
প্রোগ্রামিং ভাষার রৌলগুলি লঙ্ঘন করা বা অপব্যবহার করা হয় এমন কোনও প্রোগ্রামে সিনট্যাক্সের কারণে ত্রুটি ঘটে। শব্দাবলীর কারণে ত্রুটিগুলি একটি প্রোগ্রামে ঘটে যখন বিবৃতি অর্থবহ হয় না।
ওয়ার্ড অর্ডার বাক্য গঠন এবং অর্থ প্রদানে সহায়তা করার জন্য শব্দের ক্রমের সিনট্যাক্টিক সংকেত ব্যবহার করে যা লেখা হয় তা বোঝার চেষ্টা করছেন বাক্য ক্রম। শব্দার্থবিজ্ঞান একটি ব্যক্তি তাদের পূর্ব জ্ঞানের উপর ভিত্তি করে "বাক্য" এর অর্থের নিজস্ব ব্যাখ্যা। সুতরাং এমন একটি বাক্য যা আপাতদৃষ্টিতে সিন্ট্যাক্টিক অর্থে বোঝায় না, শব্দার্থক সংকেত ব্যবহার করার সময় এর অর্থ হতে পারে।
সিনট্যাক্স কেবলমাত্র ভাষাগত এবং ব্যাকরণগতভাবে সঠিক তা নিয়েই উদ্বিগ্ন। শব্দার্থবিজ্ঞানের সকলের পূর্বের জ্ঞান প্রয়োজন যা ভাষা নির্দিষ্ট এবং যা কিছু নির্দিষ্ট নয় তার বাইরে is
"বেবি মিল্ক ড্রিঙ্কস" বাক্যটির একটি সিনট্যাক্টিক অর্থ নেই, তবে শব্দার্থের মাধ্যমে বেশিরভাগ লোকজন এটির অর্থ "শিশুকে দুধ পান করেন" হিসাবে ব্যাখ্যা করবেন কারণ আমাদের পূর্ববর্তী জ্ঞান আমাদের বলে যে একটি শিশু দুধ পান করে, তাই আমরা এর থেকে একটি অর্থ খুঁজে পেতে পারি মূল শব্দ।
বাক্য গঠন এবং শব্দার্থবিদ্যা ভালো হয় রণনীতি ও রণকৌশলের বা বাম এবং ডান ।
এগুলি সত্যই স্বাধীন সার্বজনীন ধারণা নয়, তবে শব্দের একটি সম্পর্কিত জুড়ি যা আপনি যখন কোনও নির্দিষ্ট প্রসঙ্গে থাকেন, বিপরীত দিক নির্দেশ করে। কিন্তু একই জিনিস যা এক স্কেলে কৌশল অন্যটি কৌশল is
সুতরাং আপনি যদি কোনও ভাষায় কোড লিখতে থাকেন তবে বাক্য গঠনটি হ'ল আপনি যে ভাষাটি ব্যবহার করছেন এবং পছন্দসই আচরণটি শব্দার্থক। তবে আপনি যদি সেই ভাষার জন্য সংকলক বাস্তবায়ন বা আলোচনা করছেন, তবে বাক্য গঠনটি হ'ল ব্যাকরণ এবং সম্ভবত টাইপ সিস্টেম এবং এর উপর নির্মিত শব্দার্থবিজ্ঞানগুলি। ইত্যাদি।
সিনট্যাক্স হ'ল কম্পিউটার যা বোঝে, শব্দার্থবিজ্ঞান যা মানুষ বোঝে।
একটি সংকলক / দোভাষী আপনার নকশা সম্পর্কে একটি সাদা রঙের যত্ন করে না এবং যেকোন কোডে মেশিন স্তরে সংকলিত আপনার নকশাটি কাটাতে খুব অসুবিধা হয়। বিকাশকারীরা ডিজাইনের বিষয়ে যত্নশীল কারণ একটি ভাল নকশা জটিল আচরণ এবং মিথস্ক্রিয়াটিকে বিমূর্ত করে জটিলতা হ্রাস করা এবং বিভিন্ন ধরণের সমস্যাগুলি নিজেকে বিভিন্ন শব্দার্থবিজ্ঞানের কাছে ধার দেয়। ভাষার পছন্দটি মূলত আপনি যে শব্দার্থক ব্যবহার করতে চান তা তার বাক্য বাক্যটিতে কতটা সহজে এবং দক্ষতার সাথে প্রকাশ করা যেতে পারে তা নিয়ে মূলত is
"প্লেইন সি" সহ খুব সংক্ষিপ্ত উদাহরণ:
void main()
{
int a = 10;
int x = a - 1;
int y = - 1;
printf("x = %i", x);
printf("y = %i", y);
getch();
}
এই উদাহরণে, "-" টোকেনের সিনট্যাক্সটি একই, তবে এটির একটি পৃথক অর্থ রয়েছে ("শব্দার্থিক), যেখানে এটি ব্যবহৃত হয় তার উপর নির্ভর করে।
"এক্স" অ্যাসাইনমেন্টে, "-" এর অর্থ "সাবস্ট্রাকশন" অপারেশন, "y" অ্যাসাইনমেন্টে "-" অর্থ "নেতিবাচক চিহ্ন" অপারেশন।
-
অপারেটর একই টোকেন , তবে তারা সিন্টেক্সিকভাবে আলাদা, কারণ তারা বিভিন্ন প্রসঙ্গে ব্যবহৃত হয়। 0 - 1
সিনট্যাক্স নিয়মের additive-expression: additive-expression - multiplicative-expression
সাথে - 1
মেলে , যখন সিনট্যাক্স নিয়মের সাথে মেলে unary-expression: unary-operator cast-expression
(রেফারেন্স: C99 মান))
-
ওপ্রেটারের মধ্যে পার্থক্যটি সিনট্যাকটিক, কেবল শব্দার্থক নয় (যদিও তাদের বিভিন্ন শব্দার্থবিজ্ঞানও রয়েছে)। সিনট্যাক্স ভাষা ব্যাকরণ দ্বারা সংজ্ঞায়িত করা হয়, এবং দুটি অপারেটর ব্যাকরণের বিভিন্ন বিভাগে নির্দিষ্ট করা হয়। এন 1570 খসড়াটি , অ্যানারি অপারেটরগুলির জন্য 6.5.3 এবং অ্যাডিটিভ অপারেটরগুলির জন্য 6.5.3 বিভাগটি দেখুন । (বিটিডাব্লু, আপনি যদি সি উদাহরণ ব্যবহার করতে চান তবে এটি সম্ভবত সঠিক void main()
হওয়া উচিত ; হওয়া উচিত int main(void)
, এবং আপনি অনুপস্থিত #include <stdio.h>
এবং যা কিছু শিরোলেখ ঘোষণা করেgetch