【发布时间】:2018-12-17 09:51:55
【问题描述】:
这与this question on accesing the POD 有关,但不止于此。你可以easily access the Abstract Syntax Tree of a Perl 6 program 使用:
perl6 --target=ast -e '"Þor is mighty!".say'
这将打印整个 Q 抽象语法树。目前还不太清楚如何从您自己的程序中制作这个,或者我还没有找到如何做到这一点。事实上,the CoreHackers::Q module 将其作为外部脚本运行。但是能够从您自己的程序中访问它,例如
use QAST; # It does not exist
my $this-qast = QAST::Load("some-external-file.p6") # Would want something like this
会很棒。我很确定这应该是可能的,在 NQP 级别并且可能以 Rakudo 依赖的方式。有人知道它很热吗?
【问题讨论】:
-
据我了解,当有一个 precomp 文件时,其中的任何内容都是 MAST 的字节表示,而不是 QAST。也许九位(Stefan Seifert)可以详细说明这一点,因为他最近重构了 QAST -> MAST 流程。
-
@elizabethMattijsen 非常感谢。这里的主要内容是我试图在不实际运行文件的情况下从文件中提取 POD。我想要的是修剪操作的 QAST,只获取不可执行的部分,对它进行“清理”。
标签: abstract-syntax-tree raku rakudo nqp