CAMLP5(1) General Commands Manual CAMLP5(1)

camlp5 - پیش‌پردازنده و زیباساز کد برای ocaml
mkcamlp5 - ساخت camlp5 سفارشی
mkcamlp5.opt - ساخت camlp5 سفارشی (کد بومی)
ocpp5 - پیش‌پردازنده همگانی

camlp5 [ load-options ] [--] [ other-options ]
camlp5o [ load-options ] [--] [ other-options ]
camlp5r [ load-options ] [--] [ other-options ]
camlp5sch [ load-options ] [--] [ other-options ]
camlp5o.cma
camlp5r.cma
camlp5sch.cma
mkcamlp5
mkcamlp5.opt
ocpp5 [ load-options ] file

camlp5o.opt [--] [ other-options ]
camlp5r.opt [--] [ other-options ]

ابزار camlp5 یک پیش‌پردازنده و زیباساز کد (Pre-Processor-Pretty-Printer) برای OCaml است که یک پرونده مبدا را تجزیه کرده و خروجی را در خروجی استاندارد چاپ می‌کند.

برنامه‌های camlp5o, camlp5r و camlp5sch نسخه‌هایی از camlp5 هستند که برخی پرونده‌ها از قبل در آن‌ها بارگذاری شده‌اند (ادامه متن را ببینید).

پرونده‌های camlp5o.cma, camlp5r.cma و camlp5sch.cma برای استفاده از سازوکار camlp5 در محیط تعاملی (toplevel) ocaml بارگذاری می‌شوند.

ابزارهای mkcamlp5 و mkcamlp5.opt پرونده‌های اجرایی camlp5 را تقریباً با همان گزینه‌های ocamlmktop ایجاد می‌کنند. ادامه متن را ببینید.

ابزار ocpp5 یک پیش‌پردازنده همگانی است که هر نوع پرونده مبدا را پردازش کرده و همان متن را با بسط دادن نقل‌قول‌های احتمالی تولید می‌کند.

برنامه‌های camlp5o.opt و camlp5r.opt نسخه‌هایی از camlp5o و camlp5r هستند که توسط کامپایلر کد بومی ocamlopt کامپایل شده‌اند. آن‌ها سریع‌تر اما غیرقابل گسترش هستند و در همه نصاب‌های camlp5 موجود نمی‌باشند.

گزینه‌های بارگذاری، اقدامات تجزیه و چاپ ثبت‌شده در پرونده‌های شیء OCaml (با پسوند cmo. یا cma.) را انتخاب می‌کنند. استفاده چندگانه از این گزینه‌ها مجاز است. این گزینه‌ها باید قبل از سایر گزینه‌ها قرار گیرند.

یک علامت اختیاری -- می‌تواند پایان‌بخش گزینه‌های بارگذاری باشد.

افزودن directory به مسیر جستجوی پرونده‌های بارگذاری‌شده. مگر اینکه از گزینه -nolib استفاده شود، پوشه کتابخانه camlp5 به مسیر افزوده می‌شود. هشدار: هیچ جستجوی خودکاری در پوشه جاری انجام نمی‌شود؛ برای این کار "-I ." را اضافه کنید.
چاپ نام پوشه کتابخانه camlp5 و خروج.
عدم جستجوی خودکار برای پرونده‌های شیء در پوشه کتابخانه camlp5.
پرونده در هسته camlp5 بارگذاری می‌شود.

سایر گزینه‌ها عبارتند از:

در صورتی که پسوند پرونده mli. باشد با file به‌عنوان پرونده رابط و در صورتی که ml. باشد به‌عنوان پرونده پیاده‌سازی رفتار می‌کند.
رفتار با file به‌عنوان پرونده رابط، بدون در نظر گرفتن پسوند آن.
رفتار با file به‌عنوان پرونده پیاده‌سازی، بدون در نظر گرفتن پسوند آن.
تولید دسترسی‌های ناامن به آرایه‌ها و رشته‌ها.
عدم کامپایل بررسی‌های assertion.
نمایش جزئیات بیشتر در خطاهای تجزیه.
تخلیه (dump) در file در صورت بروز خطای نحو (syntax) در نتیجه بسط نقل‌قول.
چاپ نتیجه در out-file به‌جای خروجی استاندارد. پرونده با open_out_bin باز می‌شود (کتابخانه OCaml با نام Pervasives را ببینید).
چاپ شماره نسخه و خروج.
چاپ گزینه‌های موجود و خروج. این چاپ شامل گزینه‌های احتمالی اضافه‌شده توسط پرونده‌های شیء بارگذاری‌شده نیز می‌شود.

سایر گزینه‌ها می‌توانند توسط پرونده‌های شیء بارگذاری‌شده گسترش یابند. پرونده‌های ارائه‌شده گزینه‌های زیر را اضافه می‌کنند:

-l line-length
اضافه‌شده توسط pr_o.cmo و pr_r.cmo: تنظیم طول خط (پیش‌فرض: 78).
اضافه‌شده توسط pr_o.cmo و pr_r.cmo: چاپ این رشته میان عبارت‌ها به‌جای کامنت‌ها.
اضافه‌شده توسط pr_o.cmo: عدم چاپ نقطه‌ویرگول دوتایی (double semicolons).
اضافه‌شده توسط pa_macro.cmo: تعریف شناسه ident.
اضافه‌شده توسط pa_macro.cmo: لغو تعریف شناسه ident.

این پرونده‌ها در پوشه /usr/lib/ocaml/camlp5 نصب می‌شوند.

پرونده‌های تجزیه (Parsing):

pa_r.cmo: revised syntax
pa_rp.cmo: streams and parsers
pa_lexer.cmo: lexers
pa_o.cmo: normal syntax
pa_op.cmo: streams and parsers
pa_oop.cmo: streams and parsers (without code optimization)
pa_scheme.cmo: scheme syntax
pa_extend.cmo: syntax extension for grammars
pa_extfold.cmo: extension of pa_extend with FOLD0 and FOLD1
pa_extfun.cmo: syntax extension for extensible functions
pa_extprint.cmo: syntax extensions for extensible printers
pa_pprintf.cmo: syntax extension for pprintf statement
pa_fstream.cmo: syntax extension for functional streams
pa_macro.cmo: add macros (ifdef, define) like in C
pa_lefteval.cmo: left-to-right evaluation of parameters
pa_pragma.cmo: directive #pragma

پرونده‌های چاپ (Printing):

pr_r.cmo: revised syntax without objects and labels
pr_ro.cmo: revised syntax for objects and labels
pr_rp.cmo: try to rebuild streams and parsers syntax
pr_o.cmo: normal syntax
pr_op.cmo: try to rebuild streams and parsers syntax
pr_scheme.cmo: Scheme syntax
pr_schemep.cmo: try to rebuild streams and parsers syntax
pr_extend.cmo: try to rebuild EXTEND statements
pr_extfun.cmo: try to rebuild extfun statements
pr_extprint.cmo: try to rebuild EXTEND_PRINTER statements
pr_dump.cmo: dump syntax tree for ocaml compiler
pr_depend.cmo: file dependencies
pr_null.cmo: no output

بسط‌دهنده‌های نقل‌قول (Quotation expanders):

q_MLast.cmo: syntax tree nodes (in revised syntax)
q_ast.cmo: syntax tree nodes in user full syntax
q_phony.cmo: keeping quotations for pretty printing

دستور camlp5o میانبری است برای:

camlp5 pa_o.cmo pa_op.cmo pr_dump.cmo

دستور camlp5r میانبری است برای:

camlp5 pa_r.cmo pa_rp.cmo pr_dump.cmo

دستور camlp5sch میانبری است برای:

camlp5 pa_scheme.cmo pr_dump.cmo

پرونده camlp5o.cma می‌تواند برای راه‌اندازی camlp5 با نحو OCaml در محیط تعاملی بارگذاری شود.

پرونده camlp5r.cma می‌تواند برای راه‌اندازی camlp5 با نحو بازبینی‌شده در محیط تعاملی بارگذاری شود.

پرونده camlp5sch.cma می‌تواند برای راه‌اندازی camlp5 با نحو Scheme در محیط تعاملی بارگذاری شود.

برنامه‌های mkcamlp5 و mkcamlp5.opt پرونده‌های اجرایی camlp5 را با تقریباً همان گزینه‌های ocamlmktop ایجاد می‌کنند. نسخه mkcamlp5.opt می‌تواند پرونده‌های اجرایی کد بومی ایجاد کند که سریع‌ترند اما قابل گسترش نیستند.

برای mkcamlp5، رابط‌هایی که باید قابل مشاهده باشند باید صریحاً در خط فرمان به عنوان پرونده‌های ".cmi" اضافه شوند. برای نمونه، نحوه افزودن ماژول OCaml با نام "str":

mkcamlp5 -custom str.cmi str.cma -cclib -lstr -o camlp5str

متغیر محیطی زیر نیز بررسی می‌شود:

تنظیم پارامترهای الگوریتم تجزیه گرامرها. این متغیر باید دنباله‌ای از مشخصات پارامتر باشد. هر مشخصه پارامتر یک حرف است که به صورت اختیاری با یک = و یک مقدار دنبال می‌شود. چهار پارامتر ممکن وجود دارد:
تنظیم الگوریتم بازگشت به عقب (backtrack) به عنوان پیش‌فرض.
ردیابی نمادها (پایانی و غیرپایانی) هنگام تجزیه با پس‌گرد.
در الگوریتم پس‌گرد، ردیابی پیشرفت در جریان ورودی (تعداد توکن‌های آزادشده) و توقف احتمالی (تعداد آزمون‌های توکن).
تنظیم حداکثر مقدار توقف.

پوشه کتابخانه camlp5 در نصب فعلی:
/usr/lib/ocaml/camlp5

Camlp5 - Reference Manual
ocamlc(1), ocaml(1), ocamlmktop(1).

Daniel de Rauglaudre, INRIA Rocquencourt.

INRIA