src/Pure/Isar/args.ML
changeset 56027 25889f5c39a8
parent 56002 2028467b4df4
child 56028 422024102d9d
equal deleted inserted replaced
56026:893fe12639bc 56027:25889f5c39a8
     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