وابستگی عملگر کیست؟ توضیح بده.
در زبان های برنامه‌نویسی وابسته بودن یک عملگر یک ویژگی است که چگونگی اولویت عملگرها را در غیاب پرانتز مشخص می‌کند. به طور کلی در اکثر زبان های برنامه نویسی عملگرها با ترتیب خاصی اعمال می‌شوند، که این قوانین تحت عنوان اولویت عملگرها و وابستگی عملگرها شناخته می‌شوند. اگر دو عملگر با سطح اولویت یکسان هم قبل و هم بعد از یک عملوند بیایند، قانون وابستگی عملگر به کامپایلر می‌گوید که آن عملگرها را از سمت راست به چپ و یا چپ به راست به ترتیب اولویت بدهد. به عنوان مثال، در عبارت formula_1 اولویت عملگرهای ضرب و تقسیم، هر دو در یک سطح قرار دارند. از آنجا که ضرب و تقسیم از سمت چپ به راست ارزیابی می‌شود، جواب این عبارت formula_2 می‌شود. و همچنین مثال دیگری از این حالت codice_1 است. عملگرها به چهار دستهٔ وابسته (یعنی عملیات می‌تواند به صورت دلخواه گروه بندی شوند)، وابستهٔ چپ (به معنای این که عملیات‌ها از سمت چپ گروه بندی می شوند) و وابستهٔ راست (به معنای این که عملیات‌ها از سمت راست گروه بندی شده اند) یا غیر وابسته (به معنای این است که عملیات به دلیل ناسازگاری با نوع ورودی نمی‌تواند گروه بندی شود) تقسیم می‌شند. تعریف نوع وابستگی عملگرها و اولویت آن ها در تعریف زبان برنامه نویسی مشخص می‌شود. در زبان‌های برنامه‌نویسی مختلف ممکن است نوع وابستگی و اولویت برای یک عملگر متفاوت باشد.برای فهم تفاوت این چهار دسته عبارت formula_3 را در نظر بگیرید. اگر کامپایلر عملگر ~ را وابسته ی چپ در نظر گرفت، این عبارت را به صورت formula_4 درنظر میگیریم. اگر کامپایلر عملگر formula_5 را وابستهٔ راست در نظر گرفت، این عبارت را به صورت formula_6 در نظر می‌گیریم. و اگر عملگر غیر وابسته بود، به ارور سینتکسی بر می‌خوریم یا ممکن است که این حالت با توجه به نوع تعریف عملگر معنای خاصی داشته باشد.جدول وابستگی در زبان های برنامه نویسی.جدول وابستگی نشان دهنده ی نوع وابستگی هر عملگر موجود در آن زبان برنامه‌نویسی است. جدول زیر یک جدول اولویت در زبان جاوا است که نشان‌دهندهٔ نوع وابستگی هر عملگر موجود در این زبان است.در این جدول هر گروه از عملگرهای جدول تقدم یکسان دارند. هر چه تقدم بالاتر باشد، اولویت گروه بندی بالاتر است.مثال.همان‌طور که ذکر شد، وابستگی عملگرها وقتی مطرح می‌شود که عملگرها دارای اولویت یکسانی باشند. به طور مثال عملگرهای ضرب و تقسیم اولویت یکسانی دارند. عبارت formula_7 را در نظر بگیرید. اگر وابستگی راست را برای این عملگرها اعمال کنیم، حاصل عبارت به صورت formula_8 محاسبه می‌شود. اما اگر وابستگی چپ را در نظر بگیریم، عبارت به صورت formula_9 به دست می‌آید.در عبارات ریاضی و برای استفاده‌های معمولی، عملیات‌های جمع، تفریق، ضرب و تقسیم با وابستگی چپ در نظر گرفته می‌شوند. عملیات مقداردهی نیز معمولاً با وابستگی راست نمایش داده می‌شود. اما عملیات‌های توان‌رسانی قاعده کلی ندارند و ممکن است با وابستگی چپ یا راست نمایش داده شوند. در قاعده‌ی کلی، عملگرهایی که اولویت یکسانی دارند باید وابستگی یکسانی داشته باشند.برای درک بهتر عبارت codice_2 را با وابستگی راست در نظر بگیرید. یک تجزیه‌کننده که عبارت را از چپ به راست می‌خواند، با توجه به وابستگی راست عملگر codice_3 به صورت زیر عمل می‌کند:با استفاده از الگوریتم جستجوی اول عمق، گام‌های زیر بر روی درخت اجرا می‌شود:اگر برای عملگر توانی وابستگی چپ در نظر گرفته شود، عبارت codice_17 به دست خواهد آمد.وابستگی راست در عملگر مقداردهی.عملگر مقداردهی (=) در اکثر زبان‌های برنامه‌نویسی دستوری با وابستگی راست تعریف شده‌است. همچنین مقداردهی به صورت یک اصطلاح تعریف می‌شود. تفاوت اصطلاح با عبارت این است که اگر در انتهای یک اصطلاح codice_18 اضافه کنیم، به عبارت تبدیل می‌شود. در نتیجه امکان مقداردهی زنجیره‌ای به وجود می‌آید و مقدار یک مقداردهی به عنوان ورودی به یک مقداردهی دیگر داده می‌شود.به طور مثال در زبان C ، با اجرای مقداردهی formula_10 ، مقدار متغیر b در a قرار داده می‌شود. وابستگی راست عملگر مقداردهی این امکان را ایجاد می‌کند که اصطلاحاتی نظیر formula_11 به صورت formula_12 ترجمه شود و در نتیجه مقدار متغیر c در هر دو متغیر a و b قرار گیرد. اما در زبان C++ مقداردهی a = b وابستگی چپ دارد . لذا formula_11 به صورت formula_14 در می‌آید. و معادل با عبارات formula_15 عمل می‌کند.