Im пытается программным образом использовать/внедрять Ceylon Typechecker для анализа исходного кода Ceylon. В этом случае я хочу получить доступ ко всей информации, которую обычно потребляет компилятор. Но я не собираюсь компилировать, и я не собираюсь добавлять зависимость от компилятора.Ceylon Typechecker: Как получить типизированное дерево синтаксиса?
Мне кажется, что основная точка входа в ceylon/typechecker/src/main/Main.java не является подходящей точкой входа для этого варианта использования (получение типизированного дерева и присоединенных моделей), потому что это информация, которая была собрана посетителями в трех шагах проверки, отбрасывается, и печатаются только ошибки.
Итак, мой вопрос:
Как я могу разобрать и typecheck блока компиляции, а затем получить 1. типизированного синтаксиса дерева и 2. соответствующих модели объектов типов посетителей анализа сталкиваются в дерево, которое связано с деревом.
отредактирован:
Был (и есть) какая-то путаница с моей стороны о 3-х различном НРХЕ существует.
В README на Цейлоне /ceylon.ast сказано:
¨ ... ceylon.ast.core - классы Цейлон, которые представляют собой цейлонский AST. Чистый цейлон (независимый от бэкэнда). ... ceylon.ast.redhat - преобразует ceylon.ast.core AST из + в компилятор RedHat (ceylon-spec AST, а также содержит функции для компиляции ceylon.ast.core AST из строки кода (используя . RedHat компилятор) ... ¨
Так есть 3 НРХ: 1. один порожденный ANTLR, 2. ceylon.ast.core и 3. ceylon.ast.redhat Почему
.?
Хорошо, я добавил детали к окончательной пуле. Конечно, вы можете обрабатывать 'Tree.CompilationUnit', как вам нравится: переключатель, посетитель или что-то еще. Вы также можете преобразовать АСТ на основе Java на основе цейлона ['ceylon.ast'] (https://herd.ceylon-lang.org/modules/ceylon.ast.core), как я сделал для бэкэнда Дарта. –