Was bedeutet es wirklich, wenn ein Backslash-Escape-Zeichen verwendet wird?

13

Wem entgeht der Backslash wirklich?

Es wird als Fluchtcharakter verwendet. Aber ich frage mich immer, was entkommt oder wovor entkommt.

Ich weiß, dass "\ n" eine neue Zeile kennzeichnet. Aber woher kommt die Flucht? Warum heißt es so?

Herr Coder
quelle
15
Es entgeht meinem Zorn, wenn es meine Saiten durcheinander bringt.
Joel Etherton

Antworten:

37

Der Backslash wird als Markierungszeichen verwendet, um dem Compiler / Interpreter mitzuteilen, dass das nächste Zeichen eine besondere Bedeutung hat. Was dieser nächste Charakter bedeutet, hängt von der Implementierung ab. Zum Beispiel verwenden Sprachen im C-Stil \ n für Newline und \ t für Tab.

Die Verwendung des Wortes "Escape" bedeutet wirklich, dass der Text vorübergehend nicht analysiert und in einen anderen Modus übergegangen wird, in dem das nachfolgende Zeichen anders behandelt wird.

Sean
quelle
8
Abhängig vom Zeichen kann ein Backslash dem Compiler / Interpreter mitteilen, dass das folgende Zeichen keine besondere Bedeutung hat. Zum Beispiel, wenn Anführungszeichen ausgeblendet werden.
Ryan Kinal
12
Oder sich selbst zu entkommen.
Malfist
12

:))

Dieser Begriff bezieht sich auf eine Escape-Sequenz und eine Esc- Taste (Escape-Taste).

Der Charakter selbst "rennt" vor keinem anderen Charakter davon. Man könnte sagen, dass das Zeichen, das auf das Escape-Zeichen folgt (sagen wir, \ n aus Ihrem Beispiel), dem Schicksal entgeht, in einigen Anwendungen als normales n verwendet zu werden, und stattdessen als Zeilenumbruch verwendet wird.

Turm
quelle
3

Escape-Sequenzen haben viele Gemeinsamkeiten mit dem Konzept der Out-of-Band- Kommunikation:

Wird auch manchmal verwendet, um zu beschreiben, was Kommunikationsmitarbeiter als Umschaltzeichen bezeichnen, z. B. den ESC, der die Steuersequenzen für viele Terminals steuert, oder die Pegelumschaltanzeigen in den alten 5-Bit-Baudot-Codes.

Angenommen, Sie führen eine Dateiübertragung über eine serielle Schnittstelle durch und verhandeln mit dem Computer am anderen Ende: "OK, hier kommt die Datei". Da im Allgemeinen alle Zeichen gültige Dateizeichen sein können (wenn es sich um eine ASCII-Datei handelt), treten einige Probleme auf:

  • Woher weißt du, wo das Ende des Streams ist?
  • Einige Schemata verwenden ASCII NUL (Null) zum Beenden, wie z. B. Zeichenfolgen in einigen Sprachen, aber dann können Sie dieses Zeichen nicht in der Datei haben. Dies ist in einigen Einstellungen, z. B. bei Dateiübertragungen, nicht zulässig. Null könnte ein gültiges Zeichen sein.
  • Sie könnten zuerst die erwartete Dateilänge senden, aber was ist, wenn Sie den Vorgang abbrechen müssen?

Verschiedene Personen in der Geschichte des Computers haben viele verschiedene Methoden implementiert, um dieses Problem zu umgehen.

Bei Literalzeichenfolgen in einer Programmiersprache ist dies ein ähnliches Problem. Das erste Zitat lautet "Hier kommt die Zeichenfolge - fange an zu lesen, bis du ein anderes Zitat erhältst". Dann haben Sie natürlich das Problem, ein Anführungszeichen zu senden, und haben die Schrägstrich-Escape-Sequenz erfunden. Wenn Sie einen Schrägstrich und dann ein Zitat sehen, ist dies ein wörtliches Zitat und nicht das Ende der Zeichenfolge. Leider haben Sie gerade eine Spinne geschluckt, um eine Fliege zu fressen, denn jetzt können Sie die wörtliche Kombination aus Schrägstrich und Anführungszeichen nicht mehr senden. So können Sie einem Schrägstrich einen weiteren Schrägstrich entziehen. Slash-Slash bedeutet also Slash, Slash-Quote bedeutet Quote. Dadurch konnten sie Schrägstriche für andere nicht druckbare oder schwer druckbare Zeichen wie Zeilenumbrüche, Zeilenvorschübe, Tabulatoren usw. verwenden.

Scott Whitlock
quelle
3

Es ist eine Flucht aus dem Analysekontext , die verlangt (was für ein Bösewicht) n, als nstatt als interpretiert zu werden newline.

Der interessanteste Unterschied dabei ist, dass ein Escape den Analysekontext nicht so ändert, wie es ein Anführungszeichen "(oder viele andere Symbole) tun würden, und dass ein anderes "(oder ein anderes Symbol) erforderlich ist , um zum vorherigen Kontext zurückzukehren. Sie nehmen nur eine kleine Ablenkung, gehen aber so schnell wie möglich wieder auf die Straße.

Doch seit dem Aufkommen von xml und json spricht niemand mehr über das Analysieren von Kontexten , so wie niemand mehr Parser zu schreiben scheint. Einige Probleme hören auf, Mainstream zu sein, gehen in eine Nische und seltsame Nischenkonzepte wie diese bleiben bestehen.

ZJR
quelle