我知道 Perl 语法是不明确的,并且它的消歧是不平凡的(有时涉及在编译阶段执行代码 http://www.modernperlbooks.com/mt/2009/08/on-parsing-perl-5.html)。无论如何,Perl 是否有正式的语法(尽管不明确和/或上下文相关)?
From perlfaq7 http://perldoc.perl.org/perlfaq7.html
我可以获得 Perl 语言的 BNF/yacc/RE 吗?
没有 BNF,但你可以用爪子
通过 yacc 语法的方式
源代码发行版中的 perly.y 如果
你特别勇敢。语法
依赖于非常智能的标记化代码,
所以准备好冒险进入 toke.c
以及。
用 Chaim Frenkel 的话说:“Perl 的
语法不能简化为 BNF。这
解析 perl 的工作是分布式的
yacc、词法分析器、smoke 和
镜子。”
要查看一组精彩的示例,说明为什么由于上下文影响几乎不可能解析 Perl,请查看Randal Schwartz 的帖子:解析 Perl http://www.perlmonks.org/?node_id=44722
另外,请参阅“Perl 5 内部原理(第 5 章:词法分析器和解析器) http://www.faqs.org/docs/perl5int/lexparse.html”西蒙·科曾斯著。
请注意,Perl6 的答案是不同的: http://perl6advent.wordpress.com/2009/12/24/day-24-the-perl-6-standard-grammar/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)