エスケープシーケンスの語源について
どうしてエスケープシーケンスというのですか?
要素としては、エスケープとシーケンスがあると思うのですが
どうしてエスケープなのか、どうしてシーケンスなのかが知りたいです。よろしくお願い致します!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
エスケープシーケンスの語源は、キーボードにあるエスケープキーによって生成されるエスケープコードを使った文字列ということのようです。以下をご覧ください。
エスケープキーの始まりは
The name of the equivalent key on some early Teletype Model 33 keyboards was labeled Alt Mode..., the alternative mode of operation causing the escapement to treat the following one character in a special way.
また、シーケンス(列)である理由は、以下のように書かれています。
An escape character may not have its own meaning, so all escape sequences are of two or more characters.
つまり単独ではなく常に エスケープ文字+ひとつ以上の文字 なので列と呼ぶということです。
と書かれています。
alternative key(代替キー)と呼ばれていたものがエスケープキーになったようです。
escapeという言葉の語源は「外套を脱ぐ」です。つまり、見映えが変わるというような意味です。sequenceという言葉の語源は「追いかける」です。
詳しくはescapeとsequenceを見てください。
ここからは推測ですが、見映えを変えるという意味で作られたキーを使って別の文字コードを入れるようになったという使い方が最初にあったのでしょう。
投稿2021/04/23 22:47
編集2021/04/23 22:55総合スコア24670
0
まず簡単な方で、シーケンスというのは並びです。文字の並びですね。
エスケープというのは脱出で、通常の状態の意味から離れて(脱出して)別の状態の意味に移行すると言うことです。
例1:プログラミング言語の文字列でのエスケープシーケンス
文字列"ABC"
は、A
B
C
という英字そのままの意味を持ちます。
"ABC\n"
は、\
をエスケープ文字(エスケープシーケンスの開始文字)として、次の一文字n
を英字のn
じゃなくて改行の意味に変えます。エスケープ状態(脱出状態)からいつ元の文字列の状態に戻るかはものに依ります。\010
だと3文字続きますね。
例2:ANSIの画面制御シーケンス
「ESC
[
2
J
」という文字の並びを出力すると、[
や J
などは画面に表示されず画面がクリアされます。これらの文字が通常の文字の意味ではなくなっているからです。ESC
で通常の文字表示の意味から脱出して、J
で戻ってきます。
似て異なる概念に「クォート」(引用)があります。
これはエスケープと逆に、「特別な意味を持たされている文字を、見たままの文字の意味に戻す」ということです。
例:
*
は、正規表現の中では「*
という文字」の意味を失い(*
という文字にはマッチしない)、「直前の0回以上の繰り返し」という特別な意味を持たされています。*
とクォートすると元の「*
という文字」に戻り、*
という文字にマッチするようになります。
多くのプログラミング言語では、同じ\
という文字がエスケープしたりクォートしたりするので、混同されていることがほとんどです。
見たままの文字の意味と違う意味を与える・・・脱出させる・・・エスケープ
見たままの文字の意味に戻す・・・引用する・・・クォート
投稿2021/04/23 13:49
総合スコア85901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/23 15:28
2021/04/23 16:09
2021/04/24 03:23
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。