Qu'est-ce que le caractère d'échappement «\» barre oblique inverse s'échappe vraiment?

13

À quoi la barre oblique inverse s'échappe-t-elle vraiment?

Il est utilisé comme personnage en fuite. Mais je me demande toujours ce qui s'échappe ou ce qui échappe.

Je sais que "\ n" désigne une nouvelle ligne. Mais d'où vient l'évasion? pourquoi c'est appelé comme ça?

Mr Coder
la source
15
Il échappe à ma colère quand il fout mes cordes.
Joel Etherton

Réponses:

37

La barre oblique inverse est utilisée comme caractère marqueur pour indiquer au compilateur / interprète que le caractère suivant a une signification particulière. La signification de ce caractère suivant dépend de l'implémentation. Par exemple, les langages de style C utilisent \ n pour signifier la nouvelle ligne et \ t pour signifier tab.

L'utilisation du mot "échapper" signifie vraiment s'échapper temporairement de l'analyse du texte et dans un autre mode où le caractère suivant est traité différemment.

Sean
la source
8
Selon le caractère, une barre oblique inverse peut indiquer au compilateur / interprète que le caractère suivant n'a pas de signification particulière. Par exemple, lorsque vous échappez aux guillemets.
Ryan Kinal
12
Ou s'échapper.
Malfist
12

:))

C'est un terme lié à celui d'une séquence d'échappement et d'une touche Esc (d'échappement).

Le personnage lui-même ne "fuit" aucun autre personnage. On pourrait dire que le caractère suivant le caractère d'échappement (par exemple, \ n de votre exemple) échappe au sort d'être utilisé comme un n ordinaire dans une application, et est utilisé à la place comme une nouvelle ligne.

Tour
la source
3

Les séquences d'échappement ont beaucoup en commun avec le concept de communication hors bande :

Parfois également utilisé pour décrire ce que les gens appellent les caractères de décalage, comme l'ESC qui dirige les séquences de contrôle pour de nombreux terminaux, ou les indicateurs de décalage de niveau dans les anciens codes Baudot à 5 bits.

Disons que vous effectuez un transfert de fichiers sur un port série et que vous négociez avec l'ordinateur à l'autre bout: "OK, voici le fichier". Étant donné que dans le cas général, tous les caractères peuvent être des caractères de fichier valides (s'il s'agit d'un fichier ASCII), vous rencontrez des problèmes:

  • Comment savez-vous où se trouve la fin du flux?
  • Certains schémas utilisent ASCII NUL (zéro) pour terminer, comme les chaînes dans certaines langues, mais vous ne pouvez pas avoir ce caractère dans le fichier. Ce n'est pas autorisé dans certains paramètres, comme les transferts de fichiers. Zéro pourrait être un caractère valide.
  • Vous pouvez d'abord envoyer la longueur de fichier attendue, mais que faire si vous devez abandonner?

Diverses personnes à travers l'histoire de l'informatique ont mis en œuvre de nombreuses méthodes différentes pour contourner ce problème.

Dans le cas de chaînes littérales dans un langage de programmation, c'est un problème similaire. La première citation dit "voici la chaîne - commencez à lire jusqu'à ce que vous obteniez une autre citation". Bien sûr, alors vous avez le problème d'envoyer un caractère de citation, alors ils ont inventé la séquence d'échappement slash. Si vous voyez une barre oblique puis une citation, alors c'est une citation littérale, pas la fin de la chaîne. Malheureusement, vous venez d'avaler une araignée pour manger une mouche, car maintenant vous ne pouvez pas envoyer la combinaison littérale slash-quote. Ainsi, vous pouvez échapper à une barre oblique avec une autre barre oblique. Donc slash-slash signifie slash, slash-quote signifie quote. Cela leur a permis d'utiliser une barre oblique pour d'autres caractères non imprimables ou difficiles à imprimer comme les retours chariot, les sauts de ligne, les tabulations, etc.

Scott Whitlock
la source
3

C'est une évasion du contexte d'analyse , qui demande (quel méchant) nd'être interprété comme nplutôt que comme un newline.

La distinction la plus intéressante à ce sujet est qu'un échappement ne change pas le contexte d'analyse comme le "ferait un caractère de citation (ou de nombreux autres symboles), nécessitant qu'un autre "(ou un autre symbole) revienne au contexte précédent. Ils prennent juste une petite diversion mais reprennent la route dès que possible.

Pourtant, personne ne parle plus de l' analyse des contextes , autant que personne ne semble plus écrire d'analyseurs depuis l'avènement de xml et json. Certains problèmes cessent d'être courants, entrent dans une niche et des concepts de niche étranges comme celui-ci persistent.

ZJR
la source