package RakuAST { }

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 对象树是“手动”构建的。