我如何在 Perl 5 中定义解析语法?

How can I define a parsing grammar in Perl 5?

我最近决定研究 Perl,当面对 Perl 5 与 6 时,我选择了 5,因为它的成熟度和广泛的支持。

然而,Perl 6 的其中一个真正让我着迷的特性是 grammar keyword,它允许定义一种可用于解析复杂文本的语言语法。在其他语言中,通常需要外部库或手动解析实现。

既然我已经选择了 Perl 5,那么在 Perl 5 中是否存在与 Perl 6 的 grammar 关键字(或其他用于构建语法的功能)大致等效的内置或其他方式?

没有核心支持,但你可以看看Parse::RecDescent, Marpa::R2, Regexp::Grammars, or for simpler tasks, just use (DEFINE) in a regex (see perlre)。

虽然我自己用得不多,但我相信Acmeist软件Pegex接近Perl 6 Grammars