백 슬래시 "\"이스케이프 문자가 실제로 이스케이프하는 것은 무엇입니까?


13

백 슬래시는 실제로 무엇을 탈출합니까?

이스케이프 문자로 사용됩니다. 그러나 나는 항상 탈출하거나 탈출하는 것이 무엇인지 궁금합니다.

"\ n"은 새 줄을 나타냅니다. 그러나 탈출은 어디로 오는가? 왜 그렇게 불리는거야?


15
그것이 내 줄을 망칠 때 진노를 피하고 있습니다.
Joel Etherton

답변:


37

백 슬래시는 다음 문자에 특별한 의미가 있음을 컴파일러 / 통역사에게 알리기 위해 마커 문자로 사용됩니다. 다음 캐릭터가 의미하는 것은 구현에 달려 있습니다. 예를 들어 C 스타일 언어는 \ n을 사용하여 줄 바꿈을 의미하고 \ t를 사용하여 탭을 의미합니다.

"탈출"이라는 단어를 사용한다는 것은 실제로 텍스트를 구문 분석하지 않고 후속 문자가 다르게 처리되는 다른 모드로 일시적으로 탈출하는 것을 의미합니다.


8
문자에 따라 백 슬래시는 컴파일러 / 통역사에게 다음 문자에 특별한 의미 가 없음을 알려줍니다 . 예를 들어, 따옴표를 이스케이프 할 때.
Ryan Kinal

12
또는 탈출.
Malfist

12

:))

이스케이프 시퀀스Esc (이스케이프) 키 와 관련된 용어 입니다.

캐릭터 자체는 다른 캐릭터와 "뛰어나지"않습니다. 이스케이프 문자 다음에 나오는 문자 (예 : \ n 예) 일부 응용 프로그램에서 일반 n 으로 사용되는 운명을 이스케이프 하고 개행 문자로 대신 사용 한다고 말할 수 있습니다 .


3

이스케이프 시퀀스는 대역 외 통신 개념과 공통점이 많습니다 .

또한 많은 터미널의 제어 시퀀스를 이끄는 ESC 또는 이전 5 비트 Baudot 코드의 레벨 시프트 표시기와 같이 사람들이 시프트 문자라고 부르는 통신을 설명하는 데 사용되기도합니다.

직렬 포트를 통해 파일 전송을하고 있고 다른 쪽 컴퓨터와 협상을한다고 가정 해 봅시다. "여기, 파일이 온다". 일반적인 경우 모든 문자가 유효한 파일 문자 (ASCII 파일 인 경우) 일 수 있으므로 몇 가지 문제가 있습니다.

  • 스트림의 끝이 어디에 있는지 어떻게 알 수 있습니까?
  • 일부 체계에서는 일부 언어의 문자열처럼 ASCII NUL (영)을 사용하여 종료하지만 파일에 해당 문자를 사용할 수 없습니다. 파일 전송과 같은 일부 설정에서는 허용되지 않습니다. 0은 유효한 문자 일 수 있습니다.
  • 예상 파일 길이를 먼저 보낼 수 있지만 중단해야하는 경우 어떻게해야합니까?

컴퓨팅 역사의 다양한 사람들이이 문제를 해결하기 위해 다양한 방법을 구현했습니다.

프로그래밍 언어의 리터럴 문자열의 경우 비슷한 문제입니다. 첫 번째 인용문은 "문자열이 온다-다른 인용문을 얻을 때까지 읽기 시작"이라고 말합니다. 물론 따옴표 문자를 보내는 데 문제가있어서 슬래시 이스케이프 시퀀스를 발명했습니다. 슬래시와 따옴표가 보이면 문자열의 끝이 아닌 리터럴 따옴표입니다. 불행히도 방금 먹기 위해 거미를 삼켰습니다. 이제 문자 그대로 슬래시 따옴표 조합을 보낼 수 없기 때문입니다. 따라서 다른 슬래시로 슬래시를 피할 수 있습니다. 따라서 슬래시 슬래시는 슬래시를 의미하고 슬래시 따옴표는 따옴표를 의미합니다. 따라서 캐리지 리턴, 줄 바꿈, 탭 등과 같이 인쇄 할 수 없거나 인쇄하기 어려운 다른 문자에 슬래시를 사용할 수있었습니다.


3

파싱 ​​컨텍스트 에서 탈출하여 (악당이 아닌) n해석하는 n것이 필요합니다 newline.

그것에 대한 가장 흥미로운 차이점은 이스케이프 구문 분석 컨텍스트를 따옴표 문자 "(또는 다른 많은 기호) 가하는 방식으로 전환하지 않고 다른 컨텍스트 (또는 다른 기호)가 "이전 컨텍스트로 돌아갈 것을 요구한다는 것 입니다. 그들은 약간의 기분 전환을 겪지 만 최대한 빨리 도로로 돌아옵니다.

그러나 xml과 json이 출현 한 이래로 더 이상 파서를 작성하지 않는 것처럼 컨텍스트 구문 분석에 대해 더 이상 이야기하는 사람은 없습니다. 일부 문제는 주류가되는 것을 멈추고, 틈새 시장과 같은 이상한 틈새 개념으로 계속 남아 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.