エスケープ(\)キャラクターの背後にある魔法とは
-
11-07-2019 - |
質問
C / C ++コンパイラは、ソースコードのエスケープ文字[" \"]をどのように操作しますか?その文字を処理するためのコンパイラの文法はどのように書かれていますか?その文字に遭遇した後、コンパイラは何をしますか?
他のヒント
このテーマに関する興味深いメモは、 Onです。 Trusting Trust [PDFリンク] 。
このペーパーでは、コンパイラがこの問題を正確に処理する1つの方法について説明し、c-written-in-cコンパイラがコードをASCII値に明示的に変換しないことを示します。また、新しいエスケープコードをコンパイラにブートストラップして、新しいコードのASCII値の理解も暗黙的に行う方法。
通常、次の文字をエスケープします。
- 文字列リテラルまたは文字リテラルでは、次の文字をエスケープすることを意味します。
\ a
は「警告」(端末の点滅、ビープ音など)を意味し、\ n
は「改行」を意味し、\ xNUM
は16進数を意味しますたとえば。 - 改行内の最後の可視文字として表示される場合、文字列内か否かにかかわらず(そして行全体のコメント内であっても!)、行継続として機能します:次の改行文字は無視され、次の行は現在の行とマージされます。
次の文字を含むエスケープ文字( \ n
など)はCコンパイラの単一文字です-スキャナーは文字トークンとしてパーサーに提示するため、パーサーの特別な構文規則は必要ありません。エスケープ文字。
所属していません StackOverflow