使用 PEG 解析 PHP 是否可行?

3
问题很直接:是否可以使用PEG解析PHP? 我想使用PEG解析器生成器来解析PHP。请给予建议。谢谢!

1
我对PEGs不是很熟悉,但我猜应该是可能的。为什么不试一试呢(可能从简化版本的PHP语法开始,看看是否能够工作)。 - bcat
1个回答

4
您可以通过足够的努力使大多数解析器技术解析大多数语言。但是,是否需要大量努力才能使用PEG解析PHP是一个不同的问题。
据我所知,PHP本身使用Bison(LALR),因此我认为PEG可能会处理由PHP分发或类似物提供的语法。如果您要使用PHP分发,为什么不使用他们提供的解析器呢?
如果您不使用PHP分发,那么解析PHP时遇到的问题可能很难解决,因为您必须从在线参考手册中猜测语言语法(我已经尝试过这样做了),而这实际上是我见过的定义语言最糟糕的方式之一:它只是一堆例子。

+1 Hi Ira。非常感谢你的推理。是的,你是对的,使用PHP分发的解析器是最好的选择。然而,我更喜欢PHP的简单性。我会先尝试一下,看看能走多远。谢谢。 - Viet
1
“我更喜欢 PHP 因为它简单易学…” 你是指 PEG 吗? - Ira Baxter
1
你还在尝试将PHP转换为C++吗(stackoverflow.com/questions/1090124/…)?如果是这样,你可以考虑使用一个已经拥有完整PHP解析器的工具,并且可以应用源到源模式规则来进行这种转换。请参见<a href="semanticdesigns.com/Products/FrontEnds/PHPFrontEnd.html">PHP前端</a>。 - Ira Baxter
你看过 PHP-Parser 吗? - CMCDragonkai
@CMCDragonkai:没有链接,所以我不确定你指的是什么。根据这个答案:https://dev59.com/Sm025IYBdhLWcg3wvIgo#5834775,我知道有一个基于github.com/nikic/PHP-Parser的解析器,但我不知道它到底有多完整。 - Ira Baxter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接