Add the `def' keyword in the lexer and the parser. Refactor error handling with monads.