سندرم خلال‌دندان تکیه‌داده

از ویکی‌پدیا، دانشنامهٔ آزاد

سندرم خلال‌دندان تکیه‌داده (به انگلیسی: 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).