match_parens(1) DekDoc scripts match_parens(1)

match_parens - یافتن عدم تطابق انواع پرانتزها، قلاب‌ها و علامت‌های نقل‌قول

match_parens [نام‌فایل]

-h

چاپ این راهنما و خروج
-H,--help
چاپ مستندات کامل و خروج
-V,--version
چاپ نسخه و خروج
-l,--latex
تبدیل ``...'' به “...” پیش از آزمودن
-n,--number=N
تنظیم تعداد نویسه‌های ناسازگار نمایش‌داده‌شده به N (پیش‌فرض: 10)
-p,--pairs=S
تنظیم جفت‌های تطبیق به S (پیش‌فرض: {}[]()“”«»‘’""'')
--test
انجام آزمایش داخلی و خروج

ردیابی عدم تطابق پرانتزها، آکولادها و قلاب‌ها (از جمله قلاب‌های زاویه‌دار)، به‌ویژه در متون مبدأ TeX که ممکن است سرشار از آن‌ها باشند، می‌تواند دشوار باشد. این اسکریپت کوچک با نوشتن متن شما در خروجی استاندارد، پس از افزودن یک حاشیه در سمت چپ متن که معمولاً تقریباً خالی است اما تا ۱۰ مورد عدم تطابق را به‌روشنی نشان می‌دهد، به شما کمک می‌کند. (کافی است این اسکریپت را روی خودش امتحان کنید تا ببینید پرانتز ابتدای این جمله در انتهای فایل جفت‌نشده نمایش داده می‌شود. اگر در ویرایشگر vim به این متن نگاه می‌کنید، این پاراگراف را انتخاب کرده و دستور :!% را امتحان کنید).

به‌طور پیش‌فرض، جفت‌های زیر بررسی می‌شوند:

()

پرانتزهای گرد
{}
آکولادها
[]
قلاب‌ها (کروشه‌ها)
<>
قلاب‌های زاویه‌دار (تنها در متن‌های HTML)
""
علامت‌های نقل‌قول دوتایی ASCII
“”
علامت‌های نقل‌قول دوتایی یونیکد
''
علامت‌های نقل‌قول تکی ASCII
‘’
علامت‌های نقل‌قول تکی یونیکد

مقدار خروج اسکریپت در صورت نبود عدم تطابق 0، و در غیر این صورت 1 است.

قلاب‌های زاویه‌دار تنها در متن‌های HTML جستجو می‌شوند؛ جایی که فرض می‌شود متن HTML با <html> یا =begin␣rdoc آغاز شده و با </html> یا =end پایان می‌یابد.

-h,--help

چاپ اطلاعات راهنمای کوتاه و خروج.
-H,--Help
چاپ مستندات کامل از طریق less و خروج.
-V,--version
چاپ نگارش این اسکریپت و خروج.
-l,--latex
تبدیل ``...'' به “...” پیش از آزمودن.
-n,--number=N
تنظیم تعداد نویسه‌های ناسازگار نمایش‌داده‌شده به N. به‌طور پیش‌فرض، تنها ۱۰ مورد نخست نمایش داده می‌شوند.
-p,--pairs=S
تنظیم جفت‌های تطبیق به S (پیش‌فرض: {}[]()“”''«»""‘’). برای نمونه، اگر می‌خواهید تنها به دنبال علامت‌های نقل‌قول تکی ASCII جفت‌نشده بگردید، از --pairs="''" استفاده کنید. یا اگر تنها می‌خواهید آکولادها و گیومه‌ها را تطبیق دهید، از -p␣«» استفاده کنید. توجه داشته باشید که اگر در متن شما HTML تشخیص داده شود، <> به‌طور خودکار به فهرست جفت‌ها افزوده می‌شود. بنابراین به‌طور پیش‌فرض، <...> تنها در HTML بررسی می‌شود، اما می‌توانید با مشخص کردن جفت <> در گزینه --pairs آن را در سایر متن‌ها نیز بررسی کنید.
--test
انجام یک آزمایش داخلی و خروج. توجه داشته باشید که اگر با استفاده از گزینه --pairs فهرست جفت‌هایی غیر از پیش‌فرض مشخص کنید، آزمایش احتمالاً با شکست مواجه می‌شود، اما همچنان می‌توانید تأثیرات فهرست جفت‌های خود را روی داده‌های آزمایشی مشاهده کنید.

فرض کنید دو فایل با نام‌های good و bad داریم که حاوی متن‌های زیر هستند:

good:

This is a (simple) test without mismatches

bad:

This is a (simple test containing mismatches

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

$ matchparens good
         1 || This is a (simple) test
         2 || without mismatches
$ echo $?
0
$ matchparens bad
         1 | (| This is a (simple test
         2 | (| containing mismatches
$ echo $?
1

تنها گزارش دادن این‌که آیا عدم تطابقی وجود دارد یا خیر:

$ matchparens good >/dev/null && echo fine || echo problems
fine
$ matchparens bad >/dev/null && echo fine || echo problems
problems

گزارش تمام فایل‌های tex دارای عدم تطابق در دایرکتوری جاری:

$ for i in *.tex; do matchparens $i >/dev/null || echo $i; done

تطابق‌ها باید به ترتیب درست باشند:

$ echo -e "This is a ([simple)] test\n" | match_parens
         1 ([)]This is a ([simple)] test
         2 ([)]

Wybo Dekker (wybodekker@me.com)

منتشر شده تحت مجوز عمومی همگانی گنو (GPL) (https://www.gnu.org/copyleft/gpl.html)

September 30, 2025 match_parens version 1.45