A lightweight LL parser framework