最近我写了一个(高度优化的)LALR(1) 解析器(它可以处理模棱两可的语法),并为它提供了一个非常模棱两可的语法。之后,我为相同的语法编写了一个递归下降解析器,但消除了所有的歧义。我读过很多次 LALR(1) 解析器非常高效,而递归下降解析器非常低效,所以我自然希望 LALR 解析器运行得更快,即使它有一个模棱两可的语法。当我比较两次运行的结果时,我惊呆了——递归下降解析器比 LALR 解析器快得多!为什么 LALR 解析器比递归下降解析器慢?是因为 LALR 解析器的语法不明确吗?
问问题
130 次