swipl(1) راهنمای دستورات کاربر swipl(1)

swipl - مفسر و کامپایلر استاندارد زبان برنامه‌نویسی منطقی SWI-Prolog

swipl [--help|--version|--arch|--dump-runtime-variables]
swipl [گزینه‌ها] prolog-file ... [--] [arg ...]
swipl [گزینه‌ها] [-o output] -c file ...
swipl [گزینه‌ها] [-o output] -b initfile ...

حالت اول اطلاعاتی درباره سیستم ارائه کرده و بلافاصله خارج می‌شود. حالت دوم روش اصلی برای فراخوانی پرولاگ روی یک یا چند فایل منبع پرولاگ و ارائه آرگومان‌ها به برنامه است که می‌توان آن‌ها را با استفاده از current_prolog_flag(argv, Argv). درخواست کرد. حالت سوم برای ایجاد یک وضعیت ذخیره‌شده (saved state) استفاده می‌شود، در حالی که حالت آخر برای کامپایل راه‌اندازی (boot-compilation) بخش‌های پرولاگ سیستم به کار می‌رود.

SWI-Prolog یک پیاده‌سازی جامع و پایدار از زبان پرولاگ همراه با مجموعه‌ای بزرگ از کتابخانه‌ها است. از ویژگی‌های برجسته آن می‌توان به پشتیبانی بالغ از چندریسمانی (multi-threading)، کتابخانه بالغ وب‌سرور تعبیه‌شده، ابزارهای توسعه گرافیکی (اشکال‌زدا، تحلیل‌گر عملکرد، ارجاع‌دهنده متقابل و ویرایشگر)، یک مخزن بهینه و تعبیه‌شده RDF، پشتیبانی از XML/SGML/HTML و یونیکد اشاره کرد. ویژگی‌های با پشتیبانی گسترده‌تر شامل پشتیبانی از برنامه‌نویسی محدودیت (constraint programming)، جمع‌آوری زباله اتم‌ها (atom garbage collection)، و رابط‌ها به پایگاه‌های داده (ODBC)، C، C++ و Java (JPL) است.

SWI-Prolog استاندارد هسته ISO را پیاده‌سازی می‌کند. بسیاری از قابلیت‌های توسعه‌یافته آن تا حد زیادی با YAP و SICStus Prolog سازگار هستند.

این صفحه راهنما فقط گزینه‌های خط فرمان را فهرست می‌کند. مستندات کامل به صورت برخط و همچنین در قالب‌های HTML و PDF در صفحه خانگی وب در دسترس است: http://www.swi-prolog.org

ارائه خلاصه‌ای از مهم‌ترین گزینه‌ها.
نمایش اطلاعات نسخه و معماری.
نمایش کلید نسخه ABI. این کلید سازگاری باینری رابط‌های مختلف را نشان می‌دهد.
چاپ شناسه معماری.
تخلیه اطلاعاتی که معمولاً برای اسکریپت‌های نصب مفید هستند در قالبی که توسط format تعریف می‌شود. قالب‌های تعریف‌شده عبارتند از sh (پیش‌فرض، bourne shell) و cmd (محیط CMD ویندوز). این گزینه توسط swipl-ld(1) برای دریافت اطلاعات لازم درباره پرولاگ استفاده می‌شود. این گزینه معمولاً به صورت eval `swipl --dump-runtime-variables` فراخوانی می‌شود که متغیرهای شل زیر را مقداردهی می‌کند:
کامپایلر C استفاده‌شده برای کامپایل SWI-Prolog.
دایرکتوری خانگی SWI-Prolog. این مقدار مشابه مقداری است که توسط current_prolog_flag home برگردانده می‌شود.
شناسه معماری استفاده‌شده. این شناسه به همراه PLBASE محل مؤلفه‌های مختلف را مشخص می‌کند. به عنوان مثال، کتابخانه مورد نیاز برای تعبیه‌سازی در مسیر $PLBASE/lib/$PLARCH/libswipl.a قرار دارد.
بیت‌های آدرس‌دهی برای ماشین مجازی (VM)؛ ۳۲ یا ۶۴ بیتی.
شناسه کامپایلر C برای پیوند به SWI-Prolog؛ معمولاً -lswipl
مسیر کامل به شیء مشترک (DLL) که هسته پرولاگ را فراهم می‌کند.
کتابخانه‌های اضافی مورد نیاز برای پیوند با PLLIB.
فلگ‌هایی که باید برای تولید کد سازگار به کامپایلر C ارسال شوند.
فلگ‌هایی که باید برای پیوند فایل‌های اجرایی تعبیه‌شده به پیونددهنده C ارسال شوند.
پسوند مورد استفاده توسط سیستم‌عامل میزبان برای اشیاء مشترک. در اکثر سیستم‌های یونیکس این مقدار "so" و در مایکروسافت ویندوز "dll" است. AIX از "o" و HPUX از "sl" استفاده می‌کند.
متغیر محیطی مورد استفاده توسط سیستم‌عامل میزبان برای گسترش مسیر جستجوی اشیاء مشترک. به عنوان مثال در سیستم‌های ELF این متغیر "LD_LIBRARY_PATH" و در مایکروسافت ویندوز "PATH" است.
نمایش عددی نسخه SWI-Prolog.
در صورت وجود، یک برچسب نسخه مانند "rc1".
دارای مقدار yes است اگر پرولاگ از پیوند کتابخانه‌های مشترک با استفاده از load_foreign_library/[1,2] پشتیبانی کند، و در غیر این صورت no است.
دارای مقدار yes است اگر پرولاگ برای چندریسمانی کامپایل شده باشد، و در غیر این صورت no است.
استفاده از DIR به عنوان دایرکتوری خانگی.
تنظیم محدودیت پشته ترکیبی به size بایت. پسوند به حروف بزرگ و کوچک حساس نیست و واحد را به صورت b (بایت)، k (کیلوبایت)، m (مگابایت) یا g (گیگابایت) تعریف می‌کند.
تنظیم محدودیت فضای جدول برای وضوح SLG (جدول‌بندی / tabling) به size بایت. پسوندها مشابه گزینه --stack-limit هستند.
تنظیم محدودیت فضای جدول برای جدول‌بندی مشترک به size بایت. پسوندها مشابه گزینه --stack-limit هستند.
کامپایل بهینه‌سازی‌شده. به set_prolog_flag/2 در راهنمای مرجع SWI-Prolog مراجعه کنید.
کامپایل راه‌اندازی (Boot). فایل‌های initfile ... توسط کامپایلر راه‌اندازی نوشته‌شده به C و فایل‌های file ... توسط کامپایلر معمولی پرولاگ در یک فایل کد میانی کامپایل می‌شوند. این گزینه برای نگهداری سیستم است و فقط جهت ارجاع ذکر شده است.
کامپایل file ... در یک فایل کد میانی.
تنظیم سطح اشکال‌زدایی روی level. این گزینه برای نگهداری سیستم است و فقط جهت ارجاع ذکر شده است.
غیرفعال کردن پیوست بسته‌های افزونه (الحاقی‌ها).
غیرفعال کردن زیرسیستم واسط گرافیکی XPCE.
راه‌اندازی سیستم مستندات PlDoc روی یک پورت شبکه آزاد و باز کردن مرورگر کاربر در http://localhost:port. اگر port مشخص شود، سرور روی پورت داده‌شده راه‌اندازی می‌شود اما مرورگر باز نخواهد شد.
استفاده از file به عنوان فایل مقداردهی اولیه به جای `init.pl'. `-f none' مانع از جستجوی SWI-Prolog برای فایل مقداردهی اولیه می‌شود.
انتخاب اسکریپت راه‌اندازی از دایرکتوری خانگی SWI-Prolog. file نام پایه (base-name) اسکریپت را مشخص می‌کند. پسوند فایل .rc است. اسکریپت پیش‌فرض از نام پایه فایل اجرایی با در نظر گرفتن تمام کاراکترهای حرفی‌عددی اولیه (حروف، ارقام و زیرخط) از نام برنامه استخراج می‌شود. بنابراین اگر نام برنامه swi-2.0 باشد، سعی می‌کند فایل swi.rc را از دایرکتوری خانگی SWI-Prolog بارگیری کند. اگر فایل وجود نداشته باشد، یا کاربر دسترسی خواندن به آن را نداشته باشد، اسکریپت در سکوت بارگیری نمی‌شود.
بارگیری file به عنوان یک اسکریپت. این گزینه ممکن است از طریق شل استفاده شود تا پرولاگ فایلی را قبل از ورود به سطح بالا (toplevel) بارگیری کند. منسوخ شده است، زیرا نام‌های فایل با پسوند پرولاگ (.pl یا .qlf) برای بارگیری برنامه استفاده می‌شوند.
بارگیری file به عنوان یک اسکریپت. این یک مترادف برای -s است که با چندین پیاده‌سازی دیگر پرولاگ سازگار است. اگر چندین آرگومان -s یا -l ارائه شود، تمام فایل‌های مشخص‌شده به ترتیبی که در فهرست آرگومان‌ها ظاهر می‌شوند، بارگیری خواهند شد.
عملکرد بدون پیام (ساکت). این گزینه تمام پیام‌های اطلاعاتی را سرکوب می‌کند.
غیرفعال کردن تولید کدی که می‌توان با استفاده از trace/0، spy/1 و غیره اشکال‌زدایی کرد.
--debug-on-interrupt[=bool]
شروع فوری مدیریت سیگنال SIGINT (کلید Control-C) برای راه‌اندازی اشکال‌زدا. به طور پیش‌فرض، هنگامی که وارد سطح بالای تعاملی می‌شوید، این ویژگی فعال است.
نحوه برخورد با پیام‌های خطای (چاپ‌شده). مقدار پیش‌فرض print است که باعث می‌شود خطاها چاپ شده و اجرا ادامه یابد. با استفاده از status اجرا مانند print ادامه می‌یابد، اما halt/0 باعث می‌شود فرآیند با وضعیت 1 خارج شود و halt باعث می‌شود فرآیند در اولین خطا با وضعیت 1 خارج شود.
مشابه --on-error، اما برای پیام‌های هشدار.
هدف (Goal) درست قبل از ورود به سطح بالا اجرا می‌شود. این گزینه ممکن است چندین بار تکرار شود. اهداف به ترتیب ظاهر شدن اجرا می‌شوند. نقاط انتخاب (choice points) احتمالی هرس می‌شوند. اگر یک هدف با شکست مواجه شود یک خطا چاپ می‌شود (بسته به پرچم -q) و فرآیند با کد خروج 1 متوقف می‌شود. اگر یک هدف یک استثنا ایجاد کند خطا چاپ شده و فرآیند با کد خروج 2 متوقف می‌شود. اگر هیچ هدفی ارائه نشود، version/0 برای نوشتن پیام خوش‌آمدگویی فراخوانی می‌شود. با تعیین -g true می‌توان از نمایش پیام خوش‌آمدگویی جلوگیری کرد. goal می‌تواند یک عبارت پیچیده باشد. در این حالت، معمولاً نقل‌قول‌ها برای محافظت از آن در برابر بسط توسط شل یونیکس مورد نیاز است.
در ترکیب با -b یا -c برای تعیین فایل خروجی کامپایل استفاده می‌شود.
تعریف یک نام مستعار مسیر برای file_search_path/2. مقدار pathlist فهرستی از مقادیر برای نام مستعار است که با ":" از یکدیگر جدا شده‌اند. به file_search_path/2 در راهنمای مرجع SWI-Prolog مراجعه کنید.
استفاده از goal به عنوان سطح بالای تعاملی به جای هدف پیش‌فرض prolog/0. مقدار goal می‌تواند یک عبارت پیچیده باشد. اگر هدف سطح بالا با موفقیت انجام شود، SWI-Prolog با وضعیت 0 خارج می‌شود. اگر با شکست مواجه شود، وضعیت خروج 1 خواهد بود. این پرچم همچنین هدفی را که توسط break/0 و abort/0 شروع می‌شود تعیین می‌کند. اگر می‌خواهید مانع از ورود کاربر به حالت تعاملی شوید، برنامه را با `-g goal' راه‌اندازی کرده و `halt' را به عنوان سطح بالا قرار دهید.
شروع از یک فایل کد میانی حاصل از کامپایل پرولاگ با استفاده از گزینه -b یا -c ، یا ایجادشده با استفاده از qsave_program/[1,2].
تغییر کنترل tty (با استفاده از ioctl(2)). به طور معمول کنترل tty روشن است. این پیش‌فرض به نوع نصب بستگی دارد. اگر از SWI-Prolog در ویرایشگری مانند GNU Emacs استفاده می‌شود، ممکن است بخواهید کنترل tty را خاموش کنید. در صورت خاموش بودن، get_single_char/1 و ردیاب منتظر دریافت کاراکتر بازگشت به سرخط (carriage return) خواهند ماند.
این گزینه فقط در swipl-win.exe در دسترس است. میانبر منوی استارت از این گزینه برای تغییر دایرکتوری کاری به ...\Documents\Prolog استفاده می‌کند. اگر زیرپوشه Prolog وجود نداشته باشد، ایجاد خواهد شد.
غیرفعال کردن مدیریت سیگنال‌ها. معمولاً در صورتی استفاده می‌شود که SWI-Prolog در برنامه دیگری در سیستم‌های یونیکس تعبیه شده باشد.
استفاده از NUM برای رفع انسداد فراخوانی‌های سیستمی. مقدار پیش‌فرض SIGUSR2 است. استفاده از 0 نصب مدیریت‌کننده سیگنال را غیرفعال کرده و تحویل سیگنال‌های ریسمان را تا زمان تکمیل فراخوانی سیستمی مسدودکننده به تعویق می‌اندازد.
غیرفعال کردن ایجاد ریسمان‌ها در نسخه چندریسمانی. این کار به طور ویژه مانع از اجرای جمع‌آوری زباله سراسری در یک ریسمان مجزا می‌شود و ممکن است برای موقعیت‌هایی که چندریسمانی مطلوب نیست استفاده شود.
غیرفعال کردن افزونه‌های نسخه 7 SWI-Prolog که با نسخه‌های پیشین ناسازگار هستند.
--
پایان بررسی و پیمایش آرگومان‌های بعدی.

محل یافتن فایل راه‌اندازی و کتابخانه‌ها. معمولاً از فایل اجرایی یا مکان پیش‌فرض پیکربندی‌شده شناسایی می‌شود. اگر SWI-Prolog در فایل اجرایی دیگری تعبیه شده باشد، ممکن است ارائه این مقدار از طریق متغیر محیطی ضروری باشد.

SWI-Prolog دارای راهنمای برخط است. این بخش امکان جستجو و مرور سریع راهنمای مرجع SWI-Prolog را فراهم می‌کند. راهنمای برخط می‌تواند تعاریف گزاره‌ها و همچنین بخش‌های کاملی از راهنما را نمایش دهد.

معادل با help(help/1).
نمایش بخش مشخصی از راهنما. What یکی از موارد زیر است:
نام/تعداد_آرگومان (Name/Arity)
ارائه راهنما درباره گزاره مشخص‌شده.
نام (Name)
ارائه راهنما درباره گزاره نام‌برده با هر تعداد آرگومان یا یک تابع رابط C با آن نام.
بخش (Section)
نمایش بخش مشخص‌شده از راهنمای مرجع SWI-Prolog. شماره بخش‌ها اعدادی هستند که با خط تیره از هم جدا شده‌اند؛ به عنوان مثال 2-3 به بخش 2.3 راهنما اشاره دارد.

اگر پرولاگ همراه با ابزار GUI XPCE استفاده شود، این گزاره‌ها یک واسط گرافیکی را راه‌اندازی می‌کنند که واسطی منسجم برای help/1، apropos/1 و explain/1 ارائه می‌دهد.

این نسخه نصب‌شده از SWI-Prolog با استفاده از گزینه پیکربندی --prefix=/usr پیکربندی شده است. اگر فایل‌های فهرست‌شده در زیر در محل مشخص‌شده قرار ندارند، احتمالاً محل نصب جابه‌جا شده است. از

?- current_prolog_flag(home, Home).

برای یافتن دایرکتوری نصب محلی SWI-Prolog استفاده کنید.

~/.config/swi-prolog/init.pl
فایل‌های مقداردهی اولیه شخصی که در هنگام راه‌اندازی توسط SWI-Prolog خوانده می‌شوند. مکان دقیق به سیستم‌عامل بستگی دارد.
/usr/lib/swipl-10.0.2/bin//
محل فایل‌های اجرایی.
/usr/lib/swipl-10.0.2/include/
محل فایل‌های سرآیند (include). در صورت داشتن دسترسی نوشتن، SWI-Prolog.h نیز در /usr/include/SWI-Prolog.h کپی می‌شود.
/usr/lib/swipl-10.0.2/library/
کتابخانه‌های کاربر SWI-Prolog.
/usr/lib/swipl-10.0.2/boot/
بخش‌های هسته SWI-Prolog که به زبان پرولاگ نوشته شده‌اند. فایل راه‌اندازی /usr/lib/swipl-10.0.2/ ممکن است با استفاده از دستور زیر از دایرکتوری /usr/lib/swipl-10.0.2 بازسازی شود:
/usr/lib/swipl-10.0.2/doc/packages
مستندات HTML و/یا PDF مربوط به افزونه‌های نصب‌شده.
/usr/lib/swipl-10.0.2/
فایل راه‌اندازی پیش‌فرض. این یک فایل «کد میانی» حاوی کدهای از پیش کامپایل‌شده از دایرکتوری boot است. گزینه -xbootfile ممکن است برای انتخاب یک فایل متفاوت استفاده شود.
/usr/lib/swipl-10.0.2/runtime//libpl.a
کتابخانه SWI-Prolog برای تعبیه‌سازی. همچنین plld(1) را ببینید.

صفحه اصلی وب SWI-Prolog در http://www.swi-prolog.org

Jan Wielemaker SWI-Prolog Reference Manual در http://www.swi-prolog.org/pldoc/index.html

مستندات بسته‌های افزونه در /usr/lib/swipl-10.0.2/boot/doc

William F. Clocksin & Christopher S. Mellish, Programming in Prolog, fourth edition, Springer Verlag, Berlin 1994.

swipl-ld(1)

این نرم‌افزار به صورت همان‌گونه که هست (AS IS) ارائه می‌شود، بدون هیچ‌گونه ضمانت صریح یا ضمنی، از جمله اما نه محدود به ضمانت‌های تجاری بودن، مناسب بودن برای یک هدف خاص و عدم نقض حقوق دیگران. در هیچ شرایطی نویسنده یا کارفرمای او مسئولیتی در قبال هرگونه ادعا، خسارت یا سایر تعهدات ناشی از نرم‌افزار، استفاده یا سایر تعاملات با نرم‌افزار نخواهند داشت.

نرم‌افزار SWI-Prolog تحت مجوز Simplified BSD یا BSD-2 توزیع شده است. یک پیکربندی خاص ممکن است حاوی مؤلفه‌هایی باشد که مشمول شرایط مجوزهای دیگر هستند. از license/0 برای یافتن مؤلفه‌هایی با شرایط مجوز محدودتر استفاده کنید. برای جزئیات به صفحه مجوز SWI-Prolog در http://www.swi-prolog.org/license.html مراجعه کنید.

حق نشر (c) 1986-2020 دانشگاه آمستردام، دانشگاه VU آمستردام

Jan Wielemaker

October 10, 2020 SWI-Prolog 8