スキャナが、
複数のファイルからの入力を処理することができるということが必要になる状況は、
たくさんあります。
例えば、
多くのPascalの実装では、
コンパイル時に複数のファイルを取り込むことを許していますし、
Cでは、
スキャナもしくはプリプロセッサが#include
文を処理できなければなりません。
このことが意味しているのは、
スキャナは、
カレントなスキャン処理のコンテキストを保存してから新しいコンテキストに変更し、
その後で、
以前の状態と完全に一致する状態に復帰することができなければならないということです。
Flexスキャナは、 スキャン処理のコンテキストを維持するために余分の処理が必要になるような、 大きな入力バッファを使っています。 しかしFlexは、 複数の入力バッファの作成、切り替え、削除が非常に簡単に行えるような特別な機能を提供しています。
========================================================================
========================================================================