猿问

如何从 Java 调用 Perl 6?

Perl 6 正则表达式/语法比 Perl 5 或任何地方的相关 Perl 兼容正则表达式(包括 Java 中的正则表达式)结构更好、功能更强大且可读性更强。我正在寻找一种使用 Java 中的正则表达式/语法代码执行 Perl 6 代码的方法。


这是我想做的一个常见示例:


grammar Calculator {

    token TOP { [ <add> | <sub> ] }

    rule  add { <num> '+' <num> }

    rule  sub { <num> '-' <num> }

    token num { \d+ }

}


class Calculations {

    method TOP ($/) { make $<add> ?? $<add>.made !! $<sub>.made; }

    method add ($/) { make [+] $<num>; }

    method sub ($/) { make [-] $<num>; }

}


say Calculator.parse('2 + 3', actions => Calculations).made;


# OUTPUT: «5␤» 

也许我必须Class在 Perl 6 中编写一个,并且必须为 JVM 字节码编译它,然后我可以调用它。这是一个解决方案吗?或者那是不可能的?


也许从 Java 调用 Perl 6 太难了。还有另一个方向。Perl 6 中有很多内联模块,如 Inline::Python、Inline::Perl5 等。还有一种在 Perl 6 中运行 java 代码的方法。这是我找到的一个例子:


use java::util::zip::CRC32:from<java>;


my $crc = CRC32.new();

for 'Hello, Java'.encode('utf-8') {

    $crc.'method/update/(B)V'($_);

}

say $crc.getValue();

这是一种从 Perl 6 开始并将大量 Java 代码绑定到一个项目的可能方法吗?但是如何从 Java 返回到我的 Perl 6 代码?对于 Perl 5,我可以找到 Inline::Java::Callback 模块,但不能找到 Perl 6。


我应该如何以专业的方式做到这一点?


紫衣仙女
浏览 225回答 2
2回答
随时随地看视频慕课网APP

相关分类

Java
我要回答