Получение QAST файла Perl 6 из другой программы - PullRequest
0 голосов
/ 17 декабря 2018

Это относится к этому вопросу о доступе к 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 Ответ

0 голосов
/ 17 декабря 2018

Поскольку QAST не является частью спецификации языка Perl 6, а является внутренней деталью реализации Rakudo, официального способа сделать это не существует.В конце концов будет форма AST, которая является частью спецификации языка, но еще не существует (проект 007 , который работает над изучением этой области).

Это так,однако можно получить дерево QAST с помощью:

use nqp;
my $ast = nqp::getcomp("perl6").eval("say 42", :target<ast>);
say $ast.dump();
...