Che cosa fa realmente la barra rovesciata del carattere "\" escape?


13

Cosa sfugge davvero alla barra rovesciata?

È usato come personaggio in fuga. Ma mi chiedo sempre cosa sta scappando o da cosa fuggire.

So che "\ n" designa una nuova linea. Ma da dove arriva la fuga? Perché si chiama così?


15
Sta sfuggendo alla mia ira quando rovina le corde.
Joel Etherton,

Risposte:


37

La barra rovesciata viene utilizzata come carattere marker per indicare al compilatore / interprete che il personaggio successivo ha un significato speciale. Cosa significa quel personaggio successivo dipende dall'implementazione. Ad esempio, i linguaggi in stile C usano \ n per indicare la nuova riga e \ t per indicare la scheda.

L'uso della parola "escape" significa in realtà fuggire temporaneamente dall'analisi del testo e in un'altra modalità in cui il carattere successivo viene trattato in modo diverso.


8
A seconda del personaggio, una barra rovesciata potrebbe indicare al compilatore / interprete che il seguente personaggio non ha alcun significato speciale. Ad esempio, quando si sfuggono alle virgolette.
Ryan Kinal,

12
O fuggire da solo.
Malfist,

12

:))

È un termine correlato a quello di una sequenza di escape e di un tasto Esc (escape).

Il personaggio stesso non "scappa" da nessun altro personaggio. Si potrebbe dire che il personaggio che segue il carattere di escape (diciamo, \ n dal tuo esempio) sfugge al destino di essere usato come un n normale in qualche applicazione, e viene invece usato come una nuova riga.


3

Le sequenze di escape hanno molto in comune con il concetto di comunicazione fuori banda :

A volte viene anche usato per descrivere quali comunicazioni le persone chiamano caratteri shift, come l'ESC che guida le sequenze di controllo per molti terminali o gli indicatori di spostamento di livello nei vecchi codici Baudot a 5 bit.

Supponiamo che tu stia eseguendo un trasferimento di file su una porta seriale e tu negozi con il computer dall'altra parte: "OK, ecco che arriva il file". Dato che in generale tutti i caratteri potrebbero essere caratteri di file validi (se si tratta di un file ASCII), si verificano alcuni problemi:

  • Come fai a sapere dove si trova la fine del flusso?
  • Alcuni schemi usano ASCII NUL (zero) per terminare, come stringhe in alcune lingue, ma non è possibile avere quel carattere nel file. Non è consentito in alcune impostazioni, come i trasferimenti di file. Zero potrebbe essere un personaggio valido.
  • È possibile inviare prima la lunghezza prevista del file, ma cosa succede se è necessario interrompere?

Varie persone nella storia dell'informatica hanno implementato molti metodi diversi per aggirare questo problema.

Nel caso di stringhe letterali in un linguaggio di programmazione, si tratta di un problema simile. La prima citazione dice "ecco che arriva la stringa - inizia a leggere fino ad ottenere un'altra citazione". Naturalmente, hai il problema di inviare un carattere di citazione, quindi hanno inventato la sequenza di escape della barra. Se vedi una barra e poi una virgoletta, allora quella è una citazione letterale, non la fine della stringa. Sfortunatamente hai appena ingoiato un ragno per mangiare una mosca, perché ora non puoi inviare la combinazione letterale di barra. Quindi, puoi sfuggire a una barra con un'altra barra. Quindi barra-barra significa barra, citazione-barra significa citazione. Ciò ha permesso loro di usare la barra per altri caratteri non stampabili o difficili da stampare come ritorni a capo, avanzamenti di riga, schede, ecc.


3

È una fuga dal contesto di analisi , che richiede (che cattivo) nessere interpretato come nanziché come newline.

La distinzione più interessante al riguardo è che una fuga non cambia il contesto di analisi come "farebbe un carattere di citazione (o molti altri simboli), richiedendo un altro "(o qualche altro simbolo) per tornare al contesto precedente. Prendono solo un po 'di diversivo ma tornano sulla strada il prima possibile.

Eppure nessuno parla più dell'analisi dei contesti , tanto quanto nessuno sembra più scrivere parser, dall'avvento di xml e json. Alcuni problemi smettono di essere mainstream, entrano in una nicchia e strani concetti di nicchia come quelli rimangono in giro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.