Scanner
Вихідний код сканера TypeScript повністю знаходиться у файлі scanner.ts
. Сканер контролюється внутрішньо парсером
для перетворення вихідного коду в AST. Ось бажаний результат.
Використання парсером
У файлі parser.ts
створено сканер
(як сінглтон), щоб уникнути витрат на створення сканерів знову і знову. Цей сканер потім запускається синтаксичним аналізатором на вимогу за допомогою функції initializeState
.
Нижче наведено спрощену версію коду синтаксичного аналізатора, яку ви можете запустити для демонстрації цієї концепції:
code/compiler/scanner/runScanner.ts
У результаті буде виведено наступне:
Стан сканера (Scanner State)
Після виклику scan
сканер оновлює свій локальний стан (позицію у скануванні, поточні дані токенів тощо). Сканер надає набір утиліт для отримання поточного стану сканера. У наведеному нижче прикладі ми створюємо сканер, а потім використовуємо його для ідентифікації токенів, а також їх позицій у коді.
code/compiler/scanner/runScannerWithPosition.ts
У результаті буде виведено наступне:
Самостійний сканер (Standalone scanner)
Незважаючи на те, що парсер TypeScript має сінглтон сканера, ви також можете створити самостійний сканер, використовуючи createScanner
, і використовувати його методи setText
/setTextPos
для сканування різних частин файлу на ваш розсуд або задоволення.
Last updated