我最近决定看看Perl,并且在面对Perl 5和6时,由于其成熟和广泛的支持,我选择了5。如何在Perl 5中定义解析语法?
然而,真正让我感兴趣的Perl 6的一个特性是grammar
keyword,允许我们定义一种语言语法,它可以用来解析复杂的文本。在其他语言中,通常需要外部库或手动解析实现。
现在我已经解决了Perl 5,Perl 5中是否存在与Perl 6的grammar
关键字(或用于构建语法的其他功能)中的任何大致相同的内容?
我最近决定看看Perl,并且在面对Perl 5和6时,由于其成熟和广泛的支持,我选择了5。如何在Perl 5中定义解析语法?
然而,真正让我感兴趣的Perl 6的一个特性是grammar
keyword,允许我们定义一种语言语法,它可以用来解析复杂的文本。在其他语言中,通常需要外部库或手动解析实现。
现在我已经解决了Perl 5,Perl 5中是否存在与Perl 6的grammar
关键字(或用于构建语法的其他功能)中的任何大致相同的内容?
有没有核心的支持,但你可以看看Parse::RecDescent,Marpa::R2,Regexp::Grammars,或简单的任务,只是在一个正则表达式使用(DEFINE)
(见perlre)。
它们看起来都很好,特别是'Regexp :: Grammars'。请介意一下关于“(DEFINE)”的内容吗? * perlre * docs对于初学者来说似乎有点混淆。 –
@ OrangeFlash81:查看[JSON解析器作为单个Perl正则表达式](http://www.perlmonks.org/?node_id=995856)为例。 – choroba
很酷,谢谢。我会在3分钟内接受。 –
尽管我自己并没有太多使用它,但我相信Acmeist软件Pegex已经接近Perl 6语法。
https://metacpan.org/pod/Regexp::Grammars是一个类似的CPAN模块。作者Damian Conway在SO上有一些答案,广泛使用它。但不幸的是,您的问题是无关紧要的,因为您要求提供工具建议。 – simbabque
@simbabque你可以稍微改写一下这个问题,使它成为话题:“我如何定义一个在Perl 5中解析文本的语法?” – ThisSuitIsBlackNot
我知道。但我认为OP有足够的经验可以做到@ThisSuitIsBlackNot;) – simbabque