.\" -*- nroff -*- .TH swipl 1 "Oct 10, 2020" "SWI-Prolog 8" "راهنمای دستورات کاربر" .SH "نام (NAME)" swipl \- مفسر و کامپایلر استاندارد زبان برنامه‌نویسی منطقی SWI-Prolog .SH "خلاصه دستور (SYNOPSIS)" .B swipl .RB [ \-\-help | \-\-version | \-\-arch | \-\-dump\-runtime\-variables ] .br .B swipl [\fIگزینه‌ها\fR] .IR prolog-file " ... [--] [" arg " ...]" .br .B swipl [\fIگزینه‌ها\fR] .RB [ "\-o \fIoutput" ] .BI \-c " file ..." .br .B swipl [\fIگزینه‌ها\fR] .RB [ "\-o \fIoutput" ] .BI \-b " initfile ..." حالت اول اطلاعاتی درباره سیستم ارائه کرده و بلافاصله خارج می‌شود. حالت دوم روش اصلی برای فراخوانی پرولاگ روی یک یا چند فایل منبع پرولاگ و ارائه آرگومان‌ها به برنامه است که می‌توان آن‌ها را با استفاده از .BR "current_prolog_flag" "(argv, Argv)." درخواست کرد. حالت سوم برای ایجاد یک .I وضعیت ذخیره‌شده (saved state) استفاده می‌شود، در حالی که حالت آخر برای کامپایل راه‌اندازی (boot-compilation) بخش‌های پرولاگ سیستم به کار می‌رود. .SH "توضیحات (DESCRIPTION)" .B SWI-Prolog یک پیاده‌سازی جامع و پایدار از زبان پرولاگ همراه با مجموعه‌ای بزرگ از کتابخانه‌ها است. از ویژگی‌های برجسته آن می‌توان به پشتیبانی بالغ از چندریسمانی (multi-threading)، کتابخانه بالغ وب‌سرور تعبیه‌شده، ابزارهای توسعه گرافیکی (اشکال‌زدا، تحلیل‌گر عملکرد، ارجاع‌دهنده متقابل و ویرایشگر)، یک مخزن بهینه و تعبیه‌شده RDF، پشتیبانی از XML/SGML/HTML و یونیکد اشاره کرد. ویژگی‌های با پشتیبانی گسترده‌تر شامل پشتیبانی از برنامه‌نویسی محدودیت (constraint programming)، جمع‌آوری زباله اتم‌ها (atom garbage collection)، و رابط‌ها به پایگاه‌های داده (ODBC)، C، C++ و Java (JPL) است. .B SWI-Prolog استاندارد هسته ISO را پیاده‌سازی می‌کند. بسیاری از قابلیت‌های توسعه‌یافته آن تا حد زیادی با YAP و SICStus Prolog سازگار هستند. این صفحه راهنما فقط گزینه‌های خط فرمان را فهرست می‌کند. مستندات کامل به صورت برخط و همچنین در قالب‌های .BR HTML " و " PDF در صفحه خانگی وب در دسترس است: .B http://www.swi-prolog.org .SH "گزینه‌ها (OPTIONS)" .TP .B \-\-help ارائه خلاصه‌ای از مهم‌ترین گزینه‌ها. .TP .B \-\-version نمایش اطلاعات نسخه و معماری. .TP .B \-\-abi\-version نمایش کلید نسخه ABI. این کلید سازگاری باینری رابط‌های مختلف را نشان می‌دهد. .TP .B \-\-arch چاپ شناسه معماری. .TP .BR \-\-dump\-runtime\-variables [=format] تخلیه اطلاعاتی که معمولاً برای اسکریپت‌های نصب مفید هستند در قالبی که توسط .IR format تعریف می‌شود. قالب‌های تعریف‌شده عبارتند از .BR sh " (پیش‌فرض، bourne shell) و " cmd " (محیط CMD ویندوز)" . این گزینه توسط .BR swipl-ld (1) برای دریافت اطلاعات لازم درباره پرولاگ استفاده می‌شود. این گزینه معمولاً به صورت .I eval `swipl --dump-runtime-variables` فراخوانی می‌شود که متغیرهای شل زیر را مقداردهی می‌کند: .RS .TP .B CC کامپایلر .B C استفاده‌شده برای کامپایل SWI-Prolog. .TP .B PLBASE دایرکتوری خانگی SWI-Prolog. این مقدار مشابه مقداری است که توسط .I current_prolog_flag home برگردانده می‌شود. .TP .B PLARCH شناسه معماری استفاده‌شده. این شناسه به همراه .B PLBASE محل مؤلفه‌های مختلف را مشخص می‌کند. به عنوان مثال، کتابخانه مورد نیاز برای تعبیه‌سازی در مسیر .B $PLBASE/lib/$PLARCH/libswipl.a قرار دارد. .TP .B PLBITS بیت‌های آدرس‌دهی برای ماشین مجازی (VM)؛ ۳۲ یا ۶۴ بیتی. .TP .B PLLIB شناسه کامپایلر C برای پیوند به SWI-Prolog؛ معمولاً .B \-lswipl .TP .B PLLIBSWIPL مسیر کامل به شیء مشترک (DLL) که هسته پرولاگ را فراهم می‌کند. .TP .B PLLIBS کتابخانه‌های اضافی مورد نیاز برای پیوند با PLLIB. .TP .B PLCFLAGS فلگ‌هایی که باید برای تولید کد سازگار به کامپایلر C ارسال شوند. .TP .B PLLDFLAGS فلگ‌هایی که باید برای پیوند فایل‌های اجرایی تعبیه‌شده به پیونددهنده C ارسال شوند. .TP .B PLSOEXT پسوند مورد استفاده توسط سیستم‌عامل میزبان برای اشیاء مشترک. در اکثر سیستم‌های یونیکس این مقدار "so" و در مایکروسافت ویندوز "dll" است. AIX از "o" و HPUX از "sl" استفاده می‌کند. .TP .B PLSOPATH متغیر محیطی مورد استفاده توسط سیستم‌عامل میزبان برای گسترش مسیر جستجوی اشیاء مشترک. به عنوان مثال در سیستم‌های ELF این متغیر "LD_LIBRARY_PATH" و در مایکروسافت ویندوز "PATH" است. .TP .B PLVERSION نمایش عددی نسخه SWI-Prolog. .TP .B PLVERSIONTAG در صورت وجود، یک برچسب نسخه مانند "rc1". .TP .B PLSHARED دارای مقدار .B yes است اگر پرولاگ از پیوند کتابخانه‌های مشترک با استفاده از .B load_foreign_library/[1,2] پشتیبانی کند، و در غیر این صورت .B no است. .TP .B PLTHREADS دارای مقدار .B yes است اگر پرولاگ برای چندریسمانی کامپایل شده باشد، و در غیر این صورت .B no است. .RE .TP .BI \-\-home= DIR استفاده از .I DIR به عنوان دایرکتوری خانگی. .TP .BI \-\-stack\-limit= size [bkmg] تنظیم محدودیت پشته ترکیبی به .IR size " بایت." پسوند به حروف بزرگ و کوچک حساس نیست و واحد را به صورت .IR b " (بایت)،" .IR k " (کیلوبایت)،" .IR m " (مگابایت) یا " .IR g " (گیگابایت)" تعریف می‌کند. .TP .BI \-\-table\-space= size [bkmg] تنظیم محدودیت فضای جدول برای وضوح SLG (جدول‌بندی / tabling) به .IR size " بایت." پسوندها مشابه گزینه .B \-\-stack\-limit هستند. .TP .BI \-\-shared\-table\-space= size [bkmg] تنظیم محدودیت فضای جدول برای جدول‌بندی مشترک به .IR size " بایت." پسوندها مشابه گزینه .B \-\-stack\-limit هستند. .TP .BI \-O کامپایل بهینه‌سازی‌شده. به .B set_prolog_flag/2 در راهنمای مرجع SWI-Prolog مراجعه کنید. .TP .BI \-b " initfile ... " -c " file ..." کامپایل راه‌اندازی (Boot). فایل‌های .I "initfile ..." توسط کامپایلر راه‌اندازی نوشته‌شده به C و فایل‌های .I "file ..." توسط کامپایلر معمولی پرولاگ در یک فایل کد میانی کامپایل می‌شوند. این گزینه برای نگهداری سیستم است و فقط جهت ارجاع ذکر شده است. .TP .BI \-c " file ..." کامپایل .I "file ..." در یک فایل کد میانی. .TP .BI \-d " level" تنظیم سطح اشکال‌زدایی روی .IR level . این گزینه برای نگهداری سیستم است و فقط جهت ارجاع ذکر شده است. .TP .BR \-\-packs [=bool] غیرفعال کردن پیوست بسته‌های افزونه (الحاقی‌ها). .TP .BR \-\-pce [=bool] غیرفعال کردن زیرسیستم واسط گرافیکی XPCE. .TP .BR \-\-pldoc [=port] راه‌اندازی سیستم مستندات PlDoc روی یک پورت شبکه آزاد و باز کردن مرورگر کاربر در .IR http://localhost:port . اگر .I port مشخص شود، سرور روی پورت داده‌شده راه‌اندازی می‌شود اما مرورگر باز نخواهد شد. .TP .BI \-f " file" استفاده از .I "file" به عنوان فایل مقداردهی اولیه به جای .RB "`" init.pl "'. `" "-f none" "'" مانع از جستجوی SWI-Prolog برای فایل مقداردهی اولیه می‌شود. .TP .BI \-F " file" انتخاب اسکریپت راه‌اندازی از دایرکتوری خانگی SWI-Prolog. .I file نام پایه (base-name) اسکریپت را مشخص می‌کند. پسوند فایل .I .rc است. اسکریپت پیش‌فرض از نام پایه فایل اجرایی با در نظر گرفتن تمام کاراکترهای حرفی‌عددی اولیه (حروف، ارقام و زیرخط) از نام برنامه استخراج می‌شود. بنابراین اگر نام برنامه .I swi-2.0 باشد، سعی می‌کند فایل .I swi.rc را از دایرکتوری خانگی SWI-Prolog بارگیری کند. اگر فایل وجود نداشته باشد، یا کاربر دسترسی خواندن به آن را نداشته باشد، اسکریپت در سکوت بارگیری نمی‌شود. .TP .BI \-s " file" بارگیری .I file به عنوان یک اسکریپت. این گزینه ممکن است از طریق شل استفاده شود تا پرولاگ فایلی را قبل از ورود به سطح بالا (toplevel) بارگیری کند. منسوخ شده است، زیرا نام‌های فایل با پسوند پرولاگ .RB "(" .pl " یا " .qlf ")" برای بارگیری برنامه استفاده می‌شوند. .TP .BI \-l " file" بارگیری .I file به عنوان یک اسکریپت. این یک مترادف برای .I \-s است که با چندین پیاده‌سازی دیگر پرولاگ سازگار است. اگر چندین آرگومان .IR \-s " یا " \-l ارائه شود، تمام فایل‌های مشخص‌شده به ترتیبی که در فهرست آرگومان‌ها ظاهر می‌شوند، بارگیری خواهند شد. .TP .BR \-\-quiet "[=bool] " \-q عملکرد بدون پیام (ساکت). این گزینه تمام پیام‌های .I اطلاعاتی را سرکوب می‌کند. .TP .BR \-\-debug [=bool] غیرفعال کردن تولید کدی که می‌توان با استفاده از .IR trace/0 ، .IR spy/1 و غیره اشکال‌زدایی کرد. .TP .BR \-\-debug\-on\-interrupt [=bool] شروع فوری مدیریت سیگنال SIGINT (کلید Control-C) برای راه‌اندازی اشکال‌زدا. به طور پیش‌فرض، هنگامی که وارد سطح بالای تعاملی می‌شوید، این ویژگی فعال است. .TP .BR \-\-on-error =style نحوه برخورد با پیام‌های خطای (چاپ‌شده). مقدار پیش‌فرض .IR print است که باعث می‌شود خطاها چاپ شده و اجرا ادامه یابد. با استفاده از .IR status اجرا مانند print ادامه می‌یابد، اما .I halt/0 باعث می‌شود فرآیند با وضعیت 1 خارج شود و .I halt باعث می‌شود فرآیند در اولین خطا با وضعیت 1 خارج شود. .TP .BR \-\-on-warning =style مشابه .IR \-\-on-error ، اما برای پیام‌های هشدار. .TP .BI \-g " goal" هدف .I (Goal) درست قبل از ورود به سطح بالا اجرا می‌شود. این گزینه ممکن است چندین بار تکرار شود. اهداف به ترتیب ظاهر شدن اجرا می‌شوند. نقاط انتخاب (choice points) احتمالی هرس می‌شوند. اگر یک هدف .I با شکست مواجه شود یک خطا چاپ می‌شود (بسته به پرچم .BR "\-q" ) و فرآیند با کد خروج 1 متوقف می‌شود. اگر یک هدف .I یک استثنا ایجاد کند خطا چاپ شده و فرآیند با کد خروج 2 متوقف می‌شود. اگر هیچ هدفی ارائه نشود، .I version/0 برای نوشتن پیام خوش‌آمدگویی فراخوانی می‌شود. با تعیین .BR "\-g true" می‌توان از نمایش پیام خوش‌آمدگویی جلوگیری کرد. .I goal می‌تواند یک عبارت پیچیده باشد. در این حالت، معمولاً نقل‌قول‌ها برای محافظت از آن در برابر بسط توسط شل یونیکس مورد نیاز است. .TP .BI \-o " output" در ترکیب با .B \-b یا .B \-c برای تعیین فایل خروجی کامپایل استفاده می‌شود. .TP .BI \-p " alias" = pathlist تعریف یک نام مستعار مسیر برای .BR file_search_path/2 . مقدار .I pathlist فهرستی از مقادیر برای نام مستعار است که با ":" از یکدیگر جدا شده‌اند. به .B file_search_path/2 در راهنمای مرجع SWI-Prolog مراجعه کنید. .TP .BI \-t " goal" استفاده از .I goal به عنوان سطح بالای تعاملی به جای هدف پیش‌فرض .BR prolog/0 . مقدار .I goal می‌تواند یک عبارت پیچیده باشد. اگر هدف سطح بالا با موفقیت انجام شود، SWI-Prolog با وضعیت 0 خارج می‌شود. اگر با شکست مواجه شود، وضعیت خروج 1 خواهد بود. این پرچم همچنین هدفی را که توسط .B break/0 و .BR abort/0 شروع می‌شود تعیین می‌کند. اگر می‌خواهید مانع از ورود کاربر به حالت تعاملی شوید، برنامه را با .RB "`" \-g .IR goal "'" راه‌اندازی کرده و .RB "`" halt "'" را به عنوان سطح بالا قرار دهید. .TP .BI \-x " bootfile" شروع از یک فایل کد میانی حاصل از کامپایل پرولاگ با استفاده از گزینه .B \-b یا .B \-c ، یا ایجادشده با استفاده از .BR qsave_program/[1,2] . .TP .BR \-\-tty [=bool] تغییر کنترل tty (با استفاده از .BR ioctl (2)). به طور معمول کنترل tty روشن است. این پیش‌فرض به نوع نصب بستگی دارد. اگر از SWI-Prolog در ویرایشگری مانند GNU Emacs استفاده می‌شود، ممکن است بخواهید کنترل tty را خاموش کنید. در صورت خاموش بودن، .B get_single_char/1 و ردیاب منتظر دریافت کاراکتر بازگشت به سرخط (carriage return) خواهند ماند. .TP .B \-\-win\-app این گزینه فقط در .IR swipl-win.exe در دسترس است. میانبر منوی استارت از این گزینه برای تغییر دایرکتوری کاری به .IR ...\eDocuments\eProlog استفاده می‌کند. اگر زیرپوشه .I Prolog وجود نداشته باشد، ایجاد خواهد شد. .TP .BR \-\-signals [=bool] غیرفعال کردن مدیریت سیگنال‌ها. معمولاً در صورتی استفاده می‌شود که SWI-Prolog در برنامه دیگری در سیستم‌های یونیکس تعبیه شده باشد. .TP .BR \-\-sigalert= "NUM" استفاده از .I NUM برای رفع انسداد فراخوانی‌های سیستمی. مقدار پیش‌فرض .BR SIGUSR2 است. استفاده از 0 نصب مدیریت‌کننده سیگنال را غیرفعال کرده و تحویل سیگنال‌های ریسمان را تا زمان تکمیل فراخوانی سیستمی مسدودکننده به تعویق می‌اندازد. .TP .BR \-\-threads [=bool] غیرفعال کردن ایجاد ریسمان‌ها در نسخه چندریسمانی. این کار به طور ویژه مانع از اجرای جمع‌آوری زباله سراسری در یک ریسمان مجزا می‌شود و ممکن است برای موقعیت‌هایی که چندریسمانی مطلوب نیست استفاده شود. .TP .B \-\-traditional غیرفعال کردن افزونه‌های نسخه 7 SWI-Prolog که با نسخه‌های پیشین ناسازگار هستند. .TP .B \-\- پایان بررسی و پیمایش آرگومان‌های بعدی. .SH "محیط (ENVIRONMENT)" .TP .I SWI_HOME_DIR محل یافتن فایل راه‌اندازی و کتابخانه‌ها. معمولاً از فایل اجرایی یا مکان پیش‌فرض پیکربندی‌شده شناسایی می‌شود. اگر SWI-Prolog در فایل اجرایی دیگری تعبیه شده باشد، ممکن است ارائه این مقدار از طریق متغیر محیطی ضروری باشد. .SH "راهنمای برخط (ON-LINE HELP)" SWI-Prolog دارای راهنمای برخط است. این بخش امکان جستجو و مرور سریع راهنمای مرجع SWI-Prolog را فراهم می‌کند. راهنمای برخط می‌تواند تعاریف گزاره‌ها و همچنین بخش‌های کاملی از راهنما را نمایش دهد. .TP .B help معادل با .BR help(help/1) . .TP .BI help( \+What ) نمایش بخش مشخصی از راهنما. .I What یکی از موارد زیر است: .RS .TP نام/تعداد_آرگومان (Name/Arity) ارائه راهنما درباره گزاره مشخص‌شده. .TP نام (Name) ارائه راهنما درباره گزاره نام‌برده با هر تعداد آرگومان یا یک تابع رابط C با آن نام. .TP بخش (Section) نمایش بخش مشخص‌شده از راهنمای مرجع SWI-Prolog. شماره بخش‌ها اعدادی هستند که با خط تیره از هم جدا شده‌اند؛ به عنوان مثال .B 2-3 به بخش 2.3 راهنما اشاره دارد. .PP اگر پرولاگ همراه با ابزار .B GUI .B XPCE استفاده شود، این گزاره‌ها یک واسط گرافیکی را راه‌اندازی می‌کنند که واسطی منسجم برای .BR help/1 ، .B apropos/1 و .B explain/1 ارائه می‌دهد. .RE .SH "فایل‌ها (FILES)" این نسخه نصب‌شده از SWI-Prolog با استفاده از گزینه پیکربندی .BI \-\-prefix= /usr پیکربندی شده است. اگر فایل‌های فهرست‌شده در زیر در محل مشخص‌شده قرار ندارند، احتمالاً محل نصب جابه‌جا شده است. از .TP ?- current_prolog_flag(home, Home). .P برای یافتن دایرکتوری نصب محلی SWI-Prolog استفاده کنید. .TP .I ~/.config/swi-prolog/init.pl فایل‌های مقداردهی اولیه شخصی که در هنگام راه‌اندازی توسط SWI-Prolog خوانده می‌شوند. مکان دقیق به سیستم‌عامل بستگی دارد. .TP .I /usr/lib/swipl-10.0.2/bin// محل فایل‌های اجرایی. .TP .I /usr/lib/swipl-10.0.2/include/ محل فایل‌های سرآیند (include). در صورت داشتن دسترسی نوشتن، SWI-Prolog.h نیز در /usr/include/SWI-Prolog.h کپی می‌شود. .TP .I /usr/lib/swipl-10.0.2/library/ کتابخانه‌های کاربر SWI-Prolog. .TP .I /usr/lib/swipl-10.0.2/boot/ بخش‌های هسته SWI-Prolog که به زبان پرولاگ نوشته شده‌اند. فایل راه‌اندازی /usr/lib/swipl-10.0.2/ ممکن است با استفاده از دستور زیر از دایرکتوری /usr/lib/swipl-10.0.2 بازسازی شود: .RS .TP bin//swipl \-O \-o \-b boot/init.pl .RE .TP .I /usr/lib/swipl-10.0.2/doc/packages مستندات HTML و/یا PDF مربوط به افزونه‌های نصب‌شده. .TP .I /usr/lib/swipl-10.0.2/ فایل راه‌اندازی پیش‌فرض. این یک فایل «کد میانی» حاوی کدهای از پیش کامپایل‌شده از دایرکتوری boot است. گزینه .BI \-x bootfile ممکن است برای انتخاب یک فایل متفاوت استفاده شود. .TP .I /usr/lib/swipl-10.0.2/runtime//libpl.a کتابخانه SWI-Prolog برای تعبیه‌سازی. همچنین .I plld(1) را ببینید. .SH "همچنین ببینید (SEE ALSO)" .PP صفحه اصلی وب SWI-Prolog در .I http://www.swi-prolog.org .PP Jan\ Wielemaker .IR "SWI-Prolog Reference Manual" " در" .I http://www.swi-prolog.org/pldoc/index.html .PP مستندات بسته‌های افزونه در .I /usr/lib/swipl-10.0.2/boot/doc .PP William\ F.\ Clocksin & Christopher\ S.\ Mellish, .IR "Programming in Prolog" , fourth edition, Springer Verlag, Berlin 1994. .PP .BR swipl-ld "(1)" .SH "ضمانت‌نامه (WARRANTY)" این نرم‌افزار به صورت .B "همان‌گونه که هست (AS IS)" ارائه می‌شود، بدون هیچ‌گونه ضمانت صریح یا ضمنی، از جمله اما نه محدود به ضمانت‌های تجاری بودن، مناسب بودن برای یک هدف خاص و عدم نقض حقوق دیگران. در هیچ شرایطی نویسنده یا کارفرمای او مسئولیتی در قبال هرگونه ادعا، خسارت یا سایر تعهدات ناشی از نرم‌افزار، استفاده یا سایر تعاملات با نرم‌افزار نخواهند داشت. .SH "اطلاعات مجوز (LICENSE INFORMATION)" نرم‌افزار SWI-Prolog تحت مجوز .IR "Simplified BSD" " یا " "BSD-2" توزیع شده است. یک پیکربندی خاص ممکن است حاوی مؤلفه‌هایی باشد که مشمول شرایط مجوزهای دیگر هستند. از .B license/0 برای یافتن مؤلفه‌هایی با شرایط مجوز محدودتر استفاده کنید. برای جزئیات به صفحه مجوز SWI-Prolog در .B http://www.swi-prolog.org/license.html مراجعه کنید. .SH "حق نشر (COPYRIGHT)" حق نشر (c) 1986\-2020 دانشگاه آمستردام، دانشگاه VU آمستردام .SH "نویسندگان (AUTHORS)" Jan Wielemaker