Использовать синтаксические деревья Scala из внешнего инструмента

Я хотел бы разработать инструмент, который будет использовать синтаксические деревья скала (как следует из названия). Точнее, было бы здорово, если бы я мог потреблять деревья после каждой фазы компиляции.

Мои исследования привели меня к формату обмена вкусов Дотти, который, казалось, был тем, что я искал. Возможно это так. Однако я не смог найти адекватную документацию в Интернете, чтобы выяснить, как извлечь ее и потреблять.

Я также посмотрел на флаги компилятора dotc и не смог понять очевидный подход. Я заметил вариант: "-print-вкусно", но я не смог проверить ожидаемый результат или, может быть, я что-то упустил?

Конечно, я всегда могу распечатать AST после каждой фазы, используя принтер Scala (т.е. -Yshow-trees и т. Д.). Это мой единственный вариант? Если это так, то хорошо.

В идеале было бы замечательно, если бы я мог использовать AST в более "машинно-удобном" формате, если хотите. Похоже, что в теории я хочу именно TASTY, то есть сериализацию AST, но я не уверен, как извлечь это после каждой фазы.

Я прошу прощения, если мой вопрос слишком тривиален или уже был рассмотрен. Любые отзывы будут высоко оценены! Спасибо!

PS: Что делать, если AST были закодированы в формате JSON? Имеет ли смысл подобный инструмент scala (т. Е. Инструмент, который конвертирует AST Scala в JSON и обратно)?

0 ответов

Другие вопросы по тегам