Від чого насправді вдається втекти персонаж втечі "\"?


13

Від чого насправді виходить зворотний кут?

Він використовується як рятувальний персонаж. Але мені завжди цікаво, від чого врятується, або від чого рятується.

Я знаю, що "\ n" позначає новий рядок. Але що куди втікає? Чому це називається?


15
Він врятується від мого гніву, коли він накручує мої струни.
Джоель Етертон

Відповіді:


37

Зворотна косою рисою використовується як символ маркера, щоб сказати компілятору / інтерпретатору, що наступний символ має якесь особливе значення. Що означає наступний символ - це до реалізації. Наприклад, мови C-стилю використовують \ n для позначення нового рядка, а \ t - для вкладки.

Використання слова "втеча" насправді означає тимчасове втечу з розбору тексту та в інший режим, де наступний символ трактується по-різному.


8
Залежно від символу, зворотна косою рисою може сказати компілятору / інтерпретатору, що наступний символ не має особливого значення. Наприклад, при уникненні лапок.
Райан Кінал

12
Або втеча від себе.
Мальфіст

12

:))

Це термін, пов'язаний з послідовністю втечі та ключем Esc (escape).

Сам персонаж не «тікає» від будь-якого іншого персонажа. Можна сказати, що персонаж, що слідує за символом втечі (скажімо, \ n з вашого прикладу), уникає долі, коли він використовується як звичайний п у певній програмі, а замість цього використовується як новий рядок.


3

Послідовності втечі мають багато спільного з концепцією позадіапазонного спілкування:

Також іноді використовується для опису того, що комунікації називають символами зсуву, наприклад ESC, який веде керуючі послідовності для багатьох терміналів, або індикаторами зсуву рівня в старих 5-бітових кодах Бодо.

Скажімо, ви здійснюєте передачу файлів через послідовний порт, і ви домовляєтесь з комп'ютером на іншому кінці: "Добре, ось приходить файл". Оскільки в загальному випадку всі символи можуть бути дійсними символами файлів (якщо це файл ASCII), у вас є деякі проблеми:

  • Звідки ви знаєте, де знаходиться кінець потоку?
  • Деякі схеми використовують ASCII NUL (нуль) для завершення, як рядки на деяких мовах, але тоді ви не можете мати цей символ у файлі. Це неможливо в деяких налаштуваннях, як-от передача файлів. Нуль може бути дійсним символом.
  • Ви можете спочатку надіслати очікувану довжину файлу, але що робити, якщо вам потрібно скасувати?

Різні люди за всю історію обчислень застосовували безліч різних методів, щоб подолати цю проблему.

Що стосується буквальних рядків у мові програмування, це схожа проблема. Перша цитата говорить "ось приходить рядок - починайте читати, поки не отримаєте ще одну цитату". Звичайно, тоді у вас виникає проблема надсилання символу котирування, тому вони винайшли послідовність похилого нахилу. Якщо ви бачите косу рису, а потім цитату, то це буквальна цитата, а не кінець рядка. На жаль, ви просто проковтнули павука, щоб з'їсти муху, тому що тепер ви не можете надіслати буквальну комбінацію косої коси. Отже, ви можете уникнути косою рисою з іншою косою рисою. Отже, косо-слєш означає слэш, косо-косий означає цитата. Це дозволило їм використовувати косу рису для інших недрукованих або важко друкованих символів, таких як повернення каретки, канали рядків, вкладки тощо.


3

Це втеча від розбору контексту , що вимагає (який лиходій) nтлумачити як nзамість як newline.

Найцікавіша відмінність у цьому полягає в тому, що втеча не перемикає розбір контексту так, як "це робив би символ цитати (або багато інших символів), вимагаючи іншого "(або якогось іншого символу) повернутися до колишнього контексту. Вони просто трохи відволікаються, але повертаються на дорогу якнайшвидше.

Однак ніхто більше не розмовляє про розбір контекстів , стільки, як здається, ніхто більше не пише парсерів, починаючи з появи xml та json. Деякі проблеми перестають бути мейнстримом, заходять у нішу та дивні подібні поняття, як такі, що залишаються довкола.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.