flex启动条件(匹配字符串文字)

时间:2012-01-31 19:45:27

标签: compiler-construction flex-lexer

我正在实现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,它只是按住“终止符。

那我怎么得到字符串的值?

提前致谢;我刚开始弯曲。

1 个答案:

答案 0 :(得分:0)

您不会返回yytext,但会返回指向string_buf的指针。

yytext包含终结符,因为它是匹配状态的最后一个正则表达式的内容。在您的示例的所有其他情况(但终止符)中,yytext的内容被复制到string_buf(例如,使用*string_buf_ptr++=*yptr++;检查行),以便缓冲区保存最终字符串。