Recursive descent is pleasant. It's probably the least brutish and most elegant of methods.[0]
[0] Of course, my opinion.
[0] Of course, my opinion.
Sadly, it also suffers from the usual problems of LL parser generators, like barfing on left-recursive grammars.