回答:
バックスラッシュは、次の文字に特別な意味があることをコンパイラー/インタープリターに伝えるためのマーカー文字として使用されます。次の文字の意味は実装次第です。たとえば、Cスタイルの言語では、\ nを使用して改行を意味し、\ tを使用してタブを意味します。
単語「エスケープ」の使用は、実際には、テキストの解析から一時的にエスケープし、後続の文字が異なる方法で処理される別のモードに入ることを意味します。
エスケープシーケンスには、帯域外通信の概念と多くの共通点があります。
多くの端末の制御シーケンスをリードするESCや、古い5ビットBaudotコードのレベルシフトインジケーターなど、通信の人々がシフト文字と呼ぶものを記述するためにも使用されることがあります。
シリアルポートを介してファイル転送を行っており、反対側のコンピューターとネゴシエートするとしましょう:「OK、ここにファイルが来ます」。一般的な場合、すべての文字が有効なファイル文字である可能性があるため(ASCIIファイルの場合)、いくつかの問題があります。
コンピューティングの歴史を通じて、さまざまな人々がこの問題を回避するために多くの異なる方法を実装してきました。
プログラミング言語のリテラル文字列の場合、同様の問題です。最初の引用には、「文字列が来ます-別の引用が来るまで読み始めてください」とあります。もちろん、引用文字を送信するという問題があるため、スラッシュエスケープシーケンスを発明しました。スラッシュに続いて引用符が表示される場合、それは文字列の終わりではなく、リテラル引用符です。残念なことに、クモを飲み込んでハエを食べました。これは、スラッシュとクォートの文字通りの組み合わせを送信できないためです。そのため、スラッシュを別のスラッシュでエスケープできます。したがって、スラッシュ-スラッシュはスラッシュを意味し、スラッシュ-引用は引用を意味します。これにより、キャリッジリターン、ラインフィード、タブなど、印刷できない文字や印刷が難しい文字にスラッシュを使用できました。
それは構文解析コンテキストからの脱出であり、それはn
としてではn
なくとして解釈されることを(何と悪役なのか)要求していnewline
ます。
最も興味深い違いは、エスケープは引用文字"
(または他の多くのシンボル)が行うように構文解析コンテキストを切り替えず"
、前のコンテキストに戻るために別の(または他のシンボル)を要求することです。彼らは少し気を逸らしますが、できるだけ早く道に戻ります。
xmlとjsonの登場以来、誰もパーサーを記述していないように思えるので、コンテキストの解析についてはもう誰も話しません。いくつかの問題は主流になるのをやめ、そのようなニッチで奇妙なニッチの概念にとどまり続けます。