mte/unikernel/duniverse/ppxlib/astlib/pp/pp_rewrite.mll

32 lines
1.1 KiB
OCaml
Raw Normal View History

2025-11-11 02:07:51 +01:00
rule rewrite is_current ocaml_version = parse
| "(*IF_CURRENT " ([^'*']* as s) "*)"
{ let chunk = if is_current
then " " ^ s ^ " "
else Lexing.lexeme lexbuf
in
print_string chunk;
rewrite is_current 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 is_current ocaml_version lexbuf
}
| "(*IF_NOT_AT_LEAST " ([^'*' ' ']* as v) " " (([^'*'] | '*' [^')'])* as s) "*)"
{ let chunk = if not (v <= ocaml_version)
then " " ^ String.make (String.length v + 1) ' ' ^ s ^ " "
else Lexing.lexeme lexbuf
in
print_string chunk;
rewrite is_current ocaml_version lexbuf
}
| _ as c
{ print_char c;
rewrite is_current ocaml_version lexbuf
}
| eof { () }