Điều gì làm dấu gạch chéo ngược \ \ thoát nhân vật thực sự thoát?


13

Dấu gạch chéo thực sự thoát ra là gì?

Nó được sử dụng như một nhân vật trốn thoát. Nhưng tôi luôn tự hỏi cái gì thoát ra, hay cái gì đang trốn thoát.

Tôi biết "\ n" chỉ định một dòng mới. Nhưng những gì thoát ra vào? Tại sao nó được gọi như vậy?


15
Nó đang thoát khỏi cơn thịnh nộ của tôi khi nó làm rối dây của tôi.
Joel Etherton

Câu trả lời:


37

Dấu gạch chéo ngược được sử dụng làm ký tự đánh dấu để báo cho trình biên dịch / trình thông dịch rằng ký tự tiếp theo có một số ý nghĩa đặc biệt. Những gì nhân vật tiếp theo có nghĩa là tùy thuộc vào việc thực hiện. Ví dụ: ngôn ngữ kiểu C sử dụng \ n để có nghĩa là dòng mới và \ t có nghĩa là tab.

Việc sử dụng từ "thoát" thực sự có nghĩa là tạm thời thoát khỏi việc phân tích cú pháp văn bản và sang một chế độ khác trong đó ký tự tiếp theo được xử lý khác nhau.


8
Tùy thuộc vào ký tự, dấu gạch chéo ngược có thể nói với trình biên dịch / trình thông dịch rằng ký tự sau không có ý nghĩa đặc biệt. Ví dụ, khi thoát dấu ngoặc kép.
Ryan Kinal

12
Hoặc tự thoát ra.
Malfist

12

:))

Đây là một thuật ngữ liên quan đến chuỗi thoát và khóa Esc (thoát).

Bản thân nhân vật không "chạy trốn" khỏi bất kỳ nhân vật nào khác. Người ta có thể nói nhân vật đi theo nhân vật thoát (giả sử \ n từ ví dụ của bạn) thoát khỏi số phận được sử dụng như một n bình thường trong một số ứng dụng và được sử dụng thay thế như một dòng mới.


3

Trình tự thoát có rất nhiều điểm chung với khái niệm giao tiếp ngoài băng :

Đôi khi cũng được sử dụng để mô tả những gì người liên lạc gọi các ký tự thay đổi, chẳng hạn như ESC dẫn các chuỗi điều khiển cho nhiều thiết bị đầu cuối hoặc các chỉ báo dịch chuyển mức trong mã Baudot 5 bit cũ.

Giả sử bạn đang thực hiện chuyển tập tin qua một cổng nối tiếp và bạn thương lượng với máy tính ở đầu bên kia: "OK, đây là tập tin". Vì trong trường hợp chung, tất cả các ký tự có thể là các ký tự tệp hợp lệ (nếu đó là tệp ASCII), bạn có một số vấn đề:

  • Làm thế nào để bạn biết nơi kết thúc của dòng?
  • Một số lược đồ sử dụng ASCII NUL (không) để chấm dứt, như các chuỗi trong một số ngôn ngữ, nhưng sau đó bạn không thể có ký tự đó trong tệp. Điều đó không được phép trong một số cài đặt, như chuyển tập tin. Zero có thể là một nhân vật hợp lệ.
  • Bạn có thể gửi độ dài tệp dự kiến ​​trước, nhưng nếu bạn cần hủy bỏ thì sao?

Nhiều người trong suốt lịch sử điện toán đã thực hiện rất nhiều phương pháp khác nhau để giải quyết vấn đề này.

Trong trường hợp chuỗi ký tự trong ngôn ngữ lập trình, đó là một vấn đề tương tự. Câu trích dẫn đầu tiên cho biết "ở đây có chuỗi - bắt đầu đọc cho đến khi bạn nhận được một trích dẫn khác". Tất nhiên, sau đó bạn có vấn đề gửi một ký tự trích dẫn, vì vậy họ đã phát minh ra chuỗi thoát dấu gạch chéo. Nếu bạn thấy một dấu gạch chéo và sau đó là một trích dẫn, thì đó là một trích dẫn theo nghĩa đen, không phải là kết thúc của chuỗi. Thật không may, bạn vừa nuốt một con nhện để ăn ruồi, vì bây giờ bạn không thể gửi kết hợp dấu gạch chéo theo nghĩa đen. Vì vậy, bạn có thể thoát khỏi một dấu gạch chéo bằng một dấu gạch chéo khác. Vì vậy, dấu gạch chéo có nghĩa là dấu gạch chéo, dấu gạch chéo có nghĩa là trích dẫn. Điều đó cho phép họ sử dụng dấu gạch chéo cho các ký tự không thể in hoặc khó in khác như trả về vận chuyển, nguồn cấp dữ liệu, tab, v.v.


3

Đó là một lối thoát khỏi bối cảnh phân tích cú pháp , đó là đòi hỏi (những gì một nhân vật phản diện) nphải được giải thích nthay vì như một newline.

Điểm khác biệt thú vị nhất của nó là một lối thoát không chuyển phân tích ngữ cảnh theo cách mà một nhân vật trích dẫn "(hoặc nhiều biểu tượng khác) sẽ làm, yêu cầu một "(hoặc một số biểu tượng khác) quay lại bối cảnh trước đây. Họ chỉ cần một chút chuyển hướng nhưng trở lại con đường càng sớm càng tốt.

Tuy nhiên, không ai nói về bối cảnh phân tích cú pháp nữa, dường như không ai viết trình phân tích cú pháp nữa, kể từ khi xml và json ra đời. Một số vấn đề ngừng là chủ đạo, đi vào một khái niệm thích hợp và kỳ lạ như thế vẫn còn tồn tại xung quanh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.