Come definire un working set di lexer e parser (exempli gratia: flex e bison) per supportare i letterali di stringa raw in stile C++ 0x?Come implementare letteralmente stringa raw C++ 0x?
Come forse già sapete, i nuovi valori letterali di stringa in C++ 0x possono essere espressi in un modo molto flessibile.
R"<delim>...<delim>";
- in questo codice lo <delim>
può essere praticamente tutto e non sono necessari caratteri di escape.
Qualsiasi tipo di parentesi può essere utilizzato per delimitare la fine della stringa:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
blocchi di testo possono essere semplicemente definito usando uguali occorrenze stessi caratteri:
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 )
;***************************";
Altro le informazioni possono essere trovate here (wikipedia) e here (att).
Vorrei utilizzare questa fantastica funzione in una lingua che sto sviluppando ora.
Quindi, come è possibile definire un tokenizer e un analizzatore di sintassi appropriati per ottenere il risultato?
Grazie in anticipo per le vostre risposte!
Penso che il tuo secondo esempio non sia un letterale raw valido che dovrebbe contenere parentesi (R "(; *** ..."). – Motti
No, no ... la sequenza; *** ... è un delimitatore di una stringa, il contenuto della stringa raw inizia dopo parentesi – Rizo
Ecco l'esempio di wikipedia: R "delimitatore (The String Data \ Stuff") delimitatore ". – Rizo