Получение QAST файла Perl 6 из другой программы
Это связано с вопросом о доступе к POD, но это еще не все. Вы можете легко получить доступ к абстрактному синтаксическому дереву программы Perl 6, используя:
perl6 --target=ast -e '"Þor is mighty!".say'
Это напечатает все дерево абстрактного синтаксиса Q. Не очень понятно, как сделать это из вашей собственной программы, или я не нашел, как это сделать. На самом деле, CoreHackers::Q
Модуль запускает это как внешний скрипт. Но возможность доступа к нему из вашей собственной программы, например,
use QAST; # It does not exist
my $this-qast = QAST::Load("some-external-file.p6") # Would want something like this
было бы замечательно. Я почти уверен, что это возможно, на уровне NQP и, вероятно, в зависимости от Rakudo. Кто-то знает, что жарко идет?
1 ответ
Поскольку QAST не является частью спецификации языка Perl 6, а является внутренней деталью реализации Rakudo, официального способа сделать это не существует. Со временем появится форма AST, которая является частью спецификации языка, но ее пока нет (проект 007, который работает над изучением этой области).
Однако можно получить дерево QAST с помощью:
use nqp;
my $ast = nqp::getcomp("perl6").eval("say 42", :target<ast>);
say $ast.dump();