Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing