Làm cách nào để xác định bộ làm việc của bộ từ và trình phân tích cú pháp (exempli gratia: flex và bò rừng) để hỗ trợ các chuỗi ký tự thô theo kiểu C++ 0x?Làm thế nào để thực hiện C++ 0x nguyên chuỗi chữ?
Như bạn đã biết, các chuỗi ký tự mới trong C++ 0x có thể được diễn tả một cách rất linh hoạt.
R"<delim>...<delim>";
- trong mã này, <delim>
có thể là khá nhiều thứ và cũng không cần ký tự thoát.
Bất kỳ loại dấu ngoặc đơn có thể được sử dụng để phân định cuối chuỗi:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
khối văn bản có thể được đơn giản định nghĩa bằng sự xuất hiện bình đẳng của cùng một ký tự:
R";***************************(
; TINY BASIC FOR INTEL 8080
; VERSION 2.0
; BY LI-CHEN WANG
; MODIFIED AND TRANSLATED
; TO INTEL MNEMONICS
; BY ROGER RAUSKOLB
; 10 OCTOBER, 1976
; @COPYLEFT
; ALL WRONGS RESERVED )
;***************************";
More thông tin có thể được tìm thấy here (wikipedia) và here (att).
Tôi muốn sử dụng tính năng tuyệt vời này bằng ngôn ngữ tôi hiện đang phát triển.
Vì vậy, làm cách nào để xác định trình tạo mã thông báo và trình phân tích cú pháp thích hợp để đạt được kết quả?
Cảm ơn trước vì câu trả lời của bạn!
Tôi cho rằng ví dụ thứ hai của bạn không phải là một chữ gốc hợp lệ, nó phải chứa dấu ngoặc đơn (R "(; *** ..."). – Motti
Không, không ... chuỗi; *** ... là một dấu phân cách của một chuỗi, nội dung chuỗi thô bắt đầu sau khi dấu ngoặc đơn – Rizo
Đây là ví dụ từ wikipedia: R "dấu phân tách (Chuỗi dữ liệu \ Stuff") dấu phân cách ". – Rizo