有没有办法对已经解析的语法运行操作?

Ste*_*ieD 5 grammar raku

如果我做:

my $parsed_grammar = PG.parse( $some_string );
Run Code Online (Sandbox Code Playgroud)

有没有办法做类似下面的伪代码的事情?

$parsed_grammar.run_action( $action_class.new );
Run Code Online (Sandbox Code Playgroud)

Eli*_*sen 7

不。

你的语法基本上是一个程序。

与其他(正则表达式)实现相反,Raku 语法基本上只是编写类和方法的另一种方式。下面都是代码。可以为每个运行的方法提供回调的代码。这就是您的操作类:一种指定回调的方法。

因此,语法的解析发生在编译时.parse这将创建当您使用给定字符串作为输入进行调用时运行的代码。

您的误解似乎是.parse在语法上运行会解析语法。事实并非如此。它运行语法,解析您的输入字符串