ocaml/parsing/longident.mli

61 lines
2.4 KiB
OCaml

(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. *)
(* *)
(* All rights reserved. This file is distributed under the terms of *)
(* the GNU Lesser General Public License version 2.1, with the *)
(* special exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
(** Long identifiers, used in parsetree.
{b Warning:} this module is unstable and part of
{{!Compiler_libs}compiler-libs}.
*)
type t =
Lident of string
| Ldot of t * string
| Lapply of t * t
val flatten: t -> string list
val unflatten: string list -> t option
(** For a non-empty list [l], [unflatten l] is [Some lid] where [lid] is
the long identifier created by concatenating the elements of [l]
with [Ldot].
[unflatten []] is [None].
*)
val last: t -> string
val parse: string -> t
[@@deprecated "this function may misparse its input,\n\
use \"Parse.longident\" or \"Longident.unflatten\""]
(**
This function is broken on identifiers that are not just "Word.Word.word";
for example, it returns incorrect results on infix operators
and extended module paths.
If you want to generate long identifiers that are a list of
dot-separated identifiers, the function {!unflatten} is safer and faster.
{!unflatten} is available since OCaml 4.06.0.
If you want to parse any identifier correctly, use the long-identifiers
functions from the {!Parse} module, in particular {!Parse.longident}.
They are available since OCaml 4.11, and also provide proper
input-location support.
*)
(** To print a longident, see {!Pprintast.longident}, using
{!Format.asprintf} to convert to a string. *)