El clásico dragon book explica muy bien cómo funcionan los analizadores LR. También hay Parsing Techniques. A Practical Guide. donde puedes leer sobre ellos, si mal no recuerdo. El artículo en wikipedia (al menos la introducción) no es correcto. Fueron creados por Donald Knuth y los explica en su Volumen 5 de El arte de la programación de computadoras. Si entiendes español, hay una lista completa de libros here publicados por mí. No todos los libros están en español, tampoco.
Antes de entender cómo funcionan, debe comprender algunos conceptos como primero, siguiente y anticipación. Además, realmente recomiendo que comprendas los conceptos detrás de los analizadores LL (descendentes) antes de tratar de entender los analizadores LR (ascendente).
Hay una familia de analizadores LR, especialmente LR (K), SLR (K) y LALR (K), donde K es la cantidad de anticipación que necesitan para trabajar. Yacc admite analizadores LALR (1), pero puede realizar ajustes, no basados en teoría, para que funcione con tipos de gramáticas más potentes.
Sobre el rendimiento, depende de la gramática que se analiza. Se ejecutan en tiempo lineal, pero el espacio que necesitan depende de cuántos estados construyas para el analizador final.
+1 me he estado preguntando lo mismo. Los analizadores sintácticos de descenso recursivo son tan fáciles de entender, pero tan difíciles de entender. Los analizadores LR son fáciles de escribir con un generador (como YACC), pero nunca entendí cómo funciona "debajo del capó". – Zifre
Happy "Nice Question" Badge :) –