Я новичок в этой теме, так что есть большая вероятность, что я неправильно понял некоторые ключевые слова.Я хотел бы разобрать файл машинописи в его составляющие символы.Чтобы дать очень грубый пример того, что я представляю себе выходящим, смотрите ниже:
// some ts file
export function yell(output: string) {
alert(output + "!!");
}
создаст что-то вроде этого:
{
symbols: [
{ type: "comment", text: "// some ts file" },
"\n",
{ type: "module", text: "export" },
" ",
{ type: "function", symbols: [
{ type: "name", text: "yell" },
... it goes on
]}
]
}
Я почти уверен, что эта символизация /Токенизация является частью фазы инициализации языкового сервера, пытаясь извлечь из этой проблемы (https://github.com/Microsoft/language-server-protocol/issues/33).
Но я прочитал документы по инициализации (https://microsoft.github.io/language-server-protocol/specification#initialize), и я не смог 'не могу найти (ctrl-f) ничего о возвращаемых символах или токенах.
Некоторое время назад я работал с Монако, и я знаю, что целью языковых серверов является в значительной степени стандартизация токенизации и связывания / навигации по коду., поэтому я уверен, что это правильный инструмент для него. Но документы довольно плотные и, кажется, гораздо больше сфокусированы на взаимодействиях кода, чем на разборе кода.
Как я могу разобрать TSдля символов, использующих протокол языкового сервера?
РЕДАКТИРОВАТЬ: хорошо упомянуть, на случай, если это проект сам по себе: я не ищу полный код для этого или что-то. Просто какой-тосГрубый обзор того, что происходит, и, возможно, несколько ссылок / отрывков на соответствующие документы.
РЕДАКТИРОВАТЬ 2: Я нашел очень похожий вопрос здесь ( TypeScript: получить синтаксическое дерево ), но этоне упоминает о языковых серверах и, похоже, пришел раньше, чем они.
РЕДАКТИРОВАТЬ 3: Похоже, что правильный термин, который я искал, это AST.Нашел действительно классный онлайн-инструмент для TypeScript (https://ts -ast-viewer.com / )