Syntax (programming languages)
کمپیوٹر سائنس میں، کمپیوٹر زبان کا نحو وہ اصول ہیں جو ان علامتوں کے امتزاج کی وضاحت کرتے ہیں جنہیں اس زبان میں صحیح طریقے سے تشکیل شدہ بیانات یا تاثرات سمجھا جاتا ہے۔ یہ پروگرامنگ زبانوں، جہاں دستاویز سورس کوڈ کی نمائندگی کرتی ہے، اور مارک اپ زبانوں، جہاں دستاویز ڈیٹا کی نمائندگی کرتی ہے، دونوں پر لاگو ہوتا ہے۔ کسی زبان کا نحو اس کی سطحی شکل کی وضاحت کرتا ہے۔ متن پر مبنی کمپیوٹر زبانیں حروف کی ترتیب پر مبنی ہوتی ہیں، جبکہ بصری پروگرامنگ زبانیں مقامی ترتیب اور علامتوں کے درمیان رابطوں پر مبنی ہوتی ہیں (جو متن یا گرافیکل ہو سکتی ہیں)۔ وہ دستاویزات جو نحو کے لحاظ سے غلط ہیں ان کے بارے میں کہا جاتا ہے کہ ان میں نحو کی غلطی ہے۔ کسی زبان کے نحو کو ڈیزائن کرتے وقت، ڈیزائنر ان مثالوں سے عمومی اصولوں کا پتہ لگانے کی کوشش کرنے سے پہلے، قانونی اور غیر قانونی دونوں تاروں کی مثالیں لکھ کر شروع کر سکتا ہے۔ اس لیے نحو سے مراد کوڈ کی شکل ہے، اور اس کا موازنہ سیمنٹکس یعنی معنی سے ہے۔ کمپیوٹر زبانوں کی پروسیسنگ میں، سیمنٹک پروسیسنگ عام طور پر نحو پروسیسنگ کے بعد آتی ہے۔ تاہم، کچھ معاملات میں، مکمل نحو تجزیہ کے لیے الفاظ کی پروسیسنگ ضروری ہے، اور یہ ایک ساتھ یا بیک وقت کیے جاتے ہیں۔ مرتب کرنے والے میں، نحو تجزیہ فرنٹ اینڈ پر مشتمل ہوتا ہے، جبکہ الفاظ کا تجزیہ بیک اینڈ (اور درمیانی سرے پر مشتمل ہوتا ہے، اگر اس مرحلے کو ممتاز کیا جائے)۔ نحو کمپیوٹر زبان کے نحو کی سطحوں کو عام طور پر تین سطحوں میں تقسیم کیا جاتا ہے: الفاظ-لفظی سطح، اس بات کا تعین کرتی ہے کہ حروف ٹوکن کیسے بناتے ہیں۔ جملے-گرائمر کی سطح، تنگ الفاظ میں، اس بات کا تعین کرتی ہے کہ ٹوکن جملے کیسے بناتے ہیں۔ سیاق و سباق-اس بات کا تعین کرنا کہ کس چیز یا متغیر کے نام حوالہ دیتے ہیں، اگر اقسام درست ہیں، وغیرہ۔ اس طرح سے فرق کرنے سے ماڈیولرٹی حاصل ہوتی ہے، جس سے ہر سطح کو الگ الگ اور اکثر آزادانہ طور پر بیان اور عمل کرنے کی اجازت ملتی ہے۔ سب سے پہلے، ایک لیکسر حروف کی لکیری ترتیب کو ٹوکن کی لکیری ترتیب میں بدل دیتا ہے ؛ اسے "لیکسیکل تجزیہ" یا "لیکسنگ" کے نام سے جانا جاتا ہے۔ دوسرا، تجزیہ کار ٹوکن کی لکیری ترتیب کو درجہ بندی کے نحو درخت میں بدل دیتا ہے ؛ اسے "تجزیہ" کے نام سے جانا جاتا ہے۔ تیسرا، سیاق و سباق کا تجزیہ ناموں کو حل کرتا ہے اور اقسام کی جانچ کرتا ہے۔ یہ ماڈیولرتا بعض اوقات ممکن ہوتی ہے، لیکن بہت سی حقیقی دنیا کی زبانوں میں ایک ابتدائی مرحلہ بعد کے مرحلے پر منحصر ہوتا ہے-مثال کے طور پر، سی میں لیکسر ہیک اس وجہ سے ہے کہ ٹوکنائزیشن سیاق و سباق پر منحصر ہوتی ہے۔ یہاں تک کہ ان معاملات میں، نحو تجزیہ کو اکثر اس مثالی ماڈل کے قریب کے طور پر دیکھا جاتا ہے۔ تجزیہ کے مرحلے کو خود دو حصوں میں تقسیم کیا جا سکتا ہے: پارس ٹری، یا "کنکریٹ نحو ٹری"، جس کا تعین گرائمر سے ہوتا ہے، لیکن عام طور پر عملی استعمال کے لیے بہت زیادہ تفصیلی ہوتا ہے، اور تجریدی نحو ٹری (اے ایس ٹی)، جو اسے قابل استعمال شکل میں آسان بناتا ہے۔ اے ایس ٹی اور سیاق و سباق کے تجزیے کے اقدامات کو الفاظ کے تجزیے کی ایک شکل سمجھا جا سکتا ہے، کیونکہ وہ نحو میں معنی اور تشریح کا اضافہ کر رہے ہیں، یا متبادل طور پر غیر رسمی طور پر، نحو کے اصولوں کے دستی نفاذ کے طور پر جو رسمی طور پر بیان کرنا یا ان پر عمل درآمد کرنا مشکل یا عجیب ہوگا۔ سطحیں عام طور پر چومسکی درجہ بندی کی سطحوں سے مطابقت رکھتی ہیں۔ الفاظ ایک باقاعدہ زبان میں ہوتے ہیں، جو کہ لفظی گرائمر میں مخصوص ہوتے ہیں، جو کہ ٹائپ-3 گرائمر ہے، عام طور پر باقاعدہ تاثرات کے طور پر دیا جاتا ہے۔ جملے سیاق و سباق سے پاک زبان (سی ایف ایل) میں ہوتے ہیں، عام طور پر ایک متعین سیاق و سباق سے پاک زبان (ڈی سی ایف ایل)، جس کی وضاحت جملے کے ڈھانچے کے گرائمر میں کی جاتی ہے، جو کہ ٹائپ-2 گرائمر ہے، جسے عام طور پر بیکس-نور فارم (بی این ایف) میں پروڈکشن رولز کے طور پر دیا جاتا ہے۔ فقرے کے گرائمرز کو اکثر مکمل سیاق و سباق سے پاک گرائمرز کے مقابلے میں بہت زیادہ محدود گرائمرز میں متعین کیا جاتا ہے، تاکہ ان کو تجزیہ کرنا آسان ہو ؛ جبکہ ایل آر پارسر کسی بھی ڈی سی ایف ایل کو لکیری وقت میں تجزیہ کر سکتا ہے، سادہ ایل اے ایل آر پارسر اور اس سے بھی آسان ایل ایل پارسر زیادہ موثر ہوتے ہیں، لیکن صرف ان گرائمرز کو تجزیہ کر سکتے ہیں جن کے پیداواری اصول محدود ہوتے ہیں۔ اصولی طور پر، سیاق و سباق کی ساخت کو سیاق و سباق کے حساس گرائمر کے ذریعے بیان کیا جا سکتا ہے، اور خود بخود ایٹریبیوٹ گرائمر جیسے ذرائع سے تجزیہ کیا جا سکتا ہے، حالانکہ، عام طور پر، یہ مرحلہ دستی طور پر کیا جاتا ہے، نام کے ریزولوشن کے قواعد اور ٹائپ چیکنگ کے ذریعے، اور ایک علامتی ٹیبل کے ذریعے نافذ کیا جاتا ہے جو ہر دائرہ کار کے لیے نام اور اقسام کو محفوظ کرتا ہے۔ ایسے ٹولز لکھے گئے ہیں جو باقاعدہ تاثرات میں لکھی گئی لفظی وضاحت سے خود بخود ایک لیکسر اور بی این ایف میں لکھے گئے فقرے گرامر سے ایک پارسر تیار کرتے ہیں: یہ کسی کو طریقہ کار یا فعال پروگرامنگ کی ضرورت کے بجائے اعلانیہ پروگرامنگ استعمال کرنے کی اجازت دیتا ہے۔ ایک قابل ذکر مثال لیکس-یاک جوڑی ہے۔ یہ خود بخود ایک ٹھوس نحو درخت تیار کرتے ہیں ؛ پارسر رائٹر کو پھر دستی طور پر کوڈ لکھنا چاہیے جس میں یہ بیان کیا جائے کہ اسے خلاصہ نحو درخت میں کیسے تبدیل کیا جاتا ہے۔ سیاق و سباق کا تجزیہ بھی عام طور پر دستی طور پر نافذ کیا جاتا ہے۔ ان خودکار ٹولز کے وجود کے باوجود، تجزیہ اکثر دستی طور پر مختلف وجوہات کی بناء پر نافذ کیا جاتا ہے-شاید جملے کا ڈھانچہ سیاق و سباق سے پاک نہیں ہے، یا ایک متبادل نفاذ کارکردگی یا غلطی کی رپورٹنگ کو بہتر بناتا ہے، یا گرائمر کو زیادہ آسانی سے تبدیل کرنے کی اجازت دیتا ہے۔ پارسرز اکثر فنکشنل زبانوں میں لکھے جاتے ہیں، جیسے کہ ہاسکل، یا اسکرپٹنگ زبانوں میں، جیسے کہ ازگر یا پرل، یا سی یا سی + + میں۔ غلطیوں کی مثالیں ایک مثال کے طور پر، (1 1 شامل کریں) ایک نحو طور پر درست Lisp پروگرام ہے (یہ فرض کرتے ہوئے کہ 'ایڈ' فنکشن موجود ہے، ورنہ نام کا حل ناکام ہوجاتا ہے)، 1 اور 1 کا اضافہ۔ تاہم، درج ذیل غلط ہیں: (_ 1) لفظی غلطی: '_' درست نہیں ہے (تجزیہ کی غلطی شامل کریں: اختتامی گمشدہ ')' لیکسر پہلی غلطی کی شناخت کرنے سے قاصر ہے-یہ صرف اتنا جانتا ہے کہ، ٹوکن LEFT _ PAREN تیار کرنے کے بعد، '(' پروگرام کا بقیہ حصہ غلط ہے، کیونکہ کوئی لفظ قاعدہ '_' سے شروع نہیں ہوتا ہے۔ تجزیہ کے مرحلے پر دوسری غلطی کا پتہ چلا ہے: تجزیہ کار نے '(' ٹوکن (واحد میچ کے طور پر) کی وجہ سے "لسٹ" پروڈکشن رول کی نشاندہی کی ہے، اور اس طرح غلطی کا پیغام دے سکتا ہے ؛ عام طور پر یہ مبہم ہو سکتا ہے۔ ٹائپ کی غلطیوں اور غیر اعلانیہ متغیر غلطیوں کو بعض اوقات نحو کی غلطیاں سمجھا جاتا ہے جب ان کا پتہ مرتب کرنے کے وقت لگایا جاتا ہے (جو عام طور پر مضبوطی سے ٹائپ کی گئی زبانوں کو مرتب کرتے وقت ہوتا ہے)، حالانکہ اس قسم کی غلطی کو الفاظ کی غلطیوں کے طور پر درجہ بندی کرنا عام ہے۔ مثال کے طور پر، ازگر کوڈ 'a' + 1 ٹائپ ایرر پر مشتمل ہے کیونکہ یہ ایک انٹیجر لیٹرل میں سٹرنگ لیٹرل کا اضافہ کرتا ہے۔ مرتب کے وقت اس قسم کی غلطیوں کا پتہ لگایا جا سکتا ہے: تجزیہ کے دوران ان کا پتہ لگایا جا سکتا ہے (فقرہ تجزیہ) اگر مرتب کرنے والا الگ الگ قواعد استعمال کرتا ہے جو "انٹیجر لیٹرل + انٹیجر لیٹرل" کی اجازت دیتے ہیں لیکن "سٹرنگ لیٹرل + انٹیجر لیٹرل" کی اجازت نہیں دیتے ہیں، حالانکہ اس بات کا زیادہ امکان ہے کہ مرتب ایک تجزیہ کے اصول کا استعمال کرے گا جو "لیٹرل اور آئڈینٹیفائر + لیٹرل اور آئڈینٹیفائر" فارم کے تمام تاثرات کی اجازت دیتا ہے اور پھر سیاق و سباق کے تجزیے کے دوران غلطی کا پتہ چلا جائے گا (جب ٹائپ کی جانچ ہوتی ہے)۔ بعض صورتوں میں یہ توثیق مرتب کرنے والے کے ذریعہ نہیں کی جاتی ہے، اور ان غلطیوں کا پتہ صرف رن ٹائم پر لگایا جاتا ہے۔ متحرک طور پر ٹائپ کی گئی زبان میں، جہاں ٹائپ کا تعین صرف رن ٹائم پر کیا جا سکتا ہے، بہت سی قسم کی غلطیوں کا پتہ صرف رن ٹائم پر لگایا جا سکتا ہے۔ مثال کے طور پر، ازگر کوڈ a + b جملے کی سطح پر نحو طور پر درست ہے، لیکن a اور b کی اقسام کی درستگی کا تعین صرف رن ٹائم پر کیا جا سکتا ہے، کیونکہ متغیرات میں ازگر میں اقسام نہیں ہوتیں، صرف اقدار ہوتی ہیں۔ اگرچہ اس بارے میں اختلاف ہے کہ آیا مرتب کی طرف سے پائی جانے والی ٹائپ کی غلطی کو نحو کی غلطی کہا جانا چاہیے (جامد الفاظ کی غلطی کے بجائے)، ٹائپ کی غلطیاں جن کا پتہ صرف پروگرام پر عمل درآمد کے وقت لگایا جا سکتا ہے انہیں ہمیشہ نحو کی غلطیوں کے بجائے الفاظ کے طور پر سمجھا جاتا ہے۔ متن کی پروگرامنگ زبانوں کے نحو کی تعریف عام طور پر باقاعدہ تاثرات (لفظی ڈھانچے کے لیے) اور بیکس-نور فارم (گرائمر ڈھانچے کے لیے) کے امتزاج کا استعمال کرتے ہوئے کی جاتی ہے تاکہ نحو زمرہ جات (نان ٹرمینلز) اور ٹرمینل علامتوں کی تعیین کی جا سکے۔ نحو زمرہ جات کی تعریف پروڈکشن نامی اصولوں کے ذریعے کی جاتی ہے، جو ان اقدار کی وضاحت کرتے ہیں جو کسی خاص نحو زمرے سے تعلق رکھتے ہیں۔ ٹرمینل علامتیں حروف کے ٹھوس حروف یا تار ہوتے ہیں (مثال کے طور پر مطلوبہ الفاظ جیسے کہ تعریف، اگر، جانے دیں، یا کالعدم) جن سے نحو طور پر درست پروگرام بنائے جاتے ہیں۔ کسی زبان میں مختلف مساوی گرائمر ہو سکتے ہیں، جیسے مساوی باقاعدہ تاثرات (لفظی سطحوں پر)، یا مختلف فقرے کے اصول جو ایک ہی زبان پیدا کرتے ہیں۔ گرائمرز کے وسیع تر زمرے کا استعمال، جیسے کہ ایل آر گرائمرز، زیادہ محدود زمروں کے مقابلے میں چھوٹے یا آسان گرائمرز کی اجازت دے سکتے ہیں، جیسے کہ ایل ایل گرائمر، جس کے لیے زیادہ اصولوں کے ساتھ لمبے گرائمرز کی ضرورت پڑ سکتی ہے۔ مختلف لیکن مساوی فقرے گرائمر سے مختلف پارس ٹری ملتے ہیں، حالانکہ بنیادی زبان (درست دستاویزات کا مجموعہ) ایک ہی ہے۔ مثال: Lisp S-تاثرات ذیل میں ایک سادہ گرائمر ہے، جس کی تعریف باقاعدہ تاثرات اور توسیعی بیک-نور فارم کے اشارے کا استعمال کرتے ہوئے کی گئی ہے۔ یہ S-ایکسپریشنز کے نحو کو بیان کرتا ہے، جو پروگرامنگ زبان Lisp کا ایک ڈیٹا نحو ہے، جو نحو زمرہ جات کے اظہار، ایٹم، نمبر، علامت، اور فہرست کے لیے پیداوار کی وضاحت کرتا ہے: اظہار = ایٹم۔ فہرست ایٹم = نمبر۔ علامت نمبر = [+-]؟ ['0'-'9'] + علامت = ['A'-'Z'] ['A'-'Z' 0 '-' 9 ']۔ * فہرست = '('، اظہار *، ')' یہ گرائمر مندرجہ ذیل کی وضاحت کرتا ہے: ایک اظہار یا تو ایٹم یا فہرست ہے ؛ ایک ایٹم یا تو ایک نمبر یا علامت ہے ؛ ایک نمبر ایک یا زیادہ اعشاریہ ہندسوں کی ایک نہ ٹوٹنے والی ترتیب ہے، اختیاری طور پر اس سے پہلے ایک پلس یا مائنس سائن ہوتا ہے۔ ایک علامت ایک حرف ہے جس کے بعد کسی بھی حروف میں سے صفر یا اس سے زیادہ ہوتے ہیں (وائٹ اسپیس کو چھوڑ کر) ؛ اور ایک فہرست قوسین کی ایک مماثل جوڑی ہے، جس کے اندر صفر یا اس سے زیادہ تاثرات ہوتے ہیں۔ یہاں اعشاریہ ہندسے، بڑے اور چھوٹے حروف، اور قوسین آخری علامتیں ہیں۔ اس گرائمر میں اچھی طرح سے تشکیل شدہ ٹوکن ترتیبات کی مثالیں درج ذیل ہیں: '12345'، '()'، '(اے بی سی 232 (1))' پیچیدہ گرائمر پروگرامنگ زبان کی وضاحت کے لیے درکار گرائمر کو چومسکی درجہ بندی میں اس کی پوزیشن کے لحاظ سے درجہ بندی کیا جا سکتا ہے۔ زیادہ تر پروگرامنگ زبانوں کے فقرے کی گرائمر کو ٹائپ-2 گرائمر کا استعمال کرتے ہوئے متعین کیا جا سکتا ہے، یعنی وہ سیاق و سباق سے پاک گرائمر ہیں، حالانکہ مجموعی نحو سیاق و سباق سے حساس ہے (متغیر اعلانات اور نیسٹڈ اسکوپس کی وجہ سے)، اس لیے ٹائپ-1۔ تاہم، مستثنیات ہیں، اور کچھ زبانوں کے لیے فقرہ گرائمر ٹائپ-0 (ٹورنگ مکمل) ہے۔ پرل اور لیسپ جیسی کچھ زبانوں میں زبان کی تفصیلات (یا نفاذ) ان تعمیرات کی اجازت دیتی ہیں جو تجزیہ کے مرحلے کے دوران انجام دیتی ہیں۔ مزید برآں، ان زبانوں میں ایسی تعمیرات ہیں جو پروگرامر کو تجزیہ کار کے رویے کو تبدیل کرنے کی اجازت دیتی ہیں۔ یہ امتزاج تجزیہ اور عمل کے درمیان فرق کو مؤثر طریقے سے دھندلا دیتا ہے، اور ان زبانوں میں نحو تجزیہ کو ایک ناقابل فیصلہ مسئلہ بناتا ہے، جس کا مطلب ہے کہ تجزیہ کا مرحلہ ختم نہیں ہوسکتا ہے۔ مثال کے طور پر، پرل میں بیگن سٹیٹمنٹ کا استعمال کرتے ہوئے تجزیہ کے دوران کوڈ کو انجام دینا ممکن ہے، اور پرل فنکشن پروٹوٹائپ نحو تشریح کو تبدیل کر سکتے ہیں، اور ممکنہ طور پر بقیہ کوڈ کی نحو جواز کو بھی۔ بول چال میں اسے "صرف پرل ہی پرل کو تجزیہ کر سکتا ہے" کہا جاتا ہے (کیونکہ تجزیہ کے دوران کوڈ کو انجام دینا ضروری ہے، اور گرائمر میں ترمیم کر سکتا ہے)، یا زیادہ مضبوطی سے "یہاں تک کہ پرل بھی پرل کو تجزیہ نہیں کر سکتا" (کیونکہ یہ ناقابل فیصلہ ہے)۔ اسی طرح، ڈیفماکرو نحو کے ذریعہ متعارف کردہ Lisp میکرو بھی تجزیہ کے دوران انجام دیتے ہیں، جس کا مطلب ہے کہ Lisp مرتب کرنے والے کے پاس ایک پورا Lisp رن ٹائم سسٹم موجود ہونا چاہیے۔ اس کے برعکس، سی میکرو محض سٹرنگ متبادل ہیں، اور کوڈ پر عمل درآمد کی ضرورت نہیں ہے۔ نحو بمقابلہ الفاظ کسی زبان کا نحو ایک درست پروگرام کی شکل کو بیان کرتا ہے، لیکن پروگرام کے معنی یا اس پروگرام کو انجام دینے کے نتائج کے بارے میں کوئی معلومات فراہم نہیں کرتا ہے۔ علامتوں کے امتزاج کو دیا گیا معنی سیمنٹکس (حوالہ کے نفاذ میں رسمی یا ہارڈ کوڈڈ) کے ذریعے سنبھالا جاتا ہے۔ تمام نحو طور پر درست پروگرام لفظی طور پر درست نہیں ہوتے ہیں۔ بہت سے نحو طور پر درست پروگرام اس کے باوجود زبان کے قواعد کے مطابق غیر تشکیل شدہ ہیں ؛ اور (زبان کی وضاحت اور عمل درآمد کی مضبوطی پر منحصر ہے) ترجمہ یا عمل درآمد میں غلطی کا باعث بن سکتے ہیں۔ بعض صورتوں میں، اس طرح کے پروگرام غیر متعین رویے کی نمائش کر سکتے ہیں۔ یہاں تک کہ جب کسی پروگرام کو کسی زبان کے اندر اچھی طرح سے بیان کیا جاتا ہے، تب بھی اس کا ایک معنی ہو سکتا ہے جو اس شخص کا ارادہ نہیں ہے جس نے اسے لکھا تھا۔ قدرتی زبان کو ایک مثال کے طور پر استعمال کرتے ہوئے، گرائمر کے لحاظ سے درست جملے کو معنی تفویض کرنا ممکن نہیں ہو سکتا ہے یا یہ جملہ غلط ہو سکتا ہے: "بے رنگ سبز خیالات غصے سے سوتے ہیں"۔ گرائمر کے لحاظ سے اچھی طرح سے تشکیل شدہ ہے لیکن اس کا کوئی عام طور پر قبول شدہ معنی نہیں ہے۔ "جان ایک شادی شدہ کنواری ہے۔" گرائمر کے لحاظ سے اچھی طرح سے تشکیل دی گئی ہے لیکن ایک ایسے معنی کا اظہار کرتی ہے جو سچ نہیں ہو سکتا۔ مندرجہ ذیل سی زبان کا ٹکڑا نحو کے لحاظ سے درست ہے، لیکن ایک ایسا عمل انجام دیتا ہے جس کی لفظی طور پر وضاحت نہیں کی گئی ہے (کیونکہ یہ ایک نیل پوائنٹر ہے، آپریشنز اور اس کا کوئی معنی نہیں ہے): پیچیدہ * p = NULL ؛ پیچیدہ ABS _ p = sqrt (p-> حقیقی * p-> حقیقی + p-> IM * p-> IM) ؛ ایک آسان مثال کے طور پر، int x ؛ پرنٽ f ("% d", x) ؛ نحو کے لحاظ سے درست ہے، لیکن لفظی طور پر بیان نہیں کیا گیا ہے، کیونکہ یہ ایک غیر ابتدائی متغیر کا استعمال کرتا ہے۔ اگرچہ کچھ پروگرامنگ زبانوں (مثال کے طور پر جاوا اور سی #) کے مرتب کرنے والے اس قسم کی غیر ابتدائی متغیر غلطیوں کا پتہ لگائیں گے، لیکن انہیں نحو کی غلطیوں کے بجائے الفاظ کی غلطیاں سمجھا جانا چاہیے۔ نیز نیمنگ کنونشن (پروگرامنگ) پروگرامنگ زبانوں کا موازنہ (نحو) مختلف پروگرامنگ زبانوں کے نحو کا تیزی سے موازنہ کرنے کے لیے، "ہیلو، ورلڈ!" کی فہرست پر ایک نظر ڈالیں۔ پروگرام کی مثالیں: پرولاگ نحو اور سیمنٹکس پرل نحو پی ایچ پی نحو اور سیمنٹکس سی نحو سی + + نحو جاوا نحو جاوا سکرپٹ نحو ازگر حوالہ جات بیرونی لنکس کمپیوٹر پروگرامنگ زبانوں میں استعمال ہونے والی مختلف نحو تعمیرات ازگر غلطی "درآمد ایرر: کوئی ماڈیول نام نہیں" کیوں؟ " کیسے؟ کمانڈ لائن؟ [حل شدہ 2021] پروگرامنگ زبان کے موضوعات ماخذ کوڈ