@@ -1483,20 +1483,22 @@ and render_instrs env algoname depth instrs =
14831483
14841484(* Prose *)
14851485
1486- let render_atom_title env name params =
1487- (* TODO a workaround, for algorithms named label or name
1488- that are defined as LABEL_ or FRAME_ in the dsl *)
1489- let name' =
1490- match name.it with
1491- | Atom. Atom "label" -> Atom. Atom " LABEL_"
1492- | Atom. Atom "frame" -> Atom. Atom " FRAME_"
1493- | Atom. Atom s -> Atom. Atom (String. uppercase_ascii s)
1494- | _ -> name.it
1486+ let render_mixop_title env mixop params =
1487+ let head = Mixop. head mixop in
1488+ (* HARDCODE: Tweak for these instructinos *)
1489+ let mixop =
1490+ match head with
1491+ | Some atom ->
1492+ (match atom.it with
1493+ | Atom ("LABEL_" | "FRAME_" | "HANDLER_" ) -> Mixop. Atom atom
1494+ | _ -> mixop
1495+ )
1496+ | _ -> mixop
14951497 in
1496- let name = name' $$ no_region % name.note in
1497- let op = Mixop. (Seq (Atom name :: List. init (List. length params) (fun _ -> Arg () ))) in
14981498 let params = List. filter_map (fun a -> match a.it with Al.Ast. ExpA e -> Some e | _ -> None ) params in
1499- let expr = Al.Al_util. caseE (op, params) ~at: no_region ~note: Al.Al_util. no_note in
1499+ if List. length params + 1 <> List. length (Mixop. flatten mixop) then
1500+ error (match head with | Some atom -> atom.at | None -> no_region) " Failed to render prose header" ;
1501+ let expr = Al.Al_util. caseE (mixop, params) ~at: no_region ~note: Al.Al_util. no_note in
15001502 match al_to_el_expr expr with
15011503 | Some ({ it = El.Ast. ParenE exp ; _ } ) -> render_el_exp env exp
15021504 | Some exp -> render_el_exp env exp
@@ -1505,12 +1507,6 @@ let render_atom_title env name params =
15051507let render_funcname_title env fname params =
15061508 render_expr env (Al.Al_util. callE (fname, params) ~at: no_region ~note: Al.Al_util. no_note)
15071509
1508- let _render_pred env name params instrs =
1509- let title = render_atom_title env name params in
1510- title ^ " \n " ^
1511- String. make (String. length title) '.' ^ " \n " ^
1512- render_stmts env 0 instrs
1513-
15141510let render_rule env concl prems =
15151511 init_typs () ;
15161512 match prems with
@@ -1523,8 +1519,8 @@ let render_rule env concl prems =
15231519 sprintf " %s if:\n %s" sconcl sprems
15241520
15251521let render_rule_algo env name params instrs =
1526- let title = render_atom_title env name params in
1527- let rname = Al.Print. string_of_atom name in
1522+ let title = render_mixop_title env name params in
1523+ let rname = Al.Print. string_of_mixop name in
15281524 title ^ " \n " ^
15291525 String. make (String. length title) '.' ^ " \n " ^
15301526 render_instrs env rname 0 instrs
0 commit comments