Module Scopelang.Ast

Abstract syntax tree of the scope language

Identifiers

module LocationSet : Stdlib.Set.S with type elt = location Catala_utils.Mark.pos

Abstract syntax tree

type 'm expr = ( Shared_ast.scopelang, 'm ) Shared_ast.gexpr
val locations_used : 'm expr -> LocationSet.t
type 'm scope_decl = {
scope_decl_name : Shared_ast.ScopeName.t;
scope_sig : (Shared_ast.typ * Desugared.Ast.io) Shared_ast.ScopeVar.Map.t;
scope_decl_rules : 'm rule list;
scope_mark : 'm Shared_ast.mark;
scope_options : Desugared.Ast.catala_option Catala_utils.Mark.pos list;
}
type 'm program = {
program_scopes : 'm scope_decl Shared_ast.ScopeName.Map.t;
program_topdefs : ('m expr * Shared_ast.typ) Shared_ast.TopdefName.Map.t;
program_ctx : Shared_ast.decl_ctx;
}
val type_program : 'm program -> Shared_ast.typed program