Flexは、 複数の入力バッファを取り扱うために、 以下のような関数やマクロを提供しています。
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size)
file
で指定されるファイルのために、
size
で指定される数の文字を格納するのに十分な大きさのバッファを作成します。
この関数は、
後に複数のバッファ間の切り替え、
または新規に作成されたバッファの削除に使うことのできるハンドルを返します。
YY_BUF_SIZE
yy_create_buffer()
に渡すべきサイズが分からない場合に、
これを使うことができます。
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer)
new_buffer
で指定されるバッファから取られます。
ファイルの終端(EOF)に達するか、
次にyy_switch_to_buffer()
が呼び出されるまで、
new_buffer
からトークンが読み込まれます。
new_buffer
がEOFに達すると、
新しいバッファに切り替えることができます。
void yy_delete_buffer( YY_BUFFER_STATE buffer )
buffer
で指定されるバッファを削除し、
それに割り当てられたメモリを解放します。
YY_CURRENT_BUFFER
上記が、 複数の入力バッファを取り扱うのに必要なすべての機能を提供しています。