Как определить рабочий набор лексера и синтаксического анализатора (пример: gratia: flex и bison) для поддержки строковых литералов C++ 0x?Как реализовать строковый литерал C++ 0x?
Как вы уже знаете, новые строковые литералы в C++ 0x могут быть выражены очень гибким способом.
R"<delim>...<delim>";
- в этом коде <delim>
может быть почти всем, и не требуется никаких символов эвакуации.
Любой вид скобок может использоваться для разделения конца строки:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
блоки текста могут быть просто определены с использованием одинаковых вхождений одинаковых символов:
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 )
;***************************";
Подробнее информацию можно найти here (wikipedia) и here (att).
Я хотел бы использовать эту фантастическую функцию на языке, который я сейчас разрабатываю.
Итак, как я могу определить правильный токенизатор и синтаксический анализатор для достижения результата?
Заранее благодарим за ответы!
Я думаю, что ваш второй пример не является допустимым сырым литералом, он должен содержать круглые скобки (R "(; *** ..."). – Motti
Нет, нет ... последовательность; *** ... есть разделитель строки, содержимое исходной строки начинается после круглых скобок. – Rizo
Вот пример из википедии: разделитель R "delimiter (The String Data \ Stuff"). – Rizo