پرش به محتوا

نشانه‌گذاری لهستانی

از ویکی‌پدیا، دانشنامهٔ آزاد

نشانه‌گذاری لهستانی (به انگلیسی: Polish notation) یا نشانه‌گذاری پیشوندی (به انگلیسی: prefix notation) یک نشانه گذاری برای منطق، علم حساب و ریاضیات است. ویژگی متمایزکننده اش این است که عملگرهارا سمت چپ عملوندها قرار می‌دهد اگر تعداد عملوندهای یک عملگر مقرر شد نتیجه نحو فاقد پرانتز یا دیگر براکت‌هایی که می‌تواند بدون ابهام تجزیه شود. منطق دان لهستانی Łukasiewicz این نشانه گذاری را در سال ۱۹۲۴ برای ساده کردن منطق گزاره ای ابداع کرد.

اصطلاح نشانه گذاری لهستانی برخی اوقات (به عنوان خلاف نشانه گذاری میانوندی) برای به حساب آوردن نشانه گذاری بسوندی لهستانی یا نشانه گذاری لهستانی برعکس که در ان عملگر بعد از عملوند قرار می‌گیرد.

هنگامی که نشانه گذاری لهستانی برای نحو استفاده می‌شود به وسیلهٔ مفسر زبان‌های برنامه‌نویسی به درخت نحو انتزاعی تجزیه می‌شود و می‌تواند یک نمایش یک به یک تعریف شود. به همین دلیل Lisp و زبان‌های برنامه‌نویسی مرتبط تمام نحوشان را نشان په گذاری پیشوندی تعریف می‌کنند.

یک نقل قول از Jan Łukasiewicz موجود است: >>به یک ایده از نشانه گذاری بدون پرانتز در سال ۱۹۲۴ دست یافتم، و آن را برای اولین بار در مقالهٔ خود استفاده کردم.

الونزو چرچ در کتاب قدیمی اش در منطق ریاضی به عنوان یک نشانه سزاوار حتی در برابر Whitehead و نشانه گذاری منطقی راسل به این نشانه گذاری اشاره می‌کند.

حساب

[ویرایش]

عبارت برای جمع دو عدد ۱و ۲ در نشانه گذاری پیشوندی به صورت "۲ ۱ + " به جای "۲ + ۱ " نوشته می‌شود در عبارات پیچیده‌تر عملگرها همواره پشت عملوندها قرار دارند اما عملوندها ممکن است خود عبارات کوچکی باشند که عملگر دارند برای نمونه عبارتی که در نمایش میانوندی مرسوم است به صورت:

(5 − 6) * 7

می‌تواند به صورت پیشوندی به صورت زیر نوشته شود:

* (− 5 6) 7

از آنجا که عملگرهای محاسباتی ساده به صورت دودویی هستند (عملگر دودویی به عملگری می‌گویند که دو عملوند داشته باشد)، تمام نمایش‌های پیشوندی آن بدون ابهام هستند و می‌توان از قرار دادن پرانتزها صرف نظر کرد. به عنوان مثال، عبارت مثال قبل می‌تواند حتی به صورت ساده‌تر هم نوشته شود:

* − 5 6 7

برای تبدیل عبارات میانوندی به پیشوندی می‌توان از یک پشته کمک گرفت.

برنامه‌نویسی کامپیوتری

[ویرایش]

نشانه گذاری prefix کاربرد گسترده ای در عبارت‌های علامت دار Lisp دارد. درجایی که پرانتزها خواسته شده‌اند هنگامی که عملگرها خود داده‌اند!

توابع lisp ممکن است دارای تعداد ارگومان‌های متغیر باشند.

زبان برنامه‌نویسی TCL، همانند Lisp، از نشانه گذاری لهستانی در کتابخانهٔ mathop استفاده می‌کند پ. زبان برنامه‌نویسی ambi از نشانه گذاری لهستانی برای اعمال حساب و برنامه سازی استفاده می‌کند.

نشانه گذاری پسوندی یا نشانه گذاری لهستانی برعکس در برخی از زبان‌های برنامه‌نویسی پشته گرا مانند Forth استفاده می‌شود و قاعدهٔ عملی از نوع خاصی از ریاضیات است.

نحو CoffeeScript همچنین اجازه می‌دهد که توابع به وسیلهٔ نشانه گذاری لهستانی فراخوانده شوند و همچنین می‌تواند از نحو پیشوندی تکی که در بقیه زبان‌ها رایج است استفاده کند.

تعداد مقدارهای بازگشتی از یک عبارت هم عرض است با تفاوت تعداد عملگر هاب درون عبارت و تعداد ارگومان‌های هر عملگر منهای تعداد تمام مقدارهای بازگشتی از عملگرها.

ترتیب عملیات

[ویرایش]

ترتیب عملیات درون یک ساختمان نشانه گذاری پیشوندی تعریف می‌شود و به سادگی می‌تواند مشخص شود. یک چیز برای به خاطر سپاری این است که وقتی یک عمل اجرا می‌شود عملگر به وسیلهٔ عملگر بودن بر عملگر اول بکار برده می‌شود، این موضوع راجع به عملگرهایی که مبدل اند صادق نیست اما برای عملگرهای غیر مبدل مانند تقسیم و ضرب این قانون برای تحلیل و بررسی یک حکم قاطع است برای مثال حکم زیر:

/ 10 5 = 2

که "تقسیم ۱۰ بر ۵" خوانده می‌شود بنابراین پاسخ ۲ است نه ۱/۲

نشانه گذاری پیشوندی به خصوص با عمل‌های پشته گرا به توجه به قابلیت درونی برای تمایز سادهٔ ترتیب عملیات بدون نیاز به پرانتز است.

خواندن یک عبارت از چپ به راست، که ابتدا به دنبال یک عملگر می‌گردد و در نهایت به دنبال دو عملوند می‌گردد، اگر یک اپراتور قبل از این که عملوندها یاقت شوند پیدا شود عملوند قبلی کنار گذاشته می‌شود تا هنگامی که این عملگر مصمم شود، این پردازش تکرار می‌شود تا هنگامی که عملگر حل شود.

جستارهای وابسته

[ویرایش]

منابع

[ویرایش]

مشارکت‌کنندگان ویکی‌پدیا. «Polish notation». در دانشنامهٔ ویکی‌پدیای انگلیسی، بازبینی‌شده در ۱۴ ژوئیه ۲۰۱۳.