44 lines
974 B
OCaml
44 lines
974 B
OCaml
type value = { text : string; span : Span.t; quoted : bool }
|
|
|
|
type expr =
|
|
| Atom of value
|
|
| Not of expr * Span.t
|
|
| And of expr * expr
|
|
| Or of expr * expr
|
|
| Cmp of value * string * value
|
|
|
|
type field = { key : string; kspan : Span.t; values : value list }
|
|
|
|
type fitem =
|
|
| FField of field
|
|
| FIf of (expr * fitem list) list * fitem list
|
|
|
|
type block = {
|
|
kind : string;
|
|
kspan : Span.t;
|
|
bname : string;
|
|
nspan : Span.t;
|
|
items : fitem list;
|
|
}
|
|
|
|
type check =
|
|
| Header of value
|
|
| Func of value * value option
|
|
| Symbol of value * value
|
|
| Sizeof of value
|
|
| Compiles of value * value
|
|
|
|
type stmt =
|
|
| Project of value
|
|
| Set of value * value list
|
|
| Append of value * value list
|
|
| Option of value * value * value list
|
|
| Include of value
|
|
| Subdir of value
|
|
| If of (expr * stmt list) list * stmt list
|
|
| Check of check * Span.t
|
|
| Pkg of value * value option * Span.t
|
|
| ConfigHeader of value
|
|
| Message of value * value list
|
|
| Blk of block
|