Performance 有语法分析器生成器的基准吗?

Performance 有语法分析器生成器的基准吗?,performance,parsing,generator,benchmarking,Performance,Parsing,Generator,Benchmarking,有人看过解析器生成器性能的比较吗 我特别感兴趣的是: 1) 用于LALR(1)文法的递归上升解析器生成器; 2) 解析器生成器,用于生成基于C/C++的解析器。您对解析器生成器的运行速度感兴趣吗?取决于它所支持的解析引擎的技术类型,以及实现解析器生成器的人员的关心程度。有关真实语言的LALR/GLR解析器生成器的一些数字,请参见此答案:IMHO,这不是很重要;解析器生成器通常比使用它们的人快得多 如果问题是,生成的解析器有多快?你会得到不同的答案。LALR解析器可以在每次GOTO转换(使用直接索

有人看过解析器生成器性能的比较吗

我特别感兴趣的是: 1) 用于LALR(1)文法的递归上升解析器生成器;
2) 解析器生成器,用于生成基于C/C++的解析器。

您对解析器生成器的运行速度感兴趣吗?取决于它所支持的解析引擎的技术类型,以及实现解析器生成器的人员的关心程度。有关真实语言的LALR/GLR解析器生成器的一些数字,请参见此答案:IMHO,这不是很重要;解析器生成器通常比使用它们的人快得多


如果问题是,生成的解析器有多快?你会得到不同的答案。LALR解析器可以在每次GOTO转换(使用直接索引的GOTO表)时使用少量机器指令实现,在每次缩减时使用少量机器指令实现。这很难打败

通常不是递归下降吗?不是,是递归上升。:)递归下降解析器可以解析LL语言,但不能解析LR语言。如果您喜欢我的答案,您应该将其标记为“有用”;如果你足够喜欢它,你可以把它标记为已接受。对不起,我不知道我应该标记它。你的回答对我很有用,但它回答了错误的问题。谢谢!我对解析器生成器的运行速度不感兴趣,我感兴趣的是生成的解析器有多快。我最近编写了LALR(1)递归上升生成器(它生成硬编码的,而不是基于表的解析器),生成的解析器似乎比bison的快2倍左右(尽管非常大)。但是bison是基于表的LALR(1),我想将我的生成器与类似的生成器进行比较。如果您正在生成代码来表示GOTO表(作为一种巨大的开关),那么您将用大量条件分支换取间接访问。您是否考虑过将state的分支集生成为平衡树?(可能会显著减少执行的分支数量)。。。作为一个令牌频率偏差树(利用某些令牌()={};NNNN ID非常常见,而其他令牌不太常见的事实?…Bill McKeeman已经完成了并行运行解析器的工作,例如,将输入流分成N个块,(部分)解析每个块,粘在一起。我想他声称在大文件上的加速非常接近线性。关于令牌频率的一个有趣想法!我生成普通开关,目前没有做任何此类优化。(我的生成器很简单,相当愚蠢)。相反,我依赖C编译器(gcc-O2),我的分析器显示我的分析器的错误预测比bison的少约5倍。我的生成器基于这项工作:如果你能给我发一个Bill McKeeman工作的链接(我可以在那里免费下载),我将非常高兴。:)