Парсер LALR медленнее парсера с рекурсивным спуском - PullRequest
0 голосов
/ 18 апреля 2020

Недавно я написал (очень оптимизированный) парсер LALR (1) (который мог обрабатывать неоднозначные грамматики) и снабдил его очень неоднозначной грамматикой. После этого я написал парсер рекурсивного спуска для той же грамматики, но со всей неопределенностью. Я много раз читал, что парсеры LALR (1) очень эффективны, а парсеры рекурсивного спуска очень неэффективны, поэтому я, естественно, ожидал, что парсер LALR будет работать намного быстрее, даже если он имеет неоднозначную грамматику. Когда я сравнил результаты двух запусков, я был шокирован - анализатор рекурсивного спуска намного быстрее, чем анализатор LALR! Почему LALR-анализатор медленнее, чем синтаксический анализатор с рекурсивным спуском? Было ли это потому, что синтаксический анализатор LALR имел неоднозначную грамматику?

...