Files
meowc/lib/ast.ml
T

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