package RakuAST
package RakuAST { }
The RakuAST
package serves as a common namespace for all classes
that provide RakuAST functionality.
Support for RakuAST
functionality is available in language version
6.e+
and was added in Rakudo compiler release 2023.02. In earlier
language versions it is only available when specifying:
use experimental :rakuast;
Classes
Documentation of RakuAST
classes is ongoing, while the development
of RakuAST is still ongoing as well.
Useful methods
To make developing in RakuAST easier, several helper methods are available.
The AST
method can be called on a string containing Raku source
code, and it will return the RakuAST object tree needed to create
the AST of the given source code.
$ raku -e 'say Q/"Hello World"/.AST.^name'
RakuAST::StatementList
And the gist of such a RakuAST object tree shows the Raku source code to create such a tree:
$ 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"),
)
)
)
)
)
)
This can be used as a base to create your own RakuAST object trees.
It is also possible to create a Raku source representation of a
RakuAST object tree, by calling the .DEPARSE
method on it:
$ raku -e 'say Q/"Hello World"/.AST.DEPARSE'
say("Hello World")
Please note that the .AST
method depends on the Raku grammar,
which may not yet support all of the Raku Programming Language
features that you want to use. And vice-versa: the .DEPARSE
method may not be able to create a valid, executable Raku source
representation, especially if the RakuAST object tree has been
built "manually".