simple parser generator