是否可以使用现有的Marpa解析器来改进Perl 5的解析(例如,替换现有Perl解释器的所有或部分解析器)?
我在理论层面问,例如忽视实际考虑因素,例如"如果可以,则需要花费10,000个工时和#34;
如果没有,阻止使用Marpa的具体问题是什么? (再次,最好是理论上的。)
有关为什么这很有趣的背景,Jeffrey Kegler(Marpa的作者)在2008年发表了一篇有关PerlMonks的着名文章"Perl Cannot Be Parsed: A Formal Proof",受到当时他对Marpa的影响。< / p>
答案 0 :(得分:9)
感谢您的提问。 perlmonks post和我目前的解析工作解决了两个不同的相关问题。问题1:Perl解析,完全通用,是否可以通过图灵机进行解析?问题2:作为一个实际问题,Marpa可以解析Perl 5吗?
您可以比较两个问题:“每个C程序的行为是否可判定?”和“可以机器X运行用C编译的程序吗?”答案分别是“否”和“是对所有实际目的和X的合理选择”。所以我的perlmonks帖子(更新here)是关于Perl程序的语法是否完全通用,可判定的理论问题。请注意,在该上下文中Perl解析的可判定性与Marpa,递归下降,野牛等无关 - 它与图灵机有关。
问题2是“Marpa可以驱动一个实用的Perl 5解析器吗?”当前的Perl 5解析器是LALR,具有单独的词法分析器和许多程序辅助。 Marpa比LALR更强大,允许单独的词法分析器,并且比LALR提供更多的程序代码帮助。我在a recent blog post中解决了速度问题:“Earley解析得足够快吗?”我刚才所说的是电报 - 但我希望它能够概述我如何证明我对问题2的“是”答案的合理性。
没有深层的架构问题阻碍了Marpa驱动的Perl 5解析器。在这一点上,这确实是一个舒适程度的问题。