keyword "end"]
| EWith (e1, (ESkip, _)) => dBox [p_exp e1, space 1, keyword "with", space 1, keyword "end"]
| EWith (e1, e2) => dBox [p_exp e1, space 1, keyword "with", p_exp e2, space 1, keyword "end"]
+ | EIf (e1, e2, e3) => dBox [keyword "if", space 1, p_exp e1,
+ space 1, keyword "then", space 1, p_exp e2,
+ space 1, keyword "else", space 1, p_exp e3]
and p_exp e = p_exp' false e
fun p_decl d =
ident name, space 1,
punct ":", space 1,
p_typ t])
+ | DEnv (name, NONE, _) => string "Unannotated env declaration!"
+ | DEnv (name, SOME t, _) => anchor ("D_" ^ name,
+ dBox [keyword "var", space 1,
+ ident name, space 1,
+ punct ":", space 1,
+ p_typ t])
| DContext name => anchor ("C_" ^ name,
dBox [keyword "context", space 1,
ident name])
space 1,
punct ":", space 1,
p_typ t]
+ | DEnv (name, NONE, _) => string "Unannotated var declaration!"
+ | DEnv (name, SOME t, _) => dBox [keyword "var", space 1,
+ link ("#D_" ^ name, ident name),
+ space 1,
+ punct ":", space 1,
+ p_typ t]
| DContext name => dBox [keyword "context", space 1,
link ("#C_" ^ name, ident name)]