src/Pure/PIDE/protocol_message.ML
author wenzelm
Sat, 19 Oct 2019 11:33:36 +0200
changeset 70907 7e3f25a0cee4
parent 59714 ae322325adbb
child 71619 e33f6e5f86b6
permissions -rw-r--r--
proper protocol_message for bootstrap proofs;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59714
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/PIDE/protocol_message.ML
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     3
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     4
Auxiliary operations on protocol messages.
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     5
*)
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     6
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     7
signature PROTOCOL_MESSAGE =
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
     8
sig
70907
7e3f25a0cee4 proper protocol_message for bootstrap proofs;
wenzelm
parents: 59714
diff changeset
     9
  val inline: string -> Properties.T -> unit
59714
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    10
  val command_positions: string -> XML.body -> XML.body
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    11
  val command_positions_yxml: string -> string -> string
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    12
end;
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    13
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    14
structure Protocol_Message: PROTOCOL_MESSAGE =
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    15
struct
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    16
70907
7e3f25a0cee4 proper protocol_message for bootstrap proofs;
wenzelm
parents: 59714
diff changeset
    17
fun inline a args =
7e3f25a0cee4 proper protocol_message for bootstrap proofs;
wenzelm
parents: 59714
diff changeset
    18
  writeln ("\f" ^ a ^ " = " ^ YXML.string_of_body (XML.Encode.properties args));
7e3f25a0cee4 proper protocol_message for bootstrap proofs;
wenzelm
parents: 59714
diff changeset
    19
7e3f25a0cee4 proper protocol_message for bootstrap proofs;
wenzelm
parents: 59714
diff changeset
    20
59714
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    21
fun command_positions id =
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    22
  let
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    23
    fun attribute (a, b) =
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    24
      if a = Markup.idN andalso b = Markup.commandN then (a, id) else (a, b);
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    25
    fun tree (XML.Elem ((a, atts), ts)) = XML.Elem ((a, map attribute atts), map tree ts)
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    26
      | tree text = text;
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    27
  in map tree end;
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    28
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    29
fun command_positions_yxml id =
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    30
  YXML.string_of_body o command_positions id o YXML.parse_body;
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    31
ae322325adbb tuned protocol -- resolve command positions in ML;
wenzelm
parents:
diff changeset
    32
end;