Perl 6 - 子程序采用"Bareword"输入

Phy*_*oph 6 perl parsing declaration perl6

所以我一直在深入研究Perl 6,并一直在寻找使用Perl 6的运算符定义来解释另一种语言.我知道这可以通过解析代码来完成,但我希望推动Perl 6的功能,看看它能做些什么.拥有此功能还可以使解析更容易

我正在尝试以C风格格式制作变量定义.(语言并不重要)

就像是:

char foo;
Run Code Online (Sandbox Code Playgroud)

其中char表示类型,foo是变量名称.根据我的理解,char可以使用运算符定义来解释,如下所示:

sub prefix:<char>($input) {
    say $input;
}
Run Code Online (Sandbox Code Playgroud)

它调用子程序,将foo作为$ input.这里的想法是使用foo作为字符串并在某处的哈希中保存它的引用.这个问题是Perl 6似乎看到任何裸字作为函数调用,并且当它找不到"未声明的例程"时会抱怨.

我看可能是到处找一个答案,这让我仍然认为这是可能的唯一的事情就是QW从Perl 5的功能现在是<> Perl 6中的<>显然是一个运营商,这导致我相信在某处定义了一个子程序,它告诉操作员如何工作以及如何处理裸字输入.

所以对我的问题:

是否有一种方法可以像在<>运算符中那样接受单行输入到子程序中?

干杯!

jjm*_*elo 2

最好的方法是创建一个语法来解析您的语言。如果您还希望它运行刚刚创建的 DSL,请将其与Actions结合起来。