Frama-C API - Errorloc
The module stores the current file,line, and working directory in a hidden internal state, modified by the three following functions.
val currentLoc : unit -> Cil_datatype.Location.t
This function is used especially when the preprocessor has generated linemarkers in the output that let us know the current working directory at the time of preprocessing (option -fworking-directory for GNU CPP).
val startParsing : string -> (Stdlib.Lexing.lexbuf -> 'a) -> Stdlib.Lexing.lexbuf * (Stdlib.Lexing.lexbuf -> 'a)
Call this function to start parsing.
val pp_context_from_file : ?ctx:int -> Stdlib.Format.formatter -> Cil_types.location -> unit
prints the line(s) identified by the location, together with ctx
lines of context before and after. ctx
defaults to 2. If the location expands to multiple lines, those lines will be separated from context by blank lines. Otherwise, the portion of the line that is between the two positions of the location will be underlined with ^
NB: if the two positions in the location refer to different files, the first position will not be considered.
val pp_location : Stdlib.Format.formatter -> Cil_types.location -> unit
prints a readable description of a location
val parse_error : ?loc:Cil_types.location -> ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
Emits the corresponding error message with some location information. If not given, location
will be considered to be between the end of the forelast token read by the parser and the start of the last token, i.e. we assume the parser has read an unexpected token.
Has an error been raised since the last call to clear_errors
?
Parse errors are usually fatal, but their reporting is sometimes delayed until the end of the current parsing phase. Functions that intend to ultimately fail should call clear_errors
when they start, and check had_errors
when they end, then call parse_error
if needed.