RakuAST
包用作所有提供 RakuAST 功能的类的通用命名空间。
RakuAST
功能支持在语言版本 6.e+
中提供,并在 Rakudo 编译器版本 2023.02 中添加。在较早的语言版本中,仅在指定时可用
use experimental :rakuast;
类§
RakuAST
类的文档正在进行中,而 RakuAST 的开发也在进行中。
有用方法§
为了让在 RakuAST 中开发变得更容易,提供了几个帮助器方法。
可以在包含 Raku 源代码的字符串上调用 AST
方法,它将返回创建给定源代码的 AST 所需的 RakuAST 对象树。
$ raku -e 'say Q/"Hello World"/.AST.^name'
RakuAST::StatementList
此类 RakuAST 对象树的要点显示了创建此类树的 Raku 源代码
$ raku -e 'say Q/"Hello World"/.AST'
RakuAST::StatementList.new(
RakuAST::Statement::Expression.new(
expression => RakuAST::Call::Name.new(
name => RakuAST::Name.from-identifier("say"),
args => RakuAST::ArgList.new(
RakuAST::QuotedString.new(
segments => (
RakuAST::StrLiteral.new("Hello World"),
)
)
)
)
)
)
这可用作创建你自己的 RakuAST 对象树的基础。
还可以通过在 RakuAST 对象树上调用 .DEPARSE
方法来创建其 Raku 源表示形式
$ raku -e 'say Q/"Hello World"/.AST.DEPARSE'
say("Hello World")
请注意,.AST
方法依赖于 Raku 语法,该语法可能还不支持你想要使用的所有 Raku 编程语言功能。反之亦然:.DEPARSE
方法可能无法创建有效的可执行 Raku 源表示形式,特别是如果 RakuAST 对象树是“手动”构建的。