.\" This manpage has been automatically generated by docbook2man .\" from a DocBook document. This tool can be found at: .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . .TH "SLSH" "1" "19 February 2021" "" "" .SH "نام (NAME)" slsh \- مفسر اسکریپت‌های S-Lang .SH "خلاصه دستور (SYNOPSIS)" \fBslsh\fR [ \fB--help\fR ] [ \fB--version\fR ] [ \fB-g\fR ] [ \fB-n\fR ] [ \fB--init \fIfile\fB\fR ] [ \fB--no-readline\fR ] [ \fB-e \fIstring\fB\fR ] [ \fB-i\fR ] [ \fB-q, --quiet\fR ] [ \fB-t\fR ] [ \fB-v\fR ] [ \fB-|\fIscript-file args...\fB\fR ] .SH "توضیحات (DESCRIPTION)" .PP \fBslsh\fR برنامه‌ای ساده برای تفسیر اسکریپت‌های S-Lang است. این برنامه از بارگذاری پویای ماژول‌های S-Lang پشتیبانی کرده و شامل یک واسط readline برای استفادهٔ تعاملی است. .SH "گزینه‌ها (OPTIONS)" .TP \fB--help\fR نمایش خلاصه‌ای از گزینه‌ها. .TP \fB--version\fR نمایش اطلاعات نگارش \fBslsh\fR. .TP \fB-g\fR کامپایل به همراه کدهای اشکال‌زدایی، گزارش‌های ردگیری (tracebacks) و غیره. .TP \fB-n\fR بارگذاری نکردن فایل مقداردهی اولیهٔ شخصی. .TP \fB--init \fIfile\fB\fR استفاده از این فایل به جای ~/.slshrc. .TP \fB--no-readline\fR عدم استفاده از واسط readline در حالت تعاملی. .TP \fB-e \fIstring\fB\fR اجرای «string» به عنوان کد S-Lang. .TP \fB-i\fR اجبار به ورود به حالت تعاملی. در حالت عادی اگر هر دو ورودی استاندارد (stdin) و خروجی استاندارد (stdout) به یک ترمینال متصل باشند، \fBslsh\fR به حالت تعاملی می‌رود. .TP \fB-q, --quiet\fR راه‌اندازی در حالت بی‌صدا با چاپ نکردن اطلاعات نگارش و حق تکثیر. .TP \fB-t\fR به طور معمول، \fBslsh\fR در صورت تعریف بودن slsh_main آن را فراخوانی می‌کند. این گزینه از رخ دادن این رفتار جلوگیری می‌کند و برای بررسی خطاهای ساختاری (syntax error) کاربرد دارد. .TP \fB-v\fR نمایش پیام‌های باجزئیات (verbose) بارگذاری. این گزینه برای مشاهدهٔ فایل‌هایی که در حال بارگذاری هستند مفید است. .SH "مقداردهی اولیه (INITIALIZATION)" .PP هنگام راه‌اندازی، برنامه سعی می‌کند \fIslsh.rc\fR را به صورت زیر بارگذاری کند. اگر متغیرهای محیطی SLSH_CONF_DIR یا SLSH_LIB_DIR وجود داشته باشند، \fBslsh\fR دایرکتوری‌های متناظر را برای یافتن \fIslsh.rc\fR\& بررسی می‌کند. در غیر این صورت، مسیرهای زیر را جستجو خواهد کرد: \fI$(prefix)/etc/\fR (همان‌طور که در Makefile مشخص شده است) \fI/usr/local/etc/\fR \fI/usr/local/etc/slsh/\fR \fI/etc/\fR \fI/etc/slsh/\fR .PP فایل \fIslsh.rc\fR ممکن است فایل‌های دیگری را از دایرکتوری کتابخانهٔ slsh به روشی که در ادامه شرح داده شده است، بارگذاری کند. .PP پس از بارگذاری \fIslsh.rc\fR، چنانچه فایل $HOME/.slshrc وجود داشته باشد، \fBslsh\fR آن را بارگذاری می‌کند. در نهایت، اسکریپت تعیین‌شده در خط فرمان را بارگذاری خواهد کرد. اگر نام اسکریپت \- باشد، از stdin خوانده می‌شود. اگر نام اسکریپت مشخص نشده باشد یا رشته‌ای برای اجرا با گزینهٔ \fB-e\fR تعیین نشده باشد، \fBslsh\fR به حالت تعاملی رفته و ورودی را از ترمینال می‌خواند. اگر اسکریپت وجود داشته باشد و تابعی به نام slsh_main را تعریف کرده باشد، آن تابع فراخوانی خواهد شد. .SH "بارگذاری فایل‌ها (LOADING FILES)" .PP هنگامی که یک اسکریپت فایلی را از طریق تابع توکار evalfile یا تابع require (که به صورت خودکار توسط slsh.rc بارگذاری می‌شود) بارگذاری می‌کند، فایل در امتداد مسیر SLSH_PATH همان‌گونه که در Makefile تعیین شده است جستجو می‌شود. یک مسیر جایگزین را می‌توان توسط متغیر محیطی SLSH_PATH مشخص کرد. .PP مسیر جستجو را می‌توان در زمان اجرا از طریق توابع get_slang_load_path و set_slang_load_path جویا شد و تنظیم کرد؛ برای نمونه: .nf set_slang_load_path ("/home/bill/lib/slsh:/usr/share/slsh"); .fi .SH "حالت تعاملی (INTERACTIVE MODE)" .PP هنگامی که \fBslsh\fR بدون اسکریپت اجرا شود یا آرگومان خط فرمان \fB-i\fR به آن داده شود، وارد حالت تعاملی خواهد شد. در این حالت، برای دریافت ورودی از کاربر اعلان درخواست می‌شود. برنامه با دریافت EOF (کلیدهای Ctrl-D) یا با خروج کاربر از طریق دستور quit، این حالت را ترک کرده و پایان می‌یابد. .PP اگر در حین اجرای یک دستور استثنای مهارنشده‌ای رخ دهد، پیام خطا نمایش داده شده و برای دریافت ورودی بیشتر به کاربر اعلان داده می‌شود. .PP هر شیئی که پس از اجرای دستور روی پشته باقی بماند، چاپ شده و پشته پاک خواهد شد. این امر حالت تعاملی را به عنوان یک ماشین‌حساب کاربردی می‌سازد؛ برای نمونه: .nf slsh> 3*10; 30 slsh> x = [1:20]; slsh> sum (sin(x)-cos(x)); 0.458613 slsh> quit; .fi توجه داشته باشید که در این حالت، متغیرها به صورت خودکار اعلان می‌شوند. .PP حالت تعاملی همچنین از ثبت وقایع (logging) دستورها پشتیبانی می‌کند. ثبت وقایع با تابع start_log فعال می‌شود. تابع stop_log ثبت وقایع را خاموش می‌کند. فایل پیش‌فرضی که اطلاعات وقایع در آن نوشته می‌شود \fIslsh.log\fR\& است. یک فایل جایگزین را می‌توان به عنوان آرگومان اختیاری برای تابع start_log تعیین کرد: .nf slsh> start_log; Logging input to slsh.log \&. \&. slsh> stop_log; slsh> start_log("foo.log"); Logging input to foo.log \&. \&. slsh> stop_log; slsh> start_log; Logging input to foo.log .fi .PP مشابه آن، تابع save_input می‌تواند برای ذخیرهٔ ورودی قبلی در یک فایل مشخص به کار رود: .nf slsh> save_input; Input saved to slsh.log slsh> save_input ("foo.log"); Input saved to foo.log .fi .PP همان‌طور که مثال‌های بالا نشان می‌دهند، خطوط باید با یک نقطه‌ویرگول (semicolon) پایان یابند. این یک ویژگی بنیادین زبان است و به دستورها اجازه می‌دهد در چند خط امتداد یابند؛ برای نمونه: .nf slsh> x = [ 1,2,3, 4,5,6]; slsh> sum(x); .fi برای راحتی بیشتر، برخی کاربران ترجیح می‌دهند دستورها به طور خودکار با نقطه‌ویرگول پایان یابند. جهت افزودن خودکار و بی‌صدای نقطه‌ویرگول به انتهای هر خط ورودی، عبارت زیر را در فایل \fI$HOME/.slshrc\fR قرار دهید: .nf #ifdef __INTERACTIVE__ slsh_append_semicolon (1); #endif .fi .PP حالت تعاملی همچنین از گریز به شل (shell escapes) پشتیبانی می‌کند. برای ارسال یک دستور به شل، پیشوند ! را پیش از آن قرار دهید؛ برای نمونه: .nf slsh> !pwd /grandpa/d1/src/slang2/slsh slsh> !cd doc/tm slsh> !pwd /grandpa/d1/src/slang2/slsh/doc/tm .fi .PP در نهایت، حالت تعاملی از توابع help و apropos پشتیبانی می‌کند: .nf slsh> apropos list apropos list ==> List_Type list_append list_delete \&. \&. slsh> help list_append list_append SYNOPSIS Append an object to a list USAGE list_append (List_Type, object, Int_Type nth) \&. \&. .fi برای راحتی، توابع help و apropos نیازی به رعایت محدودیت‌های نحوی سایر توابع ندارند. .SH "سازوکار تاریخچه READLINE (READLINE HISTORY MECHANISM)" .PP به طور پیش‌فرض، \fBslsh\fR برای استفاده از واسط readline متعلق به S-Lang ساخته شده است که شامل تکمیل خودکار سفارشی‌پذیر دستورها و سازوکار تاریخچه است. هنگامی که \fBslsh\fR (یا هر برنامهٔ S-Lang دیگری که از این ویژگی بهره می‌برد) در حالت تعاملی آغاز به کار می‌کند، به دنبال فایلی به نام \fI\&.slrlinerc\fR در دایرکتوری خانگی کاربر می‌گردد و در صورت وجود، آن را بارگذاری خواهد کرد. این فایل به کاربر امکان می‌دهد واسط readline را سفارشی‌سازی کرده و ذخیرهٔ تاریخچه را میان نشست‌ها فعال کند. به عنوان نمونه، نگارشی از فایل \fI\&.slrlinerc\fR نویسنده در زیر آمده است: .nf % Load some basic functions that implement the history mechanism () = evalfile ("rline/slrline.rc"); % The name of the history file -- expands to .slsh_hist for slsh RLine_History_File = "$HOME/.${name}_hist"; % Some addition keybindings. Some of these functions are defined % in rline/editfuns.sl, loaded by rline/slrline.rc rline_unsetkey ("^K"); rline_setkey ("bol", "^B"); rline_setkey ("eol", "^E"); rline_setkey (&rline_kill_eol, "^L"); rline_setkey (&rline_set_mark, "^K^B"); rline_setkey (&rline_copy_region, "^Kk"); rline_setkey (&rline_kill_region, "^K^V"); rline_setkey (&rline_yank, "^K^P"); rline_setkey ("redraw", "^R"); #ifexists rline_up_hist_search % Map the up/down arrow to the history search mechanism rline_setkey (&rline_up_hist_search, "\\e[A"); rline_setkey (&rline_down_hist_search, "\\e[B"); #endif #ifexists rline_edit_history rline_setkey (&rline_edit_history, "^Kj"); #endif % Add a new function private define double_line () { variable p = rline_get_point (); variable line = rline_get_line (); rline_eol (); variable pend = rline_get_point (); rline_ins (line); rline_set_point (pend + p); } rline_setkey (&double_line, "^K^L"); .fi .SH "اسکریپت‌های گوناگون (MISCELLANEOUS SCRIPTS)" .PP چندین اسکریپت نمونهٔ مفید در \fI$prefix/share/slsh/scripts/\fR قرار دارند که در آن $prefix نشان‌دهندهٔ پیشوند نصب \fBslsh\fR است (\fI/usr\fR، \fI/usr/local\fR، ...). این اسکریپت‌ها شامل موارد زیر هستند: .TP \fBsldb\fR اسکریپتی که اشکال‌زدای S-Lang را اجرا می‌کند. .TP \fBjpegsize\fR اندازهٔ یک فایل jpeg را گزارش می‌دهد. .TP \fBsvnsh\fR شلی برای مرور یک مخزن SVN. .SH "نویسندگان (AUTHORS)" .PP نویسندهٔ اصلی \fBslsh\fR جان ای. دیویس (John E. Davis) \& است. حالت تعاملی توسط مایک نوبل (Mike Noble) ارائه شده است. کتابخانهٔ S-Lang که \fBslsh\fR بر پایهٔ آن ساخته شده است، اساساً حاصل کار John E. Davis به همراه یاری افراد بسیار دیگری است. .PP این صفحهٔ راهنما در اصل توسط Rafael Laboissiere برای سیستم دبیان (Debian) نوشته شده است (اما ممکن است توسط دیگران نیز استفاده شود). .PP حق نسخه‌برداری، توزیع و/یا تغییر این سند تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نگارش ۲ یا هر نگارش بعدی منتشرشده توسط بنیاد نرم‌افزارهای آزاد اعطا می‌شود. .PP در سیستم‌های دبیان، متن کامل مجوز عمومی همگانی گنو در \fI/usr/share/common-licenses/GPL\fR قابل مشاهده است.