package fmlib_parse

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Convenience module to generate readable error messages.

An error reporter is a parser which reparses the input stream, extracts the failed code snippet and prints the error nicely formatted.

For semantic errors, the module needs support from the user to convert a semantic error into a pretty print document.

The error reporter generates a pretty print document (details about pretty print documents see Fmlib_pretty.Print) of the form

       code snippet containing the error with markers at the error

       description of the error

The description of the error is in case of a syntax error a description of what might have been expected at the error position and in case of a semantic error whatever the user provides as an error description.

The generated error report has one of the following forms:

  • Syntax error:

            25 |      xxxx
            26 |
            27 |    line with error
                              ^
    
            I have encountered something unexpected. I was expecting one of
    
                - xxx
                - yyy
                - zzz
                ...
  • Semantic error on one line:

            25 |      xxxx
            26 |
            27 |    line with error
                              ^^^^^
    
            User supplied description of the semantic error
  • Semantic error spanning several lines

            25 |      xxxx
            26 |
                              v----------
            27 |    xxx yyy   error start
            28 |      err err err err err
            29 |          err err err
            30 |       err error end zzz
                  -----------------^
    
            User supplied description of the semantic error
module type FAILED_PARSER = sig ... end

Needed functions from a failed parser i.e. a parser which has failed either with a syntax error or a semantic error.

module Make (Parser : FAILED_PARSER) : sig ... end

Generate the error reporter from a failed parser.

OCaml

Innovation. Community. Security.