这与this question on accesing the POD有关,但远远不止于此。您可以easily access the Abstract Syntax Tree of a Perl 6 program使用:
import sys
import pandas as pd
import xlsxwriter
def excel_data (arg1,arg2,arg3,arg4):
df = pd.DataFrame({‘SODA RISK’: [arg1,arg2,arg3,arg4]})
writer = pd.ExcelWriter(‘try_python.xlsx’, engine=‘xlsxwriter’)
df.to_excel(writer,sheet_name=‘Sheet1’)
writer.save()
这将打印整个Q抽象语法树。目前尚不清楚如何从您自己的程序中做到这一点,或者我还没有找到如何做到这一点。实际上,the CoreHackers::Q
module将其作为外部脚本运行。但能够通过自己的程序(例如
perl6 --target=ast -e '"Þor is mighty!".say'
会很棒。我很确定在NQP级别,并且有可能以依赖Rakudo的方式,这是有可能的。有人知道热吗?
答案 0 :(得分:6)
由于QAST不是Perl 6语言规范的一部分,而是Rakudo的内部实现细节,因此没有官方的方法可以做到这一点。最终,将有一个AST形式成为语言规范的一部分,但尚不存在(007项目正在致力于探索这一领域)。
但是,可以使用以下方法获取QAST树:
use nqp;
my $ast = nqp::getcomp("perl6").eval("say 42", :target<ast>);
say $ast.dump();