8 signature ARGS = |
8 signature ARGS = |
9 sig |
9 sig |
10 type src |
10 type src |
11 val src: (string * Token.T list) * Position.T -> src |
11 val src: (string * Token.T list) * Position.T -> src |
12 val dest_src: src -> (string * Token.T list) * Position.T |
12 val dest_src: src -> (string * Token.T list) * Position.T |
13 val pretty_src: Proof.context -> src -> Pretty.T |
13 val pretty_src: (string -> Pretty.T) -> Proof.context -> src -> Pretty.T |
14 val map_name: (string -> string) -> src -> src |
14 val map_name: (string -> string) -> src -> src |
15 val transform_values: morphism -> src -> src |
15 val transform_values: morphism -> src -> src |
16 val init_assignable: src -> src |
16 val init_assignable: src -> src |
17 val closure: src -> src |
17 val closure: src -> src |
18 val context: Proof.context context_parser |
18 val context: Proof.context context_parser |
77 datatype src = Src of (string * Token.T list) * Position.T; |
77 datatype src = Src of (string * Token.T list) * Position.T; |
78 |
78 |
79 val src = Src; |
79 val src = Src; |
80 fun dest_src (Src src) = src; |
80 fun dest_src (Src src) = src; |
81 |
81 |
82 fun pretty_src ctxt src = |
82 fun pretty_src pretty_name ctxt src = |
83 let |
83 let |
84 val prt_thm = Pretty.backquote o Display.pretty_thm ctxt; |
84 val prt_thm = Pretty.backquote o Display.pretty_thm ctxt; |
85 fun prt arg = |
85 fun prt arg = |
86 (case Token.get_value arg of |
86 (case Token.get_value arg of |
87 SOME (v as Token.Literal s) => Pretty.marks_str (Token.value_markup v, s) |
87 SOME (v as Token.Literal s) => Pretty.marks_str (Token.value_markup v, s) |
88 | SOME (Token.Text s) => Pretty.str (quote s) |
88 | SOME (Token.Text s) => Pretty.str (quote s) |
89 | SOME (Token.Typ T) => Syntax.pretty_typ ctxt T |
89 | SOME (Token.Typ T) => Syntax.pretty_typ ctxt T |
90 | SOME (Token.Term t) => Syntax.pretty_term ctxt t |
90 | SOME (Token.Term t) => Syntax.pretty_term ctxt t |
91 | SOME (Token.Fact ths) => Pretty.enclose "(" ")" (Pretty.breaks (map prt_thm ths)) |
91 | SOME (Token.Fact ths) => Pretty.enclose "(" ")" (Pretty.breaks (map prt_thm ths)) |
92 | _ => Pretty.mark_str (Token.markup arg, Token.unparse arg)); |
92 | _ => Pretty.mark_str (Token.markup arg, Token.unparse arg)); |
93 val (s, args) = #1 (dest_src src); |
93 val (name, args) = #1 (dest_src src); |
94 in Pretty.block (Pretty.breaks (Pretty.str s :: map prt args)) end; |
94 in Pretty.block (Pretty.breaks (pretty_name name :: map prt args)) end; |
95 |
95 |
96 fun map_name f (Src ((s, args), pos)) = Src ((f s, args), pos); |
96 fun map_name f (Src ((s, args), pos)) = Src ((f s, args), pos); |
97 fun map_args f (Src ((s, args), pos)) = Src ((s, map f args), pos); |
97 fun map_args f (Src ((s, args), pos)) = Src ((s, map f args), pos); |
98 |
98 |
99 |
99 |