Module Mlang.Mpp_ast

type var = string
type compute_name = string
type callable = string
type unop =
| Minus
type binop =
| And
| Or
| Gt
| Gte
| Lt
| Lte
| Eq
| Neq
type expr = expr_kind Pos.marked
and expr_kind =
| Constant of int
| Variable of var
| NbVarCategory of string Pos.marked list Pos.marked
| ExistsAttrWith of string Pos.marked * float
| ExistsAliases of string Pos.marked list
| Unop of unop * expr
| CallRules of string Pos.marked list Pos.marked * var Pos.marked list
| CallChain of var Pos.marked list
| CallVerifs of string Pos.marked list Pos.marked * expr
| Call of callable Pos.marked * var Pos.marked list
| Binop of expr * binop * expr
type stmt = stmt_kind Pos.marked
and stmt_kind =
| Assign of var * expr
| Conditional of expr * stmt list * stmt list
| Delete of var
| Expr of expr
| Partition of string Pos.marked * float * stmt list
type compute = {
name : compute_name;
args : var list;
body : stmt list;
}
type program = compute list