Next: Error recovery, Previous: Actions goodies, Up: Wisent Parsing [Contents][Index]

### 3.3 The error reporting function

When the parser encounters a syntax error it calls a user-defined function. It must be an Emacs Lisp function with one argument: a string containing the message to report.

By default the parser uses this function to report error messages:

Function: wisent-message string &rest args

  Print a one-line message if `wisent-parse-verbose-flag` is set. Pass string and args arguments to message.

Please Note:

  `wisent-message` uses the following function to print lexical tokens:

  Function: wisent-token-to-string token

    Return a printed representation of lexical token token.

  The general printed form of a lexical token is:

  `token(value)@location`

To control the verbosity of the parser you can set to non-`nil` this variable:

Option: wisent-parse-verbose-flag

  non-`nil` means to issue more messages while parsing.

Or interactively use the command:

Command: wisent-parse-toggle-verbose-flag

  Toggle whether to issue more messages while parsing.

When the error reporting function is entered the variable `wisent-input` contains the unexpected token as returned by the lexer.

The error reporting function can be called from a semantic action too using the special macro `wisent-error`. When called from a semantic action entered by error recovery (see Error recovery) the value of the variable `wisent-recovering` is non-`nil`.