Получение дерева типизированного синтаксиса из dart2js или dart-analyzer

Я хотел бы получить именно это подмножество источников компилятора дротиков (dart2js или dartdevc или другого) или анализатора дротиков, которые могут 1. преобразовать строку кода дротика (или, лучше, список строк, каждая из которых представляет единицу компиляции) в дерево типизированного синтаксиса, 2. перевести в js, 3. запустить в браузере. Есть ли отмеченное подмножество, которое удовлетворяет этим требованиям, что это такое, и как я могу найти его, в целом.

1 ответ

Решение

Выполнить #1 довольно просто, используя package:analyzer- тот же статический анализатор, который используется для предоставления подсказок IDE и автозаполнения и т. д. В настоящее время Dart Team работает над объединением своих интерфейсов компилятора в основном API, но пока, analyzer Обязательно позаботьтесь о большинстве того, что вам нужно.

Вот пример получения синтаксического дерева и выполнения анализа на нем: https://github.com/thosakwe/analyzer_examples/blob/master/analyze_a_file/analyze_a_file.dart

Что касается #2, вам, вероятно, придется раскошелиться dart-lang/sdk сделайте репо и внесите свои коррективы в dart2js, Он не публикуется как отдельный пакет. В противном случае вы можете написать свой собственный компилятор, что, вероятно, не будет весело.

  1. Я полагаю, вам нужно выяснить, как запустить # 2 и запустить, но гипотетически, если бы вы могли скомпилировать источник JavaScript, вы могли бы просто eval это после компиляции.

Чтобы ответить на ваш последний вопрос, нет, AFAIK, нет подмножества dart2js доступно, что позволяет вам создать свой собственный компилятор Dart-to-JavaScript.

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