Scanner
TypeScript Scannerのソースコードは、完全にscanner.ts
にあります。ScannerはソースコードをASTに変換するためにParser
によって内部的に制御されます。以下に示すのは、どんな結果が望まれるかです:
Parserによる使用法
Scannerを何度も作成するコストを避けるために、parser.ts
にシングルトンのscanner
が作成されています。このスキャナは、initializeState
関数を使ってオンデマンドにParserによって準備されます。
ここでは、この概念を説明するParser内の実際のコードのシンプルバージョンを示します:
code/compiler/scanner/runScanner.ts
これは以下を出力します:
スキャナの状態
scan
を呼び出すと、スキャナはローカル状態(スキャン中の位置、現在のトークンの詳細など)を更新します。スキャナには、現在のスキャナの状態を取得するためのユーティリティ機能が用意されています。以下のサンプルでは、スキャナを作成し、それを使用してコード内のトークンとその位置を特定しています。
code/compiler/scanner/runScannerWithPosition.ts
これは以下を出力します:
スタンドアロンScanner
TypeScript ParserはシングルトンのScannerを持っていますが、createScanner
を使ってスタンドアロンScannerを作成し、setText
/setTextPos
を使って、一興のためにファイル内の異なる位置をスキャンすることができます。
最終更新