2012-01-31 15 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にコピーするだけです(または、リエントラントに問題がなければ直接使用してください)。 –

答えて

0

あなたに。 yytextを返していますがstring_bufへのポインタを返しません。それがマッチした状態のため、最後の正規表現の内容ですので

yytextはターミネータが含まれています。あなたの例の他のすべての場合(ただし、ターミネーター)では、コンテンツyytextstring_bufにコピーされます(例:行が*string_buf_ptr++=*yptr++;であることを確認してください)、そのバッファは最終文字列を保持します。

関連する問題