سندرم خلالدندان تکیهداده
سندرم خلالدندان تکیهداده (به انگلیسی: Leaning toothpick syndrome یا LTS) اصطلاحی در برنامهنویسی است و به حالتی اشاره دارد که در یک عبارت باقاعده لازم میشود برای گریز از کجخطها (/)، از چند نویسهٔ گریز واکجخط (\) استفاده شود. خواندن چنین عبارتهایی دشوار است و احتمال خطای برنامهنویس را افزایش میدهد.[۱] کنار هم قرارگرفتن این نویسهها باعث میشود عبارتهای باقاعدهٔ پیچیده، به شکل خلالدندانهایی به نظر برسند که در میان نویسههای دیگر ریخته شدهاند.[۲] این اتفاق ممکن است در مورد مشخصکردن مسیرها در ویندوز نیز رخ دهد؛ اما با توجه به اینکه ویندوز اجازهٔ استفاده از حائل «/» به جای «\» را در مسیرهای خود میدهد (به سبک یونیکس)، امکان دور زدن این مشکل وجود دارد.[۳]
مثالها
[ویرایش]بسیاری زبانهای برنامهنویسی روشهایی برای غلبه بر این مشکل دارند.
پرل
[ویرایش]در پرل با استفاده از نمادگذاری qq|عبارت باقاعده|
میتوان به مفسر فهماند که باید نویسههای داخل رشته را به صورت حرف و بدون نیاز به نویسهٔ گریز واکجخط بپذیرد.[۴] به طور مثال عبارت باقاعدهٔ:
m{ftp://[^/]*/pub/}
m#ftp://[^/]*/pub/#
m!ftp://[^/]*/pub/!
معادل است با:
m/ftp:\/\/[^\/]*\/pub\//
سیشارپ
[ویرایش]در سیشارپ مشکل سندرم خلالدندان تکیهداده با استفاده از نماد «@» قابل حل است:
string filePath = @"C:\Foo\Bar.txt"
معادل است با:
string filePath = "C:\\Foo\\Bar.txt"
سیپلاسپلاس
[ویرایش]در استاندارد C++11، رشتهٔ خام به صورت زیر قابل تعریف است:
std::string filePath = R"(C:\Foo\Bar.txt)";
در صورتی که نیاز به استفاده از یکی از نویسههای )" در داخل رشته باشد، میتوان از یک نویسهٔ حائل دلخواه (مانند d در مثال زیر) استفاده کرد.
std::regex re{ R"d(s/"\([^"]*\)"/'\1'/g)d" };
پایتون
[ویرایش]در پایتون میتوان نوشت:
filePath = r"C:\Foo\Bar.txt"
و یا:
example = """First line : "C:\Foo\Bar.txt"
Second line : nothing"""
اسکالا
[ویرایش]اسکالا امکان استفاده از «'''» را میدهد:
val filePath = """C:\Foo\Bar.txt"""
val pubPattern = """ftp://[^/]*/pub/"""r
که رشتهٔ داخل آن میتواند چندخطی نیز باشد:
val text = """First line,
second line."""
سِد
[ویرایش]در سد میتوان از «,» به عنوان حائل عبارت باقاعده استفاده کرد:
s,ftp://[^/]*/pub/,foo,
معادل میشود با:
s/ftp:\/\/[^\/]*\/pub\//foo/
منابع
[ویرایش]- Lester, A.; Foley, R. (2005). Pro Perl Debugging. ITPro collection (به انگلیسی). Apress. Retrieved 2013-11-28.
- Lee, J. (2010). Beginning Perl. Books for professionals by professionals (به انگلیسی). Apress. Retrieved 2013-11-28.
- Berman, J.J. (2007). Perl Programming for Medicine and Biology. Jones and Bartlett series in biomedical informatics (به انگلیسی). Jones and Bartlett Publishers. Retrieved 2013-11-28.
- Wikipedia contributors, "Leaning toothpick syndrome," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Leaning_toothpick_syndrome&oldid=583560583 (accessed November 28, 2013).