Arpeggio is a recursive descent parser with memoization based on PEG grammars (aka Packrat parser). Documentation with tutorials is available here. Note: for a higher level parsing/language tool (i.e., a nicer interface to Arpeggio) see textX.