A lightweight LL parser