我正在实现flex manual中匹配C风格字符串的开始条件。
我关注的部分是:
<str>\" { /* saw closing quote - all done */
BEGIN(INITIAL);
*string_buf_ptr = '\0';
/* return string constant token type and
* value to parser
*/
}
我没有问题返回令牌类型,但我不确定如何在这种情况下传递字符串值。如果我在返回令牌时打印yytext,它只是按住“终止符。
那我怎么得到字符串的值?
提前致谢;我刚开始弯曲。
答案 0 :(得分:0)
您不会返回yytext
,但会返回指向string_buf
的指针。
yytext
包含终结符,因为它是匹配状态的最后一个正则表达式的内容。在您的示例的所有其他情况(但终止符)中,yytext
的内容被复制到string_buf
(例如,使用*string_buf_ptr++=*yptr++;
检查行),以便缓冲区保存最终字符串。