YAZ-ASNCOMP(1) Commands YAZ-ASNCOMP(1)

yaz-asncomp - کامپایلر ASN.1 برای YAZ

yaz-asncomp [-v] [-c cfile] [-h hfile] [-p pfile] [-d config] [-I includeout] [-i includedir] [-m module] [filename]

yaz-asncomp یک کامپایلر ASN.1 است که مشخصات ASN.1 را در filename خوانده و تعاریف C/C++ و رمزگذارها/رمزگشاهای BER را برای آن تولید می‌کند.

کد C/C++ و فایل‌های سرآیند (header) تولیدشده از ماژول ODR مربوط به YAZ استفاده می‌کنند که کتابخانه‌ای برای رمزگذاری/رمزگشایی/چاپ بسته‌های BER است. yaz-asncomp به شما امکان می‌دهد نام فایل مبدأ حاصل را از طریق گزینه‌ها مشخص کنید. همچنین می‌توانید یک فایل DEFINITIONS مشخص کنید که در صورت متشکل بودن مشخصات ASN.1 از چندین ماژول، خروجی سفارشی‌شده‌ای را برای چندین فایل خروجی فراهم می‌سازد.

این ابزار با Tcl نوشته شده است. هر نسخه‌ای از Tcl باید کار کند.

-v

باعث می‌شود کامپایلر ASN.1 گزارش مشروح‌تری از مراحل مختلف عملیات چاپ کند.

-c cfile

نام فایل C/C++ شامل رمزگذارها/رمزگشاها را مشخص می‌کند.

-h hfile

نام فایل سرآیند حاوی تعاریف را مشخص می‌کند.

-p pfile

نام یک فایل سرآیند اختصاصی حاوی تعاریف را مشخص می‌کند. به‌طور پیش‌فرض تمام تعاریف در فایل سرآیند عمومی قرار داده می‌شوند (گزینه -h).

-d dfile

نام یک فایل تعاریف را مشخص می‌کند.

-I iout

بخش اول دایرکتوری را که فایل‌های سرآیند در آن نوشته می‌شوند مشخص می‌کند.

-i idir

بخش دوم دایرکتوری را که فایل‌های سرآیند در آن نوشته می‌شوند مشخص می‌کند.

-m module

مشخص می‌کند که کامپایلر ASN.1 فقط باید ماژول داده‌شده را پردازش کند. اگر این گزینه مشخص نشود، تمام ماژول‌های موجود در فایل ASN.1 پردازش می‌شوند.

فایل تعاریف در واقع یک اسکریپت Tcl است، اما از قواعد سنتی فایل‌های پیکربندی مشابه پوسته پیروی می‌کند؛ بدین معنی که # نشان‌دهنده آغاز یک توضیح است. تعاریف خط‌محور هستند. فایل‌های تعاریف معمولاً از مجموعه‌ای از انتساب‌های متغیر به شکل زیر تشکیل شده‌اند:

set name value

متغیرهای دردسترس عبارتند از:

default-prefix

پیشوند نام‌ها را در خروجی تولیدشده تنظیم می‌کند. این مقدار به ترتیب شامل سه بخش است: پیشوند تابع C، پیشوند typedef در C و پیشوند پیش‌پردازنده.

prefix(module)

مقادیر پیشوند را برای ماژول module تنظیم می‌کند. این مقدار ساختاری مشابه با default-prefix دارد.

filename(module)

نام فایل را برای فایل C/سرآیند مربوط به ماژول module مشخص می‌کند.

init(module,h)

قطعه‌کدی که باید در بخش ابتدایی سرآیند عمومی برای ماژول module قرار گیرد.

body(module,h)

قطعه‌کدی که باید در بخش انتهایی سرآیند عمومی برای ماژول module قرار گیرد (دنباله یا trailer).

init(module,c)

قطعه‌کدی که باید در بخش ابتدایی رمزگذار/رمزگشای مبتنی بر C برای ماژول module قرار گیرد.

body(module,c)

قطعه‌کدی که باید در بخش انتهایی رمزگذار/رمزگشای مبتنی بر C برای ماژول module قرار گیرد (دنباله یا trailer).

map(module,name)

نوع ASN.1 با نام name در ماژول module را به یک مقدار نگاشت می‌کند.

membermap(module,name,member)

عضو member را در SEQUENCE/CHOICE مربوط به name در ماژول module به یک مقدار نگاشت می‌کند. این مقدار شامل یک یا دو بخش است. بخش اول نام قسمت پیش‌پردازنده C است. بخش دوم نام عضو حاصل در C است. اگر بخش دوم حذف شود، مقدار داده‌شده (تک‌بخشی) هم بخش پیش‌پردازنده و هم struct,union در C خواهد بود.

unionmap(module,name,member)

عضو member را در CHOICE مربوط به name در ماژول module به یک مقدار نگاشت می‌کند. این مقدار شامل دو یا سه بخش است. بخش اول نام مقدار عدد صحیح در union است که به‌عنوان انتخاب‌گر (selector) برای خود union استفاده می‌شود. بخش دوم نام union است. بخش سوم نام عضو CHOICE را بازنویسی می‌کند؛ در صورت عدم ذکر، از نام عضو استفاده می‌شود.

/usr/share/yaz/z39.50/z.tcl

/usr/share/yaz/z39.50/*.asn

yaz(7)

بخش “The ODR Module” در دفترچه راهنمای YAZ.

Index Data

05/20/2026 YAZ 5.37.3