সংক্ষেপে
প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি এমন একটি বাক্য গঠন যা এই প্রোগ্রামকে চরিত্রের স্ট্রিং হিসাবে উপস্থাপন করে এবং একটি শব্দার্থিক যা প্রোগ্রামটির উদ্দেশ্যযুক্ত অর্থ।
আনুষ্ঠানিক ভাষা অর্থ ছাড়াই বাক্য গঠন হয়। এটি সাধারণত স্ট্রিংগুলির সাথে অর্থ সংযুক্ত না করে, আনুষ্ঠানিকভাবে সংজ্ঞায়িত স্ট্রিংগুলির সেটগুলির কাঠামো অধ্যয়ন করা।
নিয়মিত প্রকাশ এবং অন্যান্য আনুষ্ঠানিকতা (যেমন কনটেক্সট-ফ্রি ব্যাকরণ) প্রথাগত ভাষাগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়, প্রোগ্রামিং এবং প্রাকৃতিক ভাষার সিনট্যাকটিক উপাদান হিসাবে ব্যবহৃত হয়, অর্থাত্ একটি কাঠামোগত উপায়ে বাক্য উপস্থাপন করতে to অন্যান্য কাঠামোগত প্রোগ্রামিং ভাষার শব্দার্থকগুলির সাথে সে কাঠামোটিকে সম্পর্কিত করতে ব্যবহৃত হয়।
বিশেষত প্রাকৃতিক ভাষার ক্ষেত্রে এখানে অনেক কিছুই সহজ সরল করা হয়েছে।
আরও অনেক বিশদ সহ
আপনার প্রশ্নের উত্তর দিতে আমাদের প্রথম থেকেই শুরু করা উচিত। সাধারণ অর্থে একটি ভাষা হ'ল, অনানুষ্ঠানিকভাবে, তথ্য বা ধারণা জানাতে একটি মাধ্যম। একটি ভাষায়, সাধারণত বাক্য গঠন এবং শব্দার্থবিজ্ঞানের মধ্যে পার্থক্য হয়। শব্দার্থবিজ্ঞান হ'ল আপনি যা সম্পর্কে কথা বলতে / লিখতে চান। আপনি জানাতে চান তথ্য। সিনট্যাক্স হ'ল আপনি এটি বোঝাতে ব্যবহার করেন, অর্থাত্ একটি প্রচলিত উপস্থাপনা যা মানুষের মধ্যে এবং এখন মানুষ এবং ডিভাইসগুলির মধ্যে বা ডিভাইসগুলির (কম্পিউটার) মধ্যে বিনিময় হতে পারে।
সাধারণত, আপনি dog
একটি কুকুরের ধারণা জানাতে এই শব্দটি ব্যবহার করবেন । শব্দটি dog
তিনটি অক্ষর বা কিছু সমতুল্য শব্দ দ্বারা গঠিত এবং এটি কোনও একরকম প্রাণীর উপস্থাপনের উদ্দেশ্যে তৈরি। মূল ধারণাটি হ'ল যোগাযোগটি কী কী জানাতে হবে তার প্রতিনিধির মাধ্যমে। প্রতিনিধিত্বমূলক কাঠামোগুলিকে সাধারণত সিনট্যাক্স বলা হয়, যখন যা উপস্থাপিত হয় তাকে শব্দার্থক বলা হয়। এটি প্রাকৃতিক ভাষার পাশাপাশি প্রোগ্রামিং ভাষার ক্ষেত্রেও কমবেশি যায়।
শব্দগুলি কম-বেশি প্রাথমিক সিমেটিক ধারণাগুলি উপস্থাপনের জন্য সিনট্যাক্ট সত্তা। তবে এই প্রাথমিক ধারণাগুলি আরও জটিল অর্থ দেওয়ার জন্য বিভিন্ন উপায়ে একসাথে রাখতে হবে। আমরা the dog
বোঝাতে লিখি
যে আমরা একটি নির্দিষ্ট কুকুর বোঝাতে চাইছি এবং the dog bites the cat
আরও জটিল ধারণাটি জানাতে চাই। তবে শব্দগুলি যেভাবে সংগঠিত হয়েছে তা নিয়ম অনুসারে ঠিক করতে হবে, যাতে আমরা বলতে পারি যে কুকুর এবং বিড়ালটি আসলে অন্যটিকে কামড়াচ্ছে।
সুতরাং আমাদের মতো নিয়ম রয়েছে sentence -> subject verb complement
যা এর সাথে বাক্যগুলির সাথে মেলে এবং আমাদের জানায় যে প্রতিটি অংশের সাথে সম্পর্কিত ধারণাগুলি কীভাবে যুক্ত হয়। এই বিধিগুলি সিনট্যাক্টিক নিয়ম, যেহেতু তারা আমাদের জানায় যে আমাদের বার্তার উপস্থাপনাটি কীভাবে সংগঠিত করা উচিত। subject
নিজেই একটি নিয়ম সংজ্ঞায়িত করা যায় subject -> article noun
, ইত্যাদি।
গণিতেও একই কথা। আপনার গাণিতিক প্রকাশটি খুব ফর্মাল সিনট্যাক্স সহ লেখা আছে। এবং বাক্যটির অর্থ সিনট্যাকটিক কাঠামো বিশ্লেষণ করে পাওয়া যায়। উদাহরণস্বরূপ
, প্রসঙ্গের উপর নির্ভর করে সমীকরণ হিসাবে পড়া যেতে পারে, উল্লেখ করে যে আপনি যদি এর দ্বিগুণ নেন এবং যোগ করেন তবে এটি মতো হওয়া উচিত । কিছু নিয়ম হ'ল: x 1 232 x + 1 = 23এক্স123
equation -> expression "=" expression
expression -> expression "+" expression
expression -> number
প্রোগ্রামিং ভাষার কাঠামো একই রকম। প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি শব্দ সমাধানের জন্য গণনাগুলি প্রকাশের ক্ষেত্রে বিশেষজ্ঞ করা হয়, বরং সমস্যার সমাধান হওয়ার জন্য, তাত্ত্বিকতার প্রমাণ বা পশুর মধ্যে বন্ধুত্বপূর্ণ সম্পর্কের প্রমাণ দেয়। তবে এটাই মূল পার্থক্য।
সিনট্যাক্সে ব্যবহৃত প্রতিনিধিত্বগুলি সাধারণত অক্ষরের স্ট্রিং হয় বা কথ্য ভাষার জন্য শব্দ হয়। শব্দার্থবিজ্ঞান সাধারণত বিমূর্ত ডোমেন বা সম্ভবত বাস্তবতার সাথে সম্পর্কিত তবে তবুও আমাদের চিন্তার প্রক্রিয়াগুলিতে বা ডিভাইসের আচরণগত ডোমেনটিতে বিমূর্ত থাকে। যোগাযোগের তথ্য / ধারণাটিকে সিনট্যাক্সের মধ্যে এনকোডিং অন্তর্ভুক্ত করে, যা প্রেরক দ্বারা প্রেরণ এবং ডিকোড হয়। ফলাফলটি তারপরে প্রাপক দ্বারা যেভাবেই ব্যাখ্যা করা যায়।
সুতরাং আমরা ভাষার যা দেখতে পাই তা বেশিরভাগ বাক্য গঠন এবং এর কাঠামো। উপরের উদাহরণটি সিনট্যাকটিক স্ট্রিং এবং তাদের কাঠামোগত সংগঠনকে সংজ্ঞায়িত করার জন্য সবচেয়ে সাধারণ উপায়। অন্যরাও আছেন। প্রদত্ত ভাষার জন্য কিছু স্ট্রিংকে একটি কাঠামো বরাদ্দ করা যেতে পারে এবং বলা হয় এটি ভাষার অন্তর্গত, অন্যরা তা না করে।
শব্দের ক্ষেত্রেও একই কথা। অক্ষরের কিছু ক্রম (বা শব্দ) বৈধ শব্দ, অন্যটি নয়।
আনুষ্ঠানিক ভাষা শব্দার্থবিজ্ঞান ব্যতীত বাক্য গঠন মাত্র। তারা বর্ণমালার মৌলিক উপাদানগুলি ব্যবহার করে কোন সিক্যুয়েন্সগুলি তৈরি করা যায় তা নিয়মের একটি সেট দিয়ে সংজ্ঞায়িত করে। নিয়মগুলি কী তা খুব পরিবর্তনশীল, কখনও কখনও জটিল হতে পারে। তবে আনুষ্ঠানিক ভাষাগুলি ভাষাগত যোগাযোগের বাইরে অনেকগুলি গাণিতিক উদ্দেশ্যে ব্যবহৃত হয়, প্রোগ্রামিং ভাষার জন্য প্রাকৃতিক কিনা। নিয়মগুলির একটি সেট যা কোনও ভাষায় স্ট্রিংগুলি সংজ্ঞায়িত করে তাকে ব্যাকরণ বলে। তবে ভাষা সংজ্ঞায়নের আরও অনেক উপায় রয়েছে।
অনুশীলনে, একটি ভাষা দুটি স্তরে কাঠামোযুক্ত হয়। লেজিকাল স্তরটি বর্ণগুলির বর্ণমালা থেকে নির্মিত শব্দগুলি সংজ্ঞায়িত করে। সিনট্যাকটিক স্তর বাক্য বা শব্দের বর্ণমালা থেকে নির্মিত প্রোগ্রামগুলি (বা আরও পরিস্কারভাবে শব্দ পরিবারগুলির দ্বারা তৈরি করা হয়, যাতে এটি একটি সীমাবদ্ধ বর্ণমালা থাকে) সংজ্ঞায়িত করে। এটি অগত্যা কিছুটা সরল করা হয়েছে।
শব্দের গঠন বেশিরভাগ ভাষায় (প্রোগ্রামিং বা প্রাকৃতিক) মোটামুটি সহজ, যাতে সাধারণত এটিকে সাধারণত সাধারণ ধরণের সরল ভাষা হিসাবে বিবেচনা করা হয়: নিয়মিত ভাষা। এগুলিকে নিয়মিত এক্সপ্রেশন (রেজিএক্সপ্যাক্স) দিয়ে সংজ্ঞায়িত করা যেতে পারে এবং সীমাবদ্ধ স্টেট অটোমেটা নামক প্রোগ্রামযুক্ত ডিভাইসগুলির সাথে মোটামুটি সহজেই চিহ্নিত করা যায়। প্রোগ্রামিং ভাষার ক্ষেত্রে, শব্দের উদাহরণগুলি সনাক্তকারী, একটি পূর্ণসংখ্যা, স্ট্রিং, একটি আসল সংখ্যা, একটি সংরক্ষিত শব্দ যেমন if
বা repeat
, একটি বিরাম চিহ্ন বা একটি খোলা বন্ধনী are শব্দের পরিবারগুলির উদাহরণগুলি সনাক্তকারী, স্ট্রিং, পূর্ণসংখ্যা।
সিনট্যাকটিক স্তরটি সাধারণত কিছুটা জটিল ধরণের প্রথাগত ভাষার দ্বারা সংজ্ঞায়িত করা হয়: প্রসঙ্গমুক্ত ভাষাগুলি শব্দগুলিকে বর্ণমালা হিসাবে ব্যবহার করে। আমরা উপরে যে নিয়মগুলি দেখেছি তা হ'ল প্রাকৃতিক ভাষার জন্য প্রসঙ্গমুক্ত নিয়ম। প্রোগ্রামিং ভাষার ক্ষেত্রে নিয়মগুলি হতে পারে:
statement -> assignment
statement -> loop
loop -> "while" expression "do" statement
assignment -> "identifier" "=" expression
expression -> "identifier"
expression -> "integer"
expression -> expression "operator" expression
এই জাতীয় নিয়ম দিয়ে আপনি লিখতে পারেন:
while aaa /= bbb do aaa = aaa + bbb / 6
যা একটি বিবৃতি।
এবং যেভাবে এটি উত্পাদিত হয়েছিল তা কোনও পার্স ট্রি বা সিনট্যাক্স ট্রি নামে গাছের কাঠামোর দ্বারা উপস্থাপন করা যেতে পারে (এখানে সম্পূর্ণ নয়):
statement
|
_______________ loop _______________
/ / \ \
"while" expression "do" statement
__________|_________ |
/ | \ assignment
expression "operator" expression _______|_______
| | | / | \
"identifier" "/=" "identifier" "identifier" "=" expression
| | | |
aaa bbb aaa ... ...
কোনও নিয়মের বামে প্রদর্শিত নামগুলিকে অ-টার্মিনাল বলা হয়, অন্যদিকে শব্দগুলিকে টার্মিনালও বলা হয়, কারণ এগুলি ভাষার বর্ণমালায় রয়েছে (সংক্ষিপ্ত স্তরের উপরে)। নন-টার্মিনাল বিভিন্ন সিনট্যাকটিক স্ট্রাকচারের প্রতিনিধিত্ব করে, যা কোনও প্রোগ্রাম রচনা করতে ব্যবহৃত হতে পারে।
এই জাতীয় নিয়মকে প্রসঙ্গমুক্ত বলা হয়, কারণ কোনও নন-টার্মিনাল যথেচ্ছভাবে প্রাসঙ্গিকভাবে দেখা যায় তার প্রেক্ষাপটে স্বতন্ত্রভাবে সম্পর্কিত যেকোনও নিয়ম ব্যবহার করে প্রতিস্থাপন করা যেতে পারে। ভাষা সংজ্ঞায়িত বিধিগুলির সেটকে প্রসঙ্গমুক্ত ব্যাকরণ বলা হয়।
প্রকৃতপক্ষে এর উপর বিধিনিষেধ রয়েছে, যখন শনাক্তকারীদের প্রথমে ঘোষণা করতে হয়, বা যখন কোনও অভিব্যক্তি অবশ্যই প্রকারের সীমাবদ্ধতাগুলি মেটায়। তবে এই জাতীয় বিধিনিষেধকে সিনট্যাক্টিকাল নয় বরং শব্দার্থক হিসাবে বিবেচনা করা যেতে পারে। প্রকৃতপক্ষে কিছু পেশাদার তাদের স্থির শব্দার্থিক শব্দগুলিতে রাখেন
।
কোনও বাক্য, যে কোনও প্রোগ্রাম দেওয়া, এই বাক্যটির জন্য পার্স ট্রি দ্বারা প্রদত্ত কাঠামো বিশ্লেষণ করে সেই বাক্যটির অর্থ বের করা হয়। সুতরাং পার্সার নামক অ্যালগরিদমগুলি বিকাশ করা খুব গুরুত্বপূর্ণ, যা প্রোগ্রামের সাথে সাথে গাছের কাঠামো পুনরুদ্ধার করতে পারে।
বিশ্লেষক বিশ্লেষক দ্বারা পার্সারটি আগে রয়েছে যা শব্দগুলি শনাক্ত করে এবং তাদের সাথে সম্পর্কিত যে পরিবারটি নির্ধারণ করে। তারপরে শব্দের ক্রম বা লেজিক উপাদানগুলি পার্সারকে দেওয়া হয় যা অন্তর্নিহিত গাছের কাঠামোটি পুনরুদ্ধার করে। এই কাঠামো থেকে সংকলক তারপরে কোডটি কীভাবে উত্পন্ন করা যায় তা নির্ধারণ করতে পারে, যা সংকলকটির পাশে প্রোগ্রাম প্রসেসিংয়ের তার অর্থ অংশ।
সংকলকের পার্সার আসলে পার্স-ট্রি সম্পর্কিত একটি ডেটা স্ট্রাকচার তৈরি করতে এবং সংকলনের প্রক্রিয়ার পরবর্তী পর্যায়ে এটি পাস করতে পারে তবে এটি করার দরকার নেই। পার্সিং অ্যালগরিদমের পরিমাণটি প্রোগ্রামের পাঠ্যে অন্তর্ভুক্ত সিনট্যাক্স-ট্রি অন্বেষণের জন্য একটি গণনামূলক কৌশল বিকাশের জন্য চালানো। সংশ্লেষ কৌশল (পর্যায়ের সংখ্যা) এর উপর নির্ভর করে এই সিনট্যাক্স / পার্স গাছটি প্রক্রিয়াটিতে বর্ণিত হতে পারে বা নাও হতে পারে। তবে যেটি প্রয়োজনীয় তা হ'ল শেষ পর্যন্ত পার্স-গাছের অন্তত একটি তল-আপ অনুসন্ধান রয়েছে, তা গণনার কাঠামোর মধ্যে ফুটিয়ে তোলা হয়েছে বা বামে হোক।
এর কারণটি স্বজ্ঞাতভাবে বলা যায় যে সিনট্যাক্টিক গাছ কাঠামোর সাথে সম্পর্কিত শব্দার্থবিজ্ঞানের সংজ্ঞা দেওয়ার একটি স্ট্যান্ডার্ড আনুষ্ঠানিক উপায় হ'ল হোমোমর্ফিজম নামে পরিচিত। বড় কথা ভয় করবেন না। ধারণাটি কেবল পুরোটির অর্থটি অংশগুলির অর্থ থেকে নির্মিত হয়, অপারেটরের ভিত্তিতে যা তাদের সংযোগ করে
উদাহরণস্বরূপ, বাক্যটি the dog bites the cat
বিধি দ্বারা বিশ্লেষণ করা যেতে পারে sentence -> subject verb complement
। জানা 3 সাব-ট্রি এর অর্থ subject
, verb
এবং complement
নিয়ম যে রচনা তাদেরকে আমাদের বলে যে বিষয় কর্ম করছে, এবং বিড়াল এক যারা কামড় হয় যে।
এটি কেবল একটি স্বজ্ঞাত ব্যাখ্যা, তবে এটি আনুষ্ঠানিকভাবে করা যেতে পারে। উপাদানসমূহ থেকে শব্দার্থবিজ্ঞান উপরের দিকে নির্মিত হয় constructed তবে এটি অনেক জটিলতা লুকায়।
সংকলকটির অভ্যন্তরীণ কাজটি বিভিন্ন পর্যায়ে বিভক্ত হতে পারে। প্রকৃত সংকলক মধ্যবর্তী উপস্থাপনা ব্যবহার করে পর্যায়ক্রমে পর্যায়ক্রমে কাজ করতে পারে। এটি কিছু পর্যায়ে একীভূতও হতে পারে। এটি ব্যবহৃত প্রযুক্তি এবং হাতের ভাষা সংকলনের জটিলতার উপর নির্ভর করে।