From my limited experience I'd say that one advancement is the LL(*)
algorithm which allows arbitrary scan ahead of tokens (compared to
e.g. LL(5) which allows only to check the next 5). It is implemented
in ANTLR 3.x and available on www.antlr.org . There is also a book
from the author which does not only explain the use of ANTLR but also
the algorithm in deeper detail.