Module Sarek_parse

exception Parse_error_exn of string * Ppxlib.Location.t

Re-export helpers used by external callers

val extract_name_from_pattern : Ppxlib.pattern -> string option
val extract_param_from_pattern : Ppxlib.pattern -> Sarek_ast.param
val extract_type_from_pattern : Ppxlib.pattern -> Sarek_ast.type_expr option
val collect_fun_params : Ppxlib.expression -> Ppxlib.pattern list * Sarek_parse_helpers.fun_body option
val pattern_of_param : Ppxlib.pattern -> Ppxlib.pattern
val parse_binop : string -> Sarek_ast.binop option
val parse_unop : string -> Sarek_ast.unop option
val parse_type : Ppxlib.core_type -> Sarek_ast.type_expr
val parse_let_shared : (Ppxlib.expression -> Sarek_ast.expr) -> Ppxlib.expression -> Sarek_ast.expr_desc

Parse let%shared: let%shared name : type = size in body Syntax: let%shared tile : float32 array in body let%shared tile : float32 array = 64 in body

val parse_superstep : (Ppxlib.expression -> Sarek_ast.expr) -> Ppxlib.expression -> Sarek_ast.expr_desc

Parse let%superstep: let%superstep ~divergent name = body in cont Syntax: let%superstep load = tile.(i) <- v in cont let%superstep ~divergent final = ... in cont

val parse_expression : Ppxlib.expression -> Sarek_ast.expr

Parse an expression

val parse_assign_form : Ppxlib.expression -> Ppxlib.expression -> Sarek_ast.expr_desc

Extract body for mutable assignment: x := v

val parse_pragma_form : Ppxlib.expression -> Ppxlib.expression -> Sarek_ast.expr_desc

Extract body for pragma form: pragma "opt1"; "opt2" body

val parse_create_array_form : Ppxlib.expression -> Ppxlib.expression -> Sarek_ast.expr_desc

Extract body for create_array form: create_array size memspace

val parse_binop_or_app_form : Ppxlib.expression -> string -> Ppxlib.expression -> Ppxlib.expression -> Sarek_ast.expr_desc

Extract body for binary operator or function application arm

val parse_let_form : Ppxlib.pattern -> Ppxlib.expression -> Ppxlib.expression -> Sarek_ast.expr_desc

Extract body for let binding arm

val is_array_access : Ppxlib.expression -> bool

Check if an expression is an array access

val parse_kernel_function : Ppxlib.expression -> Sarek_ast.kernel

Parse a function expression into a kernel

val parse_payload : Ppxlib.expression -> Sarek_ast.kernel

Parse from ppxlib payload