기술 이름이 영어로 표기된 뉴스 기사 제목 번역

3 weeks ago 7

'\n'의 출처

  • just foo 명령을 실행하면, justfile은 0x0A 바이트를 bar라는 파일에 기록함
  • just는 Rust로 작성되었으며, just 파서는 cook_string이라는 함수를 통해 escape 시퀀스를 포함하는 just 문자열 토큰을 UTF-8 문자열로 변환함

Rust의 처리

  • rustc는 scan_escape라는 함수에서 escape 코드를 처리함
  • rustc는 Rust로 작성되어 자체 컴파일되며, '\n'의 의미를 파악하기 위해 rustc에 위임함
  • 초기 버전의 rustc는 OCaml로 작성되었으며, OCaml 버전의 rustc는 lexer에서 문자 escape를 처리함

OCaml의 처리

  • OCaml 컴파일러는 \n을 \010으로 평가하여 결과를 삽입함
  • 0x0A는 10이므로, OCaml 컴파일러가 \n을 처리할 때 0x0A 바이트 값을 얻게 됨

결론

  • justfile에서 \n 문자 escape가 있을 때, just 바이너리는 0x0A 바이트를 포함하여 최종 문자열에 기록함
  • 이 0x0A 바이트는 rustc에 의해 삽입되었으며, 이는 OCaml 컴파일러가 처음으로 rustc 바이너리에 0x0A 바이트를 삽입한 것에서 시작됨

GN⁺의 정리

  • 이 글은 \n 문자 escape가 어떻게 0x0A 바이트로 변환되는지를 설명함
  • Rust와 OCaml 컴파일러의 역사적 배경을 통해 0x0A 바이트의 출처를 추적함
  • 프로그래밍 언어의 컴파일러가 어떻게 문자 escape를 처리하는지에 대한 흥미로운 통찰을 제공함
  • Rust와 OCaml의 컴파일러 동작을 이해하는 데 도움이 되는 글임

Read Entire Article