dune/src/stanza.ml

41 lines
733 B
OCaml

open Stdune
type t = ..
module Parser = struct
type nonrec t = string * t list Sexp.Of_sexp.t
end
let syntax =
Syntax.create ~name:"dune" ~desc:"the dune language"
[ (0, 0) (* Jbuild syntax *)
; (1, 0)
]
module File_kind = struct
type t = Jbuild | Dune
end
let file_kind () =
let open Sexp.Of_sexp in
Syntax.get_exn syntax >>| fun ver ->
if ver < (1, 0) then File_kind.Jbuild else Dune
module Of_sexp = struct
include Sexp.Of_sexp
let record parse =
Syntax.get_exn syntax >>= fun ver ->
if ver < (1, 0) then
record parse
else
fields parse
let list parse =
Syntax.get_exn syntax >>= fun ver ->
if ver < (1, 0) then
list parse
else
repeat parse
end