موضوع مقاله: سینتکس و مفاهیم پرولوگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سینتکس و مفاهیم پرولوگ | مقدمه: برای معناشناسی ریاضی رسمی برنامه‌های منطقی، به سینتکس و معناشناسی برنامه‌نویسی منطقی مراجعه کنید. | ## بخش 1: سینتکس و مفاهیم پرولوگ | سینتکس و معناشناسی prolog ، یک زبان برنامه‌نویسی، مجموعه‌ای از قوانین هستند که تعریف می‌کنند چگونه یک برنامه Prolog نوشته می‌شود و چگونه تفسیر می‌شود. آن یک نوع داده واحد دارد، این اصطلاح، چندین نوع فرعی دارد: اتم‌ها، اعداد، متغیرها و اصطلاحات ترکیبی. آن از یک توالی از کاراکترها تشکیل شده‌است که توسط خواننده Prolog به عنوان یک واحد تجزیه شده‌است. با این حال، اتم‌های حاوی فضا یا شخصیت‌های خاص دیگر باید توسط نقل‌قول‌های منفرد احاطه شوند. همچنین باید از اتم‌هایی که با حرف بزرگ شروع می‌شوند، نقل‌قول کرد تا آن‌ها را از متغیرها متمایز کند. بسیاری از پیاده‌سازی‌های Prolog همچنین اعداد صحیح نامحدود و اعداد منطقی را ارایه می‌دهند. ​ متغیرها با رشته ای متشکل از حروف، اعداد و کاراکترهای زیرخط نشان داده می شوند و با یک حرف بزرگ یا زیرخط شروع می شوند.. متغیرها از نظر منطقی به متغیر ها شباهت نزدیکی دارند زیرا برای اصطلاحات دلخواه جای دارند. یک متغیر می‌تواند از طریق یک پارچه سازی معرفی شود ( با یک عبارت خاص برابر شود) . برخلاف سایر متغیرها، زیرخط نشان‌دهنده ارزش یک‌سان در هر جایی که در تعریف گزاره رخ می‌دهد نیست. یک عبارت ترکیبی از یک اتم به نام "عمل‌کننده" و تعدادی از "استدلال‌ها یا برهان" که دوباره اصطلاح هستند تشکیل شده‌است. عبارات مرکب معمولا به عنوان یک عمل‌کننده یا تابع نوشته می‌شوند و به دنبال آن یک لیست ا از عبارات استدلالی جدا شده با کاما که در پرانتز وجود دارد، قرار می‌گیرد. نمونه‌هایی از عبارات مرکب عبارتند از سال کامیون ( "مزدا"، ۱۹۸۶) و دوستان پرسون ( زلدا، [تام، جیم . اصطلاحات ترکیبی با تابع هایی که به عنوان عملگرها اعلام شده‌اند را می توان در پیشوند یا پسوند نوشت. کاربران می‌توانند توابع دل‌خواه را به عنوان عملگرهایی با الویت های متفاوت اعلام کنند.تا نمادهای خاص دامنه را ممکن سازد. | ## بخش 2: سینتکس و مفاهیم پرولوگ | موارد خاص اصطلاحات مرکب : لیست‌ها به صورت استقرایی تعریف می‌شوند: اتم یک لیست است. برای مثال، این لیست.(1, .(2, .(3, همچنین میتواند به عنوان [1 | [2 | [3 | یا حتی فشرده تر به عنوان [1,2,3] نوشت. رشته‌ها: دنباله‌ای از کاراکترها که با نقل قول احاطه شده اند ، معادل با فهرستی از کدهای کاراکتری ( عددی) است که معمولا در کدگذاری کاراکترهای محلی یا یونی‌کد در صورتی که سیستم از یونی‌کد پشتیبانی کند، وجود دارد. بدنه یک قانون شامل فراخوان‌هایی برای پیش‌بینی است که اهداف قانون نامیده می‌شوند. گزاره داخلی ,/2 ، ( به معنای یک عملگر دو آریتی با نام،) نشان‌دهنده اهداف، و ;/2 نشان‌دهنده انفصال یا تفکیک است. به طور منطقی، موتور Prolog تلاش می‌کند تا یک رد قطعنامه برای پرس و جوی رد شده پیدا کند. اگر پرسوجوی منفی را بتوان رد کرد، نتیجه این است که پرسوجو، با پیوندهای متغیر مناسب، یک نتیجه منطقی از برنامه است. در این حالت، تمام پیوندهای متغیر تولید شده به کاربر گزارش می‌شوند و گفته می‌شود که پرس و جو موفق بوده‌است. از نظر عملیاتی، استراتژی اجرای prolog را می‌توان به عنوان تعمیمی از فراخوانی‌های تابع در زبان‌های دیگر در نظر گرفت، یکی از این تفاوت‌ها این است که سربندهای چندگانه می‌توانند با یک فراخوانی‌ معین مطابقت داشته باشند. در این حالت، سیستم یک نقطه انتخاب ایجاد می‌کند، هدف را با سر بند گزینه اول یکسان می‌کند، و با اهداف اولین جایگزین ادامه می‌یابد. اگر هر هدفی در طول اجرای برنامه شکست بخورد، تمام اتصالات متغیری که از زمان ایجاد آخرین نقطه انتخاب ایجاد شده‌اند، لغو می شوند و اجرا با جایگزین بعدی آن نقطه انتخاب ادامه می‌یابد. Yesاین مورد به صورت زیر به دست می‌آید: در ابتدا، تنها انطباق بند - هد برای خواهر و برادر پرسوجو ( یعنی، اریکا) اولین مورد است، بنابراین اثبات پرسوجو برابر با اثبات بدنه آن بند با پیوندهای متغیر مناسب در مکان است، یعنی حرف ربط ( والد - فرزند (Z,سالی ) ، والد - فرزند (Z,اریکا . هدف بعدی که باید اثبات شود چپ‌ترین هدف از این پیوند است، یعنی والد - فرزند ( Z,سالی) . این سیستم یک نقطه انتخاب ایجاد می‌کند و اولین جایگزین را امتحان می‌کند که بدن آن پدر - فرزند است. این هدف را می توان با استفاده از پدر - فرزند ( تام، سالی) اثبات کرد، بنابراین پیوند Z = تام تولید می‌شود، و هدف بعدی که باید اثبات شود بخش دوم رابطه بالا است: والد - فرزند ( تام، اریکا) . | ## بخش 3: سینتکس و مفاهیم پرولوگ | حلقه ها و بازگشت الگوریتم های تکراری را می توان با استفاده از گزاره‌های بازگشتی اجرا کرد. سیستم‌های پرولوگ معمولا یک تکنیک بهینه‌سازی معروف به نام بهینه‌سازی تماس دنباله ( TCO) را برای پیش‌بینی‌های قطعی که بازگشت دنباله را نشان می‌دهند یا، به طور کلی‌تر، فراخوانی دنباله را اجرا می‌کنند: یک چارچوب پشته قبل از انجام فراخوانی در موقعیت دنباله کنار گذاشته می‌شود. بنابراین، گزاره‌های بازگشتی قطعی با فضای پشته ثابت، مانند حلقه‌های در زبان‌های دیگر اجرا می‌شوند. متغیرهای ناشناس متغیرهای ناشناس _ هرگز به یک مقدار محدود نمی‌شوند و می‌توانند چندین بار در یک گزاره مورد استفاده قرار گیرند. نفی گزاره پرولوگ ساخته‌شده \+/1 ، نفی را به عنوان شکست فراهم می‌کند، که استدلال غیر یکنواخت را امکان پذیر می‌سازد. اگر مدرکی برای اثبات این هدف یافت شود، هدف اصلی ( یعنی + غیرقانونی ( X) ) با شکست مواجه می‌شود. بنابراین عملگر پیشوند \+ / ۱ عملگر "قابل‌اثبات" نامیده می‌شود ، زیرا عبارت ?- \+ Goal است. اکنون نمی توان برای برشمردن همه چیزهایی که قانونی هستند استفاده کرد ​ مفاهیم تحت یک مطالعه خبری، ترتیب قواعد و اهداف درون قواعد، بی‌ربط است، زیرا تفکیک منطقی و پیوستگی، جابجایی پذیر هستند. با این حال، در طول مسیر، اغلب مهم است که استراتژی اجرای پرولوگ را در نظر بگیریم، یا به دلایل کارایی، ویا به دلیل معنایی بودن گزاره‌های ناخالص داخلی که ترتیب ارزیابی برای آن‌ها اهمیت دارد. یک قانون تعریف‌شده از طریق - ->/2 به جای: - / ۲ توسط پیش پردازنده گسترش می‌یابد (expand _ term/2، تسهیلاتی مشابه ماکروها در زبان های دیگر) مطابق با چند قانون بازنویسی ساده، گسترش می یابد که منجر به ایجاد بندهای Prolog معمولی می شود . از همه مهم‌تر، بازنویسی، گزاره را با دو آرگومان اضافی مجهز می‌کند، که می‌تواند به طور ضمنی حالت را به هم متصل کند، مشابه مونادها در زبان‌های دیگر. DCG ها اغلب برای نوشتن تجزیه‌کننده‌ها یامولد های لیست مورد استفاده قرار می‌گیرند، چرا که یک رابط مناسب برای لیست کردن تفاوت‌ها فراهم می‌کنند. نمونه تجزیه کننده یک مثال بزرگ‌تر پتانسیل استفاده از Prolog در تجزیه را نشان می‌دهد. id(b) --> [b].این کد رابطه بین یک جمله ( که به عنوان یک لیست از نشانه ها داده می‌شود) و درخت نحوی انتزاعی(AST) آن را تعریف می‌کند. | ## جمع‌بندی | همانطور که برای ماهیت رابطه‌ای محمول‌ها معمول است، این تعاریف را می‌توان هم برای تجزیه و تولید جملات و هم برای بررسی اینکه آیا یک درخت معین با فهرست معینی از نشانه‌ها مطابقت دارد استفاده کرد.