mte/unikernel/duniverse/ppxlib/ast/pp/pp_rewrite.mll
2025-11-11 02:07:51 +01:00

27 lines
745 B
OCaml

{
open Printf
let print_ocaml_version version =
let patt_len = String.length "OCAML_VERSION" in
(* Note: the spaces in the replacements are to preserve locations *)
printf "%-*s" patt_len version
}
rule rewrite ocaml_version = parse
| "OCAML_VERSION"
{ print_ocaml_version ocaml_version;
rewrite ocaml_version lexbuf
}
| "(*IF_AT_LEAST " ([^'*' ' ']* as v) " " ([^'*']* as s) "*)"
{ let chunk = if (v <= ocaml_version)
then " " ^ String.make (String.length v + 1) ' ' ^ s ^ " "
else Lexing.lexeme lexbuf
in
print_string chunk;
rewrite ocaml_version lexbuf
}
| _ as c
{ print_char c;
rewrite ocaml_version lexbuf
}
| eof { () }