Module Mlang.Mpp_ir

type scope =
| Input
| Output
type scoped_var =
| Local of string
| Mbased of Mir.Variable.t * scope
type mpp_compute_name = string
type unop =
| Minus
type binop = Mpp_ast.binop
type mpp_expr = mpp_expr_kind Pos.marked
and mpp_expr_kind =
| Constant of int
| Variable of scoped_var
| Unop of unop * mpp_expr
| Call of mpp_callable * scoped_var list
| Binop of mpp_expr * binop * mpp_expr
and mpp_callable =
| Rules of Mlang.Mast.DomainId.t
| Chain of Mast.chaining
| Verifs of Mlang.Mast.DomainId.t * mpp_expr
| NbVarCat of Mlang.Mir.CatVarSet.t
| ExistsAttrWithVal of string Pos.marked * float
| ExistsAliases of Pos.t Mlang.StrMap.t
| MppFunction of mpp_compute_name
| Present
| Abs
| Cast
type mpp_stmt = mpp_stmt_kind Pos.marked
and mpp_stmt_kind =
| Assign of scoped_var * mpp_expr
| Conditional of mpp_expr * mpp_stmt list * mpp_stmt list
| Delete of scoped_var
| Expr of mpp_expr
| Partition of string Pos.marked * float * mpp_stmt list
type mpp_compute = {
name : mpp_compute_name;
args : scoped_var list;
body : mpp_stmt list;
}
type mpp_program = mpp_compute list