basic monadic parser