Cómo definir un conjunto de trabajo de lexer y analizador (exempli gratia: flex y bison) para admitir los literales de cadena sin formato con estilo C++ 0x?¿Cómo implementar C++ 0x literal de cadena sin formato?
Como ya sabrá, los nuevos literales de cadenas en C++ 0x pueden expresarse de una manera muy flexible.
R"<delim>...<delim>";
- en este código el <delim>
puede ser prácticamente todo y tampoco se necesitan caracteres de escape.
Cualquier tipo de paréntesis, puede ser utilizado para delimitar el final de la cadena:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
bloques de texto puede ser definida simplemente usando circunstancias igual de los mismos personajes:
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 )
;***************************";
Más la información se puede encontrar here (wikipedia) y here (att).
Me gustaría utilizar esta característica fantástica en un idioma que estoy desarrollando ahora.
Entonces, ¿cómo puedo definir un tokenizador apropiado y un analizador de sintaxis para lograr el resultado?
¡Gracias de antemano por sus respuestas!
Creo que su segundo ejemplo no es un literal en bruto válido, debe contener paréntesis (R "(; *** ..."). – Motti
No, no ... la secuencia; *** ... es un delímetro de una cadena; el contenido de la cadena sin formato comienza después de paréntesis. – Rizo
Aquí está el ejemplo de wikipedia: delimitador "delimitador R" (The String Data \ Stuff ")" – Rizo