如何定义一个工作集的词法分析器和解析器(范例: flex和bison)以支持C++ 0x样式的原始字符串文字?如何实现C++ 0x原始字符串文字?
正如您可能已经知道的那样,C++ 0x中的新字符串文字可以以非常灵活的方式表达。
R"<delim>...<delim>";
- 在此代码中,<delim>
几乎可以应有尽有,也不需要转义字符。
任何种类的括号的可用于分隔字符串的末尾:
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 )
;***************************";
更多:
R"(I love those who yearn for the impossible. (Von Goethe, "Faust"))";
文本的块可以使用的相同的字符等于出现简单地定义信息可以发现here(维基百科)和here(att)。
我想在我现在正在开发的语言中使用这个奇妙的功能。
那么,我如何定义一个合适的标记器和语法分析器来实现结果呢?
在此先感谢您的答案!
我认为你的第二个例子不是一个有效的原始文字它应该包含圆括号(R“(; *** ...”) – Motti 2010-06-27 06:07:17
不,不...序列; *** ...是一个字符串的分隔符;原始字符串的内容在括号后面开始 – Rizo 2010-06-27 09:36:49
下面是维基百科的例子:R“delimiter(The String Data \ Stuff”)delimiter“ – Rizo 2010-06-27 10:02:42