2012-01-31 33 views
0

我正在實現匹配flex manual中的C樣式字符串的開始條件。flex開始條件(匹配字符串文字)

我很擔心的路段是:

 <str>\"  { /* saw closing quote - all done */ 
      BEGIN(INITIAL); 
      *string_buf_ptr = '\0'; 
      /* return string constant token type and 
       * value to parser 
       */ 
      } 

我沒有任何問題,返回令牌類型,但我不能確定如何在這種情況下,通過字符串值。如果我打印yytext中返回的令牌時,它只是抱着「終結者

所以,我怎麼會得到字符串的值

在此先感謝。?我是新來的彎曲

+0

不是string_buf_ptr中的值嗎?只需將其複製到yylval(或者如果重入不是問題,則直接使用它)。 – 2012-02-01 18:51:18

回答

0

你。不返回yytext但你返回一個指針string_buf

yytext包含終止,因爲這是匹配的狀態,最後的正則表達式的內容。在你的榜樣的所有其他情況下(但終止),內容的yytext被複制到string_buf(例如,檢查行*string_buf_ptr++=*yptr++;),以便緩衝區保存最終的字符串。