Module Sarek_ppx_lib.Sarek_parse

val loc_of_ppxlib : Ppxlib.Location.t -> Sarek_ast.loc

Convert ppxlib location to Sarek location

exception Parse_error_exn of string * Ppxlib.Location.t

Parse exception

val loc_to_sloc : Ppxlib.Location.t -> Sarek_ast.loc
val parse_type : Ppxlib.core_type -> Sarek_ast.type_expr

Parse a core_type to type_expr

val parse_record_fields : Ppxlib.label_declaration list -> (string * bool * Sarek_ast.type_expr) list
val parse_variant_constructors : Ppxlib.constructor_declaration list -> (string * Sarek_ast.type_expr option) list
val extract_type_from_pattern : Ppxlib.pattern -> Sarek_ast.type_expr option

Extract type annotation from a Ppxlib pattern if present

val extract_name_from_pattern : Ppxlib.pattern -> string option

Extract variable name from a Ppxlib pattern

val extract_param_from_pattern : Ppxlib.pattern -> Sarek_ast.param

Extract parameter from pparam_desc

val parse_pattern : Ppxlib.pattern -> Sarek_ast.pattern

Parse a Ppxlib pattern to Sarek pattern

val parse_binop : string -> Sarek_ast.binop option

Parse a binary operator

val parse_unop : string -> Sarek_ast.unop option

Parse a unary operator

type fun_body =
  1. | Pfunction_body of Ppxlib.expression
  2. | Pfunction_cases of Ppxlib.case list * Ppxlib.Location.t * Ppxlib.attributes
val pattern_of_param : Ppxlib.Parsetree.function_param -> Ppxlib.pattern
val collect_fun_params : Ppxlib.expression -> Ppxlib.function_param list * fun_body option
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 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