51 lines
1.0 KiB
OCaml
51 lines
1.0 KiB
OCaml
|
(* The main module of the preprocessor (see [lex]) *)
|
||
|
|
||
|
(* Regions *)
|
||
|
|
||
|
module Region = Simple_utils.Region
|
||
|
|
||
|
val mk_reg : Lexing.lexbuf -> Region.t
|
||
|
|
||
|
(* Errors *)
|
||
|
|
||
|
type error =
|
||
|
Invalid_directive of string
|
||
|
| Directive_inside_line
|
||
|
| Missing_endif
|
||
|
| Invalid_line_indicator of string
|
||
|
| No_line_indicator
|
||
|
| End_line_indicator
|
||
|
| Newline_in_string
|
||
|
| Open_comment
|
||
|
| Open_string
|
||
|
| Dangling_endif
|
||
|
| Open_region_in_conditional
|
||
|
| Dangling_endregion
|
||
|
| Conditional_in_region
|
||
|
| If_follows_elif
|
||
|
| Else_follows_else
|
||
|
| Dangling_else
|
||
|
| Elif_follows_else
|
||
|
| Dangling_elif
|
||
|
| Reserved_symbol of string
|
||
|
| Multiply_defined_symbol of string
|
||
|
| Error_directive of string
|
||
|
| Parse_error
|
||
|
| No_line_comment_or_blank
|
||
|
| Invalid_symbol
|
||
|
|
||
|
val format :
|
||
|
?offsets:bool -> error Region.reg -> file:bool -> string Region.reg
|
||
|
|
||
|
(* Preprocessing a lexing buffer (might raise [Error]). *)
|
||
|
|
||
|
exception Error of Buffer.t * error Region.reg
|
||
|
|
||
|
val lex : Lexing.lexbuf -> Buffer.t
|
||
|
|
||
|
(* Evaluation of boolean expressions *)
|
||
|
|
||
|
module Env : Set.S with type elt = string
|
||
|
|
||
|
val eval : Env.t -> E_AST.t -> bool
|