موضوع مقاله: وابستگی عملگر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # وابستگی عملگر | مقدمه: در زبان های برنامه‌نویسی وابسته بودن یک عملگر یک ویژگی است که چگونگی اولویت عملگرها را در غیاب پرانتز مشخص می‌کند. | ## بخش 1: وابستگی عملگر | به طور کلی در اکثر زبان های برنامه نویسی عملگرها با ترتیب خاصی اعمال می‌شوند، که این قوانین تحت عنوان اولویت عملگرها و وابستگی عملگرها شناخته می‌شوند. اگر دو عملگر با سطح اولویت یکسان هم قبل و هم بعد از یک عملوند بیایند، قانون وابستگی عملگر به کامپایلر می‌گوید که آن عملگرها را از سمت راست به چپ و یا چپ به راست به ترتیب اولویت بدهد. به عنوان مثال، در عبارت اولویت عملگرهای ضرب و تقسیم، هر دو در یک سطح قرار دارند. عملگرها به چهار دستهٔ وابسته (یعنی عملیات می‌تواند به صورت دلخواه گروه بندی شوند)، وابستهٔ چپ (به معنای این که عملیات‌ها از سمت چپ گروه بندی می شوند) و وابستهٔ راست (به معنای این که عملیات‌ها از سمت راست گروه بندی شده اند) یا غیر وابسته (به معنای این است که عملیات به دلیل ناسازگاری با نوع ورودی نمی‌تواند گروه بندی شود) تقسیم می‌شند. تعریف نوع وابستگی عملگرها و اولویت آن ها در تعریف زبان برنامه نویسی مشخص می‌شود. در زبان‌های برنامه‌نویسی مختلف ممکن است نوع وابستگی و اولویت برای یک عملگر متفاوت باشد. اگر کامپایلر عملگر ~ را وابسته ی چپ در نظر گرفت، این عبارت را به صورت درنظر میگیریم. اگر کامپایلر عملگر را وابستهٔ راست در نظر گرفت، این عبارت را به صورت در نظر می‌گیریم. | ## بخش 2: وابستگی عملگر | و اگر عملگر غیر وابسته بود، به ارور سینتکسی بر می‌خوریم یا ممکن است که این حالت با توجه به نوع تعریف عملگر معنای خاصی داشته باشد. جدول وابستگی در زبان های برنامه نویسی جدول وابستگی نشان دهنده ی نوع وابستگی هر عملگر موجود در آن زبان برنامه‌نویسی است. جدول زیر یک جدول اولویت در زبان جاوا است که نشان‌دهندهٔ نوع وابستگی هر عملگر موجود در این زبان است. ~ (unary)+ (unary)- (type)5وابستگی چپ* / %6وابستگی چپ+ -7وابستگی چپ<< >> >>>8غیر وابستهinstance of < > <= >=9وابستگی چپ== !=10وابستگی چپ&11وابستگی چپ^12وابستگی چپ|13وابستگی چپ&&14وابستگی چپ||15وابستگی راست:?16وابستگی راست= *= /= %= -= <<= >>= >>>= &= ^= |=17 مثال همان‌طور که ذکر شد، وابستگی عملگرها وقتی مطرح می‌شود که عملگرها دارای اولویت یکسانی باشند. اگر وابستگی راست را برای این عملگرها اعمال کنیم، حاصل عبارت به صورت محاسبه می‌شود. در عبارات ریاضی و برای استفاده‌های معمولی، عملیات‌های جمع، تفریق، ضرب و تقسیم با وابستگی چپ در نظر گرفته می‌شوند. اما عملیات‌های توان‌رسانی قاعده کلی ندارند و ممکن است با وابستگی چپ یا راست نمایش داده شوند. در قاعده‌ی کلی، عملگرهایی که اولویت یکسانی دارند باید وابستگی یکسانی داشته باشند. | ## بخش 3: وابستگی عملگر | یک تجزیه‌کننده که عبارت را از چپ به راست می‌خواند، با توجه به وابستگی راست عملگر ^ به صورت زیر عمل می‌کند: ترم 2 خوانده می‌شود. با استفاده از الگوریتم جستجوی اول عمق، گام‌های زیر بر روی درخت اجرا می‌شود: در درخت از اولین ^ شروع می‌کنیم تا به آخرین (در اینجا دومین) عملگر ^ برسیم. اگر برای عملگر توانی وابستگی چپ در نظر گرفته شود، عبارت 64=2^(3^2) به دست خواهد آمد. وابستگی راست در عملگر مقداردهی عملگر مقداردهی (=) در اکثر زبان‌های برنامه‌نویسی دستوری با وابستگی راست تعریف شده‌است. تفاوت اصطلاح با عبارت این است که اگر در انتهای یک اصطلاح ; اضافه کنیم، به عبارت تبدیل می‌شود. در نتیجه امکان مقداردهی زنجیره‌ای به وجود می‌آید و مقدار یک مقداردهی به عنوان ورودی به یک مقداردهی دیگر داده می‌شود. به طور مثال در زبان C ، با اجرای مقداردهی ، مقدار متغیر b در a قرار داده می‌شود. | ## جمع‌بندی | وابستگی راست عملگر مقداردهی این امکان را ایجاد می‌کند که اصطلاحاتی نظیر به صورت ترجمه شود و در نتیجه مقدار متغیر c در هر دو متغیر a و b قرار گیرد.