HEXER(1) General Commands Manual HEXER(1)

hexer - ویرایشگر پرونده‌های باینری (دودویی)

hexer [گزینه‌ها] [پرونده [...]]

hexer یک ویرایشگر چندبافری برای مشاهده و دستکاری پرونده‌های باینری (دودویی) است. این برنامه نمی‌تواند (و نباید) برای ویرایش دستگاه‌های بلوکی (block devices) استفاده شود، زیرا تلاش می‌کند کل پرونده را در یک بافر بارگذاری کند (البته برای دیسکت‌ها کار خواهد کرد). مهم‌ترین ویژگی‌های hexer عبارتند از: چندبافری بودن، قابلیت لغو (undo) چندسطحی، ویرایش خط فرمان به همراه تکمیل خودکار، و عبارات باقاعده دودویی (به زیر مراجعه کنید). رابط کاربری آن مشابه vi نگه‌داشته شده است؛ بنابراین اگر با نحوه استفاده از vi آشنایی داشته باشید، شروع کار با آن آسان خواهد بود.

ویرایش پرونده‌ها در حالت فقط‌خواندنی.
بازیابی پرونده filename پس از خرابی ناگهانی (پیاده‌سازی نشده است).
شروع جلسه ویرایش با اجرای دستور ویرایشگر command. اگر command شامل فاصله باشد، باید درون علامت نقل‌قول دوتایی قرار گیرد. امکان مشخص کردن چندین دستور در خط فرمان وجود دارد:
hexer -c command1 -c command2 ...
غیرفعال کردن استفاده از توالی ti/te ترمکپ/ترمینفو (termcap/terminfo).
نمایش یک پیام کوتاه راهنما و خروج.
نمایش اطلاعات نگارش برنامه و خروج.
فهرست کردن ویژگی‌های پشتیبانی‌شده توسط برنامه و خروج.
+command
معادل گزینه -c است.

توجه: گزینه‌های طولانی در تمام سیستم‌ها در دسترس نیستند.

این ویرایشگر دستورات راه‌اندازی خود را از پرونده ~/.hexerrc می‌خواند (با مقداردهی متغیر محیطی HEXERRC می‌توان یک پرونده راه‌اندازی دیگر را مشخص کرد). خطوط خالی و خطوطی که با نویسه «"» (نقل‌قول دوگانه) شروع می‌شوند، نادیده گرفته می‌شوند. امکان قرار دادن یک دستور و یک توضیح (کامنت) در یک خط یکسان وجود ندارد.

همانند vi, چندین حالت ویرایش وجود دارد:

حالت دستوری (Command Mode)
برخی دستورات در حالت دستوری می‌توانند یک آرگومان عددی دریافت کنند. برای وارد کردن آرگومان عددی کافی است عدد (ده‌دهی) را تایپ کنید. با تایپ کردن، عدد در سطر پایینی صفحه نمایش داده می‌شود. برای وارد کردن یک عدد هشت‌هشتی (octal)، رقم اول را «0» تایپ کنید. برای وارد کردن یک عدد شانزده‌شانزدهی (hexadecimal)، عبارت «0x» را تایپ کنید (این موضوع مشکلی ایجاد نمی‌کند، زیرا دستور x با شمارنده صفر به هر حال بی‌معنی است). برخی از دستورات می‌توانند یک ناحیه انتخاب‌شده به صورت بصری را به عنوان آرگومان دریافت کنند (به زیربخش حالت بصری (Visual Mode) مراجعه کنید).
حرکت به عقب به سمت ابتدای کلمه.
حرکت به انتهای کلمه.
اگر یک آرگومان عددی n داده شود، مکان‌نما را به موقعیت n می‌برد. اگر آرگومانی مشخص نشود، موقعیت را به انتهای بافر تنظیم می‌کند. اولین بایت در بافر در موقعیت «0» قرار دارد، بنابراین دستور رفتن به ابتدای بافر «0G» است.
نمایش نام بافر، اندازه، وضعیت و موقعیت فعلی در سطر پایینی صفحه.
حرکت دادن مکان‌نما. کلیدهای جهت‌نما نیز کار می‌کنند. آرگومان عددی (در صورت تعیین) تعداد ردیف‌ها یا ستون‌هایی که مکان‌نما جابه‌جا می‌شود را تعیین می‌کند. متفاوت با vi: مکان‌نما می‌تواند پس از آخرین بایت در بافر نیز قرار گیرد.
ورود به حالت درج (Insert Mode) (به زیر مراجعه کنید) در موقعیت فعلی مکان‌نما. اگر یک آرگومان عددی n داده شود، متن تایپ‌شده n بار درج خواهد شد. توجه: حرکت دادن مکان‌نما (با استفاده از کلیدهای جهت‌نما) آرگومان عددی را لغو می‌کند.
حرکت به تطابق بعدی با استفاده از عبارت باقاعده (RE) فعلی. این معادل تایپ «/» و سپس کلید <Return> است.
حرکت به تطابق قبلی با استفاده از عبارت باقاعده فعلی. این معادل تایپ «?» و سپس کلید <Return> است.
جای‌گذاری روکش (Paste over). بافر حذف (kill buffer) را در موقعیت فعلی با رونویسی روی محتوای بافر فعلی جای‌گذاری می‌کند. اگر آرگومان عددی n داده شود، بافر حذف n بار جای‌گذاری می‌شود.
جای‌گذاری (Paste). درج محتوای بافر حذف در موقعیت فعلی. اگر آرگومان عددی n داده شود، بافر حذف n بار درج می‌شود.
جایگزینی یک بایت منفرد با استفاده از حالت جایگزینی (Replace Mode). اگر ناحیه‌ای انتخاب شده باشد، تمام بایت‌های ناحیه انتخابی جایگزین می‌شوند. اگر یک آرگومان عددی داده شود، تعداد مشخص‌شده‌ای از بایت‌ها جایگزین می‌گردند.
ورود به حالت جایگزینی (Replace Mode) (به زیر مراجعه کنید). اگر آرگومان عددی n داده شود، دستور جایگزینی n بار تکرار می‌شود. توجه: حرکت دادن مکان‌نما (با کلیدهای جهت‌نما) آرگومان عددی را لغو می‌کند.
انجام مجدد (Redo) آخرین عملیات لغو شده (undo).
لغو (Undo) آخرین تغییر اعمال‌شده بر بافر فعلی.

در صورت امکان، hexer یک پرونده به نام name.hexer در دایرکتوری جاری (پرونده مبادله یا swapfile) برای هر بافر بازدیدشده ایجاد می‌کند (که در آن name نام بافر است). تمام تغییرات ایجاد شده در بافر name در آن پرونده ذخیره می‌شوند، بنابراین امکان لغو (undo) و انجام مجدد (redo) تمامی تغییرات بافر وجود دارد. اگر امکان ایجاد swapfile وجود نداشته باشد، فهرست تغییرات در حافظه ذخیره می‌شود.

ورود به حالت بصری (Visual Mode) (به زیر مراجعه کنید). انتخاب بصری نواحی.
حرکت به جلو به سمت ابتدای کلمه.
حذف بایت زیر مکان‌نما. اگر یک آرگومان عددی n داده شود، n بایت حذف می‌شود. در حالت بصری، ناحیه انتخاب‌شده حذف می‌گردد. توجه: بایت‌های حذف‌شده با دستور x به بافر حذف رونوشت نمی‌شوند.
مشابه دستور x، با این تفاوت که بایت‌های حذف‌شده در بافر حذف رونوشت می‌شوند.
برداشتن (Yank). بایت زیر مکان‌نما را در بافر حذف رونوشت می‌کند. اگر آرگومان عددی n داده شود، n بایت در بافر حذف رونوشت می‌شود. در حالت بصری، ناحیه انتخابی به بافر حذف کپی می‌شود.
قرار دادن مکان‌نما در خط پایینی صفحه نمایش.
قرار دادن مکان‌نما در خط بالایی صفحه نمایش.
قرار دادن مکان‌نما در خط میانی صفحه نمایش.
توجه داشته باشید که دستورات zb، zt و zz موقعیت در پرونده را تغییر نمی‌دهند؛ فقط صفحه نمایش پیمایش (اسکرول) می‌شود (در صورت نیاز).
:
ورود به حالت Exh (Exh Mode) (به زیر مراجعه کنید). حالت Exh مشابه با حالت ex در vi است اما با آن سازگار نیست. اگر ناحیه‌ای انتخاب شده باشد، حدود ناحیه انتخابی در خط فرمان کپی می‌شود.
/
جستجو به جلو در بافر با استفاده از یک عبارت باقاعده (RE). اگر هیچ RE مشخص نشود، RE ارائه‌شده در دستور قبلی / یا ? مجدداً استفاده می‌شود.
توجه: عبارات باقاعده (RE) در hexer کمی با عبارات باقاعده در vi متفاوت هستند (به بخش عبارات باقاعده (REGULAR EXPRESSIONS) مراجعه کنید).
?
جستجو به عقب با استفاده از عبارت باقاعده.
.
تکرار آخرین تغییر اعمال‌شده بر بافر در موقعیت فعلی. این بدان معناست که اگر دستور قبلی n بایت را حذف کرده و آن‌ها را با m بایت دیگر جایگزین کرده باشد (n یا m ممکن است صفر باشند)، دستور . دقیقاً همان عمل را در موقعیت فعلی در پرونده انجام می‌دهد.
<
تغییر مکان ستون شانزده‌شانزدهی (hex) به چپ به اندازه n بایت، که در آن n آرگومان عددی (اختیاری) است. توجه داشته باشید که دستور < تنها نحوه نمایش بافر در ستون هگز را تغییر می‌دهد و خود بافر بدون تغییر باقی می‌ماند.
>
تغییر مکان ستون شانزده‌شانزدهی (hex) به راست به اندازه n بایت.
جابه‌جایی به بافر جایگزین (به زیر مراجعه کنید).
%
ورود یک دستور ماشین‌حساب (به بخش ماشین‌حساب (CALCULATOR) مراجعه کنید).
حالت بصری (Visual Mode)
انتخاب یک ناحیه در بافر. می‌توانید با استفاده از دستور v یا با مشخص کردن یک ناحیه در حالت Exh وارد حالت بصری شوید. انتخاب از موقعیت مکان‌نما هنگام ورود به حالت بصری شروع شده و در موقعیت فعلی مکان‌نما خاتمه می‌یابد. می‌توانید با فشردن کلید v یا Escape بدون اجرای دستور بر روی ناحیه انتخابی، از حالت بصری خارج شوید. برای اجرای یک دستور روی ناحیه انتخاب‌شده کافی است دستور را طوری وارد کنید که گویی در حالت دستوری هستید. دستوراتی که نمی‌توانند از انتخاب استفاده کنند، آن را نادیده می‌گیرند. همانند حالت دستوری، امکان مشخص کردن یک آرگومان عددی وجود دارد. دستوراتی که می‌توانند انتخاب را به عنوان آرگومان دریافت کنند، آرگومان عددی را نادیده خواهند گرفت.
حالت درج (Insert Mode)
در حالت درج بایت‌هایی که تایپ می‌کنید در موقعیت فعلی مکان‌نما درج می‌شوند. در هر زمان می‌توانید با فشردن کلید TAB ستون فعال (ستون هگز یا ستون متن) را تغییر دهید. اگر ستون هگز فعال باشد، بایت‌ها به عنوان اعداد هگز دورقمی وارد می‌شوند؛ اگر ستون متن فعال باشد، بایت‌ها به صورت متن اسکی (ASCII) وارد می‌شوند. کلید Delete یا BackSpace بایت درج‌شده قبلی را حذف می‌کند. اگر ستون هگز فعال باشد، نیم‌بایت (nibble یا رقم هگز) درج‌شده قبلی حذف می‌شود. امکان حذف بایت‌های بیشتر از آنچه در دستور درج فعلی وارد شده است، وجود ندارد. در هنگام حضور در حالت درج، می‌توانید مکان‌نما را با کلیدهای جهت‌نما جابه‌جا کنید. توجه داشته باشید که جابه‌جایی مکان‌نما، آرگومان عددی ارائه‌شده به دستور درج را لغو می‌کند. برای خروج از حالت درج، کلید Escape را فشار دهید. اگر یک آرگومان عددی n به دستور درج داده شده باشد و با حرکت مکان‌نما لغو نشده باشد، بایت‌های تایپ‌شده n بار درج خواهند شد.
حالت جایگزینی (Replace Mode)
در حالت جایگزینی شما بایت‌های زیر مکان‌نما را در حین تایپ جایگزین می‌کنید. فشردن کلید BackSpace محتوای اصلی بافر را بازمی‌گرداند. تأثیر آرگومان عددی مشابه حالت درج است: بایت‌های تایپ‌شده n بار جایگزین می‌شوند. همانند حالت درج، جابه‌جایی مکان‌نما با استفاده از کلیدهای جهت‌نما، آرگومان عددی را لغو می‌کند.
حالت Exh (Exh Mode)
حالت Exh در hexer مشابه حالت ex در vi نگه‌داشته شده است. به‌طور معمول، یک دستور exh به این شکل است:
:area command arguments
اجرای دستور command بر روی ناحیه area.
:command arguments
اجرای دستور command در موقعیت فعلی.
:area
انتخاب ناحیه area.
:position
انتقال مکان‌نما به موقعیت position.

یک ناحیه (area) ممکن است به صورت‌های زیر تعریف شود:

ناحیه از position1 شروع شده و در position2 پایان می‌یابد (شامل هر دو).
ناحیه شامل یک بایت در موقعیت position است.
%
ناحیه کل بافر را انتخاب می‌کند.

یک موقعیت (position) ممکن است به صورت‌های زیر تعریف شود:

یک عدد ده‌دهی، هشت‌هشتی (با پیشوند «0») یا شانزده‌شانزدهی (با پیشوند «0x»).
.
ابتدای بافر.
$
انتهای بافر.
/regexp/
یک عبارت باقاعده (به بخش عبارات باقاعده (REGULAR EXPRESSIONS) مراجعه کنید). بافر از موقعیت فعلی به جلو جستجو می‌شود. در صورت یافتن تطابق، موقعیت فعلی به موقعیت تطابق تغییر می‌یابد.
?regexp?
بافر به سمت عقب جستجو می‌شود.

دستورات را می‌توان با یک پیشوند یکتا از نام دستور خلاصه کرد؛ برخی دستورات را حتی اگر تک‌کاراکتر پیشوند یکتای نام نباشد، می‌توان با یک کاراکتر خلاصه کرد. در حال حاضر دستورات زیر پشتیبانی می‌شوند:

خلاصه دستور: area s /regexp/replace/flags
جستجو برای عبارت باقاعده regexp و جایگزینی آن با replace (به بخش عبارات باقاعده (REGULAR EXPRESSIONS) مراجعه کنید). replace می‌تواند شامل ارجاعات «\\» به زیرعبارت‌های regexp باشد. flags:
سراسری (global)، این فلگ نادیده گرفته می‌شود (در یک ویرایشگر باینری کاربردی ندارد).
تایید (confirm)، از کاربر برای هر جایگزینی تایید می‌خواهد.

(توجه داشته باشید که نویسه «/» به عنوان جداکننده می‌تواند هر نویسه‌ای باشد، تنها کاربرد «/» یک رسم متداول است.) جداکننده‌های انتهایی را می‌توان حذف کرد. اگر area مشخص نشود، کل بافر جستجو می‌شود.

خلاصه دستور: area w filename
نوشتن ناحیه area در پرونده filename. اگر area مشخص نشود، کل بافر در پرونده نوشته می‌شود؛ اگر filename مشخص نشود، نام پرونده مرتبط با بافر استفاده می‌شود.
خلاصه دستور: position r filename
درج محتوای پرونده filename در موقعیت position. اگر position مشخص نشود، از موقعیت فعلی استفاده می‌شود.
خلاصه دستور: e name
یا: e #
تغییر به بافر name. اگر چنین بافری وجود نداشته باشد، hexer تلاش می‌کند پرونده‌ای با نام name را باز کرده و آن را در یک بافر جدید بارگذاری کند. اگر name علامت هش (#) باشد، بافر جایگزین انتخاب می‌شود. در صورت موفقیت، بافر فعلی تبدیل به بافر جایگزین می‌شود.
خلاصه دستور: b name
یا: b
تغییر به بافر name. در صورت موفقیت، بافر فعلی تبدیل به بافر جایگزین می‌شود. اگر name مشخص نشود، فهرستی از تمام بافرها نمایش داده می‌شود.
انتخاب بافر بعدی در فهرست بافرها.
انتخاب بافر قبلی در فهرست بافرها.
انتخاب بافر بازدیدنشده بعدی در فهرست بافرها.
انتخاب اولین بافر در فهرست بافرها.
نوشتن و ذخیره تمامی بافرهای ذخیره‌نشده.
خلاصه دستور: c name
یا: c! name
یا: c
یا: c!
بستن بافر name. اگر name مشخص نشود، بافر فعلی بسته می‌شود. اگر بافر تغییر یافته اما ذخیره نشده باشد، نمی‌توان آن را با دستور :c بست؛ از :c! برای نادیده گرفتن و بستن اجباری استفاده کنید.
مشاهده متن راهنمای آنلاین.
خلاصه دستور: q name
یا: q! name
یا: q
یا: q!
بستن تمام بافرها و خروج از ویرایشگر. اگر یک بافر بازشده تغییر یافته اما ذخیره نشده باشد، دستور :q قابل اجرا نیست؛ از :q! برای خروج اجباری استفاده کنید.
خلاصه دستور: map from to
یا: imap from to
یا: vmap from to
توالی کلیدهای from به to نگاشت می‌شود. برای وارد کردن کلیدهای ویژه (مانند کلیدهای تابعی)، آن‌ها را با استفاده از Control-V ماسک کنید. دستور :map تنها بر روی حالت دستوری اثر می‌گذارد، :imap تنها بر روی حالت درج و :vmap تنها بر روی حالت بصری تأثیرگذار است. امکان بازنگاشت توالی کلیدها در ویرایشگر خط فرمان وجود ندارد.
خلاصه دستور: unmap from
یا: iunmap from
یا: vunmap from
حذف یک نگاشت کلید ایجادشده با :map، :imap یا :vmap.
خلاصه دستور: set variable [...]
یا: set variable=value [...]
یا: set novariable [...]
یا: set
متغیرهای زیادی برای تغییر وجود ندارند، هرچند ممکن است در آینده تغییر کند. متغیرهای زیر قابل استفاده هستند: iso (بولی): نمایش کل مجموعه نویسه‌های ISO-8859/1؛ ascii (بولی): نمایش فقط نویسه‌های ASCII؛ TERM (رشته): نام ترمینال؛ maxmatch (عددی)، specialnl (بولی): به بخش عبارات باقاعده (REGULAR EXPRESSIONS) مراجعه کنید. دستور :set بدون آرگومان، فهرستی از تمامی متغیرها و مقادیرشان را نمایش می‌دهد.
خلاصه دستور: area d
حذف تمام بایت‌ها در area. بایت‌های حذف‌شده در بافر حذف رونوشت می‌شوند.
خلاصه دستور: area y
رونوشت بایت‌های موجود در area به بافر حذف.
نمایش شماره نگارش hexer.
قرار دادن مکان‌نما در خط میانی صفحه. توجه داشته باشید که صفحه پیمایش می‌شود (در صورت نیاز) و موقعیت مکان‌نما بدون تغییر می‌ماند.
قرار دادن مکان‌نما در خط بالایی صفحه.
قرار دادن مکان‌نما در خط پایینی صفحه.
مشابه :x.
ذخیره تمامی بافرها و خروج از ویرایشگر.

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

:terminals:command
که در آن terminals فهرستی از نام‌های ترمینال جداشده با دونقطه است. دستور تنها در صورتی اجرا می‌شود که مقدار TERM در این فهرست موجود باشد. به عنوان مثال می‌توانید دستوری مانند
:xterm:set iso
در پرونده .hexerrc خود داشته باشید (استفاده از مجموعه نویسه‌های ISO تنها در صورت کار با xterm).
حرکت مکان‌نما (Cursor Motion)
در حالت دستوری، حالت درج، حالت جایگزینی و حالت بصری، می‌توانید از دستورات حرکتی زیر برای مکان‌نما استفاده کنید:
کلیدهای جهت‌نما
حرکت مکان‌نما.
یک صفحه به جلو.
یک صفحه به عقب.
نیم صفحه به جلو.
نیم صفحه به عقب.

در خط فرمان می‌توانید از دستورات زیر استفاده کنید:

حرکت به بالا و پایین در تاریخچه زمینه فعلی.
حرکت مکان‌نما به چپ و راست.
انتقال مکان‌نما به ابتدای خط.
انتقال مکان‌نما به انتهای خط.
حذف تمامی نویسه‌ها از موقعیت فعلی مکان‌نما تا انتهای خط.
حذف تمامی نویسه‌ها از ابتدای خط تا موقعیت فعلی مکان‌نما.
حذف نویسه سمت چپ مکان‌نما.
حذف نویسه زیر مکان‌نما.
تایید و پذیرش خط.
انصراف و صرف‌نظر از خط. توجه: این رفتار با vi متفاوت است.
تلاش برای تکمیل خودکار واژه تایپ‌شده فعلی. اگر تکمیل خودکار یکتا نباشد، واژه تا جایی که یکتا است تکمیل می‌شود. اگر کلید TAB دو بار در همان موقعیت فشرده شود، فهرستی از تمامی گزینه‌های ممکن برای تکمیل نمایش داده می‌شود.

در این بخش فرض بر این است که با عبارات باقاعده (RE) آشنایی دارید. در بیشتر برنامه‌ها (egrep، vi، ...) عبارات باقاعده روی خطوط عمل می‌کنند؛ این بدان معناست که استفاده از یک RE حاوی شکست خط (نویسه خط جدید) ممکن نیست. در hexer، بافر به خطوط مجزا تقسیم نمی‌شود و یک نویسه خط جدید به عنوان یک نویسه «عادی» در نظر گرفته می‌شود. حال مشکل اینجاست: تصور کنید در یک پرونده ۵ مگابایتی به دنبال "a.*b" بگردید؛ این عملیات بسیار زمان‌بر خواهد بود (ممکن است در سامانه‌های کند تا چند دقیقه طول بکشد). به همین دلیل، یک محدودیت maxmatch وجود دارد (عملگر تکرار حداکثر به تعداد maxmatch رخداد عملوند خود را تطابق می‌دهد). مقدار پیش‌فرض maxmatch برابر ۱۰۲۴ است، اما می‌توان آن را با دستور :set سفارشی کرد. برای عبارات ساده (عباراتی که طول تطابق آن‌ها را بتوان از خود عبارت تشخیص داد) می‌توان با دو بار نوشتن عملگر «*» یا «+» بر محدودیت maxmatch غلبه کرد، مانند "a.**b" یا "foo\(bar\)\+\+".
توجه داشته باشید که مشخص‌کننده‌های زمینه `^'/`$' (ابتدای/انتهای خط) و `\<'/`\>' (ابتدای/انتهای کلمه) در دسترس هستند و دقیقاً همان‌طور که انتظار می‌رود عمل می‌کنند. اگر نمی‌خواهید اتم‌های «.» و «[^...]» با نویسه خط جدید تطابق داشته باشند، می‌توانید گزینه specialnl را با استفاده از دستور :set تنظیم کنید.
برای وارد کردن یک نویسه ویژه، می‌توانید از توالی‌های اسکیپ استاندارد C با `\' استفاده کنید. برای وارد کردن یک نویسه با استفاده از کد هشت‌هشتی (octal) آن، از یک پیشوند `\o' و به دنبال آن تا سه رقم هشت‌هشتی استفاده کنید. (توالی‌های اسکیپ هشت‌هشتی به سبک زبان C پشتیبانی نمی‌شوند، زیرا `\0` تا `\9` به عنوان ارجاع به عقب به زیرعبارت‌های RE تفسیر می‌شوند.) برای وارد کردن یک نویسه با استفاده از کد هگز آن، یک پیشوند `\x' و به دنبال آن تا دو رقم هگز تایپ کنید؛ کدهای ده‌دهی را می‌توان با استفاده از پیشوند `\d' و به دنبال آن تا سه رقم ده‌دهی وارد کرد. امکان وارد کردن رشته‌هایی از کدها با دو بار نوشتن مشخص‌کننده مبنا وجود دارد، برای نمونه "\xxfe ff 5a 7e" یا "\oo276 277 132 176". توجه داشته باشید که چنین رشته‌ای به عنوان یک اتم در نظر گرفته می‌شود، یعنی عبارت باقاعده "\xxff fe*" با هر تعداد (کمتر از maxmatch) تکرار از ff fe تطابق دارد.
استفاده از انواع توالی‌های اسکیپ نویسه‌ای با `\' (اسکیپ‌هایی که نمایانگر یک نویسه منفرد هستند) درون محدوده‌های «[]» امکان‌پذیر است. درون یک محدوده، می‌توان حرف «o» را که مبنای هشت‌هشتی را برای اسکیپ انتخاب می‌کند حذف کرد، زیرا ارجاع به عقب درون یک محدوده بی‌معنی است. هنگام تعیین حداقل و/یا حداکثر تعداد تکرارها با استفاده از عملگر `\{,}'، اعداد را می‌توان به صورت ده‌دهی (بدون پیشوند)، هشت‌هشتی (پیشوند «0») یا هگز (پیشوند «0x») مشخص کرد. اگر حداکثر تعدادی تعیین نشود و عملوند یک عبارت ساده نباشد، حداکثر maxmatch تطابق پیدا خواهد شد.

برنامه Hexer یک ماشین‌حساب ساده (myc) ارائه می‌دهد که قادر به انجام تمامی محاسبات موجود در زبان C است. برای وارد کردن دستور myc کافی است یک علامت % (درصد) و سپس یک عبارت با نمادگذاری میانوندی (infix) وارد کنید. استفاده از پرانتزها نیز امکان‌پذیر است. myc عملگرهای دودویی میانوندی زیر را درک می‌کند (از بالاترین اولویت به پایین‌ترین): ** (توان)، * (ضرب)، / (تقسیم)، % (باقی‌مانده تقسیم یا مدولو)، + (جمع)، - (تفریق)، << (تغییر مکان به چپ / shift left)، >> (تغییر مکان به راست / shift right)، < (کمتر)، <= (کمتر یا مساوی)، > (بیشتر)، >= (بیشتر یا مساوی)، == (برابر)، != (نامساوی)، & (AND حسابی)، | (OR حسابی)، ^ (XOR یا Exclusive OR حسابی)، && (AND منطقی)، || (OR منطقی)، = (انتساب)؛ و عملگرهای یگانی پیشوندی زیر: - (منفی، منفی یگانی)، ! (NOT منطقی)، ~ (متمم بیتی). myc سه نوع داده را می‌شناسد: boolean(بولی)، integer (صحیح، ۳۲ بیتی)، float (ممیز شناور، ۶۴ بیتی، معادل double در C). در برخی سامانه‌های نامتعارف ممکن است دقت integer و float متفاوت باشد. همانند زبان C، نتیجه یک تقسیم به نوع داده عملوندها بستگی دارد. تقسیم یک عدد صحیح بر عدد صحیح دیگر، یک عدد صحیح تولید می‌کند. اگر می‌خواهید نتیجه ممیز شناور باشد، مطمئن شوید که یکی از عملوندها ممیز شناور است؛ برای نمونه به جای 4/7 عبارت 4/7. یا به جای a/b عبارت a/(b+0.) را وارد کنید. عملگر توان اگر نتیجه برای قرار گرفتن در یک عدد صحیح بیش از حد بزرگ باشد، یک مقدار ممیز شناور بازمی‌گرداند. نتیجه یک محاسبه در متغیرهای ویژه $$ و $n ذخیره می‌شود که در آن n شماره دستور است.

احتمالاً وجود دارد. لطفاً اشکالات را به demetrio@cs.uni-sb.de گزارش دهید.

hexer در مالکیت عمومی نیست (not in public domain) ، اما آزادانه قابل توزیع است. این برنامه ممکن است برای هر هدف غیرتجاری استفاده شود. برای جزئیات پرونده COPYRIGHT را ببینید.

Sascha Demetrio
demetrio@cs.uni-sb.de

April 24, 2020 Hexer 1.0.7