# Scanner 設計資料

## 現在のトークンと先読みされたトークン
_tokensの0番には現在のトークンが保持される。また、トークンが先読みされた場合は1番以降にそれらのトークンが保持されていくことになる。  
例えば、次のトークンを1つ先読みした場合は0番に現在のトークンが入り1番に先読みされたトークンが入る。

nextメソッドで現在位置が移動すると、それまで0番にあったトークン(現在のトークン)は配列から削除され、1番にあった要素は現在のトークンとなる。  
配列から全てのトークンが無くなった場合はトークンの読み取りが実行される。  

## CharStream
ScannerはCharStreamを下位モジュールとして利用する。
CharStreamは入力文字列から一文字ずつ文字を取り出すことができる。
