The LMNO LALR(1) parser generator