signature PARSER = sig structure P: PPC type ctx type def val createCtx: string -> string list -> ctx val parseDef: ctx -> (def * ctx) option val printDef: def -> unit end