src/Pure/General/markup.ML
author blanchet
Tue, 17 Feb 2009 14:01:54 +0100
changeset 29956 62f931b257b7
parent 29522 793766d4c1b5
child 30221 14145e81a2fe
permissions -rw-r--r--
Reintroduce set_interpreter for Collect and op :. I removed them by accident when removing old code that dealt with the "set" type. Incidentally, there is still some broken "set" code in Refute that should be fixed (see TODO in refute.ML).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/General/markup.ML
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     3
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     4
Common markup elements.
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     5
*)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     6
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     7
signature MARKUP =
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     8
sig
28017
4919bd124a58 type Properties.T;
wenzelm
parents: 27969
diff changeset
     9
  type T = string * Properties.T
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
    10
  val none: T
27883
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
    11
  val is_none: T -> bool
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
    12
  val properties: (string * string) list -> T -> T
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    13
  val nameN: string
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
    14
  val name: string -> T -> T
25982
caee173104d3 added theorem group property;
wenzelm
parents: 25844
diff changeset
    15
  val groupN: string
26977
e736139b553d added theory_nameN;
wenzelm
parents: 26702
diff changeset
    16
  val theory_nameN: string
25808
c7aaa3f6f0ac added id property;
wenzelm
parents: 25552
diff changeset
    17
  val idN: string
23658
wenzelm
parents: 23644
diff changeset
    18
  val kindN: string
24777
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
    19
  val internalK: string
28017
4919bd124a58 type Properties.T;
wenzelm
parents: 27969
diff changeset
    20
  val property_internal: Properties.property
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
    21
  val lineN: string
26001
d0a133941155 added column property;
wenzelm
parents: 25982
diff changeset
    22
  val columnN: string
27794
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
    23
  val offsetN: string
27735
044901e02cc6 added end_line, end_column properties;
wenzelm
parents: 27660
diff changeset
    24
  val end_lineN: string
044901e02cc6 added end_line, end_column properties;
wenzelm
parents: 27660
diff changeset
    25
  val end_columnN: string
27794
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
    26
  val end_offsetN: string
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
    27
  val fileN: string
27748
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
    28
  val position_properties': string list
26051
43bcb30a6d97 added position_properties;
wenzelm
parents: 26001
diff changeset
    29
  val position_properties: string list
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
    30
  val positionN: string val position: T
26255
2246d8bbe89d added location;
wenzelm
parents: 26051
diff changeset
    31
  val locationN: string val location: T
23644
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
    32
  val indentN: string
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
    33
  val blockN: string val block: int -> T
23695
6c4662bb4862 Add widthN to signature
aspinall
parents: 23671
diff changeset
    34
  val widthN: string
23644
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
    35
  val breakN: string val break: int -> T
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
    36
  val fbreakN: string val fbreak: T
27828
edafacb690a3 renamed Markup.class to Markup.tclass, to avoid potential conflicts with spacial meaning in markup languages (e.g. HTML);
wenzelm
parents: 27818
diff changeset
    37
  val tclassN: string val tclass: string -> T
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    38
  val tyconN: string val tycon: string -> T
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
    39
  val fixed_declN: string val fixed_decl: string -> T
26702
a079f8f0080b added markup for fixed variables (local constants);
wenzelm
parents: 26255
diff changeset
    40
  val fixedN: string val fixed: string -> T
28113
f6e38928b77c added const_decl;
wenzelm
parents: 28077
diff changeset
    41
  val const_declN: string val const_decl: string -> T
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    42
  val constN: string val const: string -> T
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
    43
  val fact_declN: string val fact_decl: string -> T
27740
0b22524c05e2 removed axiom;
wenzelm
parents: 27735
diff changeset
    44
  val factN: string val fact: string -> T
0b22524c05e2 removed axiom;
wenzelm
parents: 27735
diff changeset
    45
  val dynamic_factN: string val dynamic_fact: string -> T
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
    46
  val local_fact_declN: string val local_fact_decl: string -> T
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
    47
  val local_factN: string val local_fact: string -> T
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    48
  val tfreeN: string val tfree: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    49
  val tvarN: string val tvar: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    50
  val freeN: string val free: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    51
  val skolemN: string val skolem: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    52
  val boundN: string val bound: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    53
  val varN: string val var: T
29318
6337d1cb2ba0 added numeral, which supercedes num, xnum, float;
wenzelm
parents: 28904
diff changeset
    54
  val numeralN: string val numeral: T
27804
f682666352c4 added literal;
wenzelm
parents: 27794
diff changeset
    55
  val literalN: string val literal: T
29318
6337d1cb2ba0 added numeral, which supercedes num, xnum, float;
wenzelm
parents: 28904
diff changeset
    56
  val inner_stringN: string val inner_string: T
27883
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
    57
  val inner_commentN: string val inner_comment: T
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    58
  val sortN: string val sort: T
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    59
  val typN: string val typ: T
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    60
  val termN: string val term: T
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
    61
  val propN: string val prop: T
27748
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
    62
  val attributeN: string val attribute: string -> T
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
    63
  val methodN: string val method: string -> T
27875
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
    64
  val ML_sourceN: string val ML_source: T
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
    65
  val doc_sourceN: string val doc_source: T
27879
wenzelm
parents: 27875
diff changeset
    66
  val antiqN: string val antiq: T
27894
a06f78f917e0 added ML_antiq, doc_antiq;
wenzelm
parents: 27883
diff changeset
    67
  val ML_antiqN: string val ML_antiq: string -> T
a06f78f917e0 added ML_antiq, doc_antiq;
wenzelm
parents: 27883
diff changeset
    68
  val doc_antiqN: string val doc_antiq: string -> T
27836
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
    69
  val keyword_declN: string val keyword_decl: string -> T
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
    70
  val command_declN: string val command_decl: string -> string -> T
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    71
  val keywordN: string val keyword: string -> T
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    72
  val commandN: string val command: string -> T
27836
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
    73
  val identN: string val ident: T
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    74
  val stringN: string val string: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    75
  val altstringN: string val altstring: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    76
  val verbatimN: string val verbatim: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    77
  val commentN: string val comment: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    78
  val controlN: string val control: T
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
    79
  val malformedN: string val malformed: T
27851
wenzelm
parents: 27836
diff changeset
    80
  val tokenN: string val token: T
27660
61fef1137a25 renamed command span markup;
wenzelm
parents: 27615
diff changeset
    81
  val command_spanN: string val command_span: string -> T
61fef1137a25 renamed command span markup;
wenzelm
parents: 27615
diff changeset
    82
  val ignored_spanN: string val ignored_span: T
27836
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
    83
  val malformed_spanN: string val malformed_span: T
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    84
  val stateN: string val state: T
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
    85
  val subgoalN: string val subgoal: T
24289
bfd59eb6e24e added sendback;
wenzelm
parents: 23922
diff changeset
    86
  val sendbackN: string val sendback: T
24555
ea220faa69e7 added hilite markup;
wenzelm
parents: 24289
diff changeset
    87
  val hiliteN: string val hilite: T
29417
779ff1187327 added running task markup;
wenzelm
parents: 29325
diff changeset
    88
  val taskN: string
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
    89
  val unprocessedN: string val unprocessed: T
29417
779ff1187327 added running task markup;
wenzelm
parents: 29325
diff changeset
    90
  val runningN: string val running: string -> T
27615
wenzelm
parents: 27606
diff changeset
    91
  val failedN: string val failed: T
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
    92
  val finishedN: string val finished: T
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
    93
  val disposedN: string val disposed: T
29488
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
    94
  val editsN: string val edits: string -> T
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
    95
  val editN: string val edit: string -> string -> T
27969
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
    96
  val pidN: string
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
    97
  val sessionN: string
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
    98
  val promptN: string val prompt: T
29325
a205acc94356 Markup.no_output;
wenzelm
parents: 29318
diff changeset
    99
  val no_output: output * output
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   100
  val default_output: T -> output * output
23786
3390bb8cf681 removed ident, space;
wenzelm
parents: 23719
diff changeset
   101
  val add_mode: string -> (T -> output * output) -> unit
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   102
  val output: T -> output * output
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   103
  val enclose: T -> output -> output
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   104
  val markup: T -> string -> string
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   105
end;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   106
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   107
structure Markup: MARKUP =
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   108
struct
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   109
23658
wenzelm
parents: 23644
diff changeset
   110
(* basic markup *)
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   111
28017
4919bd124a58 type Properties.T;
wenzelm
parents: 27969
diff changeset
   112
type T = string * Properties.T;
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   113
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   114
val none = ("", []);
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   115
27883
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
   116
fun is_none ("", _) = true
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
   117
  | is_none _ = false;
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
   118
23794
ab2edd87b912 added get_string, get_int;
wenzelm
parents: 23786
diff changeset
   119
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   120
fun properties more_props ((elem, props): T) =
28017
4919bd124a58 type Properties.T;
wenzelm
parents: 27969
diff changeset
   121
  (elem, fold_rev Properties.put more_props props);
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   122
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   123
fun markup_elem elem = (elem, (elem, []): T);
23794
ab2edd87b912 added get_string, get_int;
wenzelm
parents: 23786
diff changeset
   124
fun markup_string elem prop = (elem, fn s => (elem, [(prop, s)]): T);
ab2edd87b912 added get_string, get_int;
wenzelm
parents: 23786
diff changeset
   125
fun markup_int elem prop = (elem, fn i => (elem, [(prop, Int.toString i)]): T);
ab2edd87b912 added get_string, get_int;
wenzelm
parents: 23786
diff changeset
   126
26977
e736139b553d added theory_nameN;
wenzelm
parents: 26702
diff changeset
   127
e736139b553d added theory_nameN;
wenzelm
parents: 26702
diff changeset
   128
(* name *)
e736139b553d added theory_nameN;
wenzelm
parents: 26702
diff changeset
   129
23658
wenzelm
parents: 23644
diff changeset
   130
val nameN = "name";
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
   131
fun name a = properties [(nameN, a)];
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
   132
25982
caee173104d3 added theorem group property;
wenzelm
parents: 25844
diff changeset
   133
val groupN = "group";
26977
e736139b553d added theory_nameN;
wenzelm
parents: 26702
diff changeset
   134
val theory_nameN = "theory_name";
24777
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   135
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   136
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   137
(* kind *)
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   138
23658
wenzelm
parents: 23644
diff changeset
   139
val kindN = "kind";
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   140
24777
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   141
val internalK = "internal";
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   142
val property_internal = (kindN, internalK);
c1250851d701 added internalK, property_internal;
wenzelm
parents: 24612
diff changeset
   143
23658
wenzelm
parents: 23644
diff changeset
   144
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   145
(* position *)
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   146
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   147
val lineN = "line";
26001
d0a133941155 added column property;
wenzelm
parents: 25982
diff changeset
   148
val columnN = "column";
27794
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
   149
val offsetN = "offset";
27735
044901e02cc6 added end_line, end_column properties;
wenzelm
parents: 27660
diff changeset
   150
val end_lineN = "end_line";
044901e02cc6 added end_line, end_column properties;
wenzelm
parents: 27660
diff changeset
   151
val end_columnN = "end_column";
27794
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
   152
val end_offsetN = "end_offset";
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   153
val fileN = "file";
25816
d2a94e6a7d1e moved id to position properties;
wenzelm
parents: 25808
diff changeset
   154
val idN = "id";
23671
9e8257472c27 proper position markup;
wenzelm
parents: 23658
diff changeset
   155
27794
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
   156
val position_properties' = [end_lineN, end_columnN, end_offsetN, fileN, idN];
bdea6e17cbe3 added offset/end_offset;
wenzelm
parents: 27748
diff changeset
   157
val position_properties = [lineN, columnN, offsetN] @ position_properties';
27748
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
   158
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   159
val (positionN, position) = markup_elem "position";
26255
2246d8bbe89d added location;
wenzelm
parents: 26051
diff changeset
   160
val (locationN, location) = markup_elem "location";
2246d8bbe89d added location;
wenzelm
parents: 26051
diff changeset
   161
23644
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   162
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   163
(* pretty printing *)
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   164
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   165
val indentN = "indent";
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   166
val (blockN, block) = markup_int "block" indentN;
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   167
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   168
val widthN = "width";
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   169
val (breakN, break) = markup_int "break" widthN;
e28b8e8a85b6 added markup for pretty printing;
wenzelm
parents: 23642
diff changeset
   170
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   171
val (fbreakN, fbreak) = markup_elem "fbreak";
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   172
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   173
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   174
(* logical entities *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   175
27828
edafacb690a3 renamed Markup.class to Markup.tclass, to avoid potential conflicts with spacial meaning in markup languages (e.g. HTML);
wenzelm
parents: 27818
diff changeset
   176
val (tclassN, tclass) = markup_string "tclass" nameN;
23658
wenzelm
parents: 23644
diff changeset
   177
val (tyconN, tycon) = markup_string "tycon" nameN;
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
   178
val (fixed_declN, fixed_decl) = markup_string "fixed_decl" nameN;
26702
a079f8f0080b added markup for fixed variables (local constants);
wenzelm
parents: 26255
diff changeset
   179
val (fixedN, fixed) = markup_string "fixed" nameN;
28113
f6e38928b77c added const_decl;
wenzelm
parents: 28077
diff changeset
   180
val (const_declN, const_decl) = markup_string "const_decl" nameN;
23658
wenzelm
parents: 23644
diff changeset
   181
val (constN, const) = markup_string "const" nameN;
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
   182
val (fact_declN, fact_decl) = markup_string "fact_decl" nameN;
27740
0b22524c05e2 removed axiom;
wenzelm
parents: 27735
diff changeset
   183
val (factN, fact) = markup_string "fact" nameN;
0b22524c05e2 removed axiom;
wenzelm
parents: 27735
diff changeset
   184
val (dynamic_factN, dynamic_fact) = markup_string "dynamic_fact" nameN;
28077
d6102a4fcfce added fixed_decl, fact_decl, local_fact_decl;
wenzelm
parents: 28031
diff changeset
   185
val (local_fact_declN, local_fact_decl) = markup_string "local_fact_decl" nameN;
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
   186
val (local_factN, local_fact) = markup_string "local_fact" nameN;
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   187
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   188
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   189
(* inner syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   190
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   191
val (tfreeN, tfree) = markup_elem "tfree";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   192
val (tvarN, tvar) = markup_elem "tvar";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   193
val (freeN, free) = markup_elem "free";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   194
val (skolemN, skolem) = markup_elem "skolem";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   195
val (boundN, bound) = markup_elem "bound";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   196
val (varN, var) = markup_elem "var";
29318
6337d1cb2ba0 added numeral, which supercedes num, xnum, float;
wenzelm
parents: 28904
diff changeset
   197
val (numeralN, numeral) = markup_elem "numeral";
27804
f682666352c4 added literal;
wenzelm
parents: 27794
diff changeset
   198
val (literalN, literal) = markup_elem "literal";
29318
6337d1cb2ba0 added numeral, which supercedes num, xnum, float;
wenzelm
parents: 28904
diff changeset
   199
val (inner_stringN, inner_string) = markup_elem "inner_string";
27883
e506f0c6d3f0 added is_none;
wenzelm
parents: 27879
diff changeset
   200
val (inner_commentN, inner_comment) = markup_elem "inner_comment";
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   201
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   202
val (sortN, sort) = markup_elem "sort";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   203
val (typN, typ) = markup_elem "typ";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   204
val (termN, term) = markup_elem "term";
27818
74087a19879f added name property operation;
wenzelm
parents: 27804
diff changeset
   205
val (propN, prop) = markup_elem "prop";
27748
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
   206
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
   207
val (attributeN, attribute) = markup_string "attribute" nameN;
c421ee0d2350 added position_properties';
wenzelm
parents: 27743
diff changeset
   208
val (methodN, method) = markup_string "method" nameN;
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   209
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   210
27875
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   211
(* embedded source text *)
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   212
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   213
val (ML_sourceN, ML_source) = markup_elem "ML_source";
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   214
val (doc_sourceN, doc_source) = markup_elem "doc_source";
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   215
27879
wenzelm
parents: 27875
diff changeset
   216
val (antiqN, antiq) = markup_elem "antiq";
27894
a06f78f917e0 added ML_antiq, doc_antiq;
wenzelm
parents: 27883
diff changeset
   217
val (ML_antiqN, ML_antiq) = markup_string "ML_antiq" nameN;
a06f78f917e0 added ML_antiq, doc_antiq;
wenzelm
parents: 27883
diff changeset
   218
val (doc_antiqN, doc_antiq) = markup_string "doc_antiq" nameN;
27879
wenzelm
parents: 27875
diff changeset
   219
27875
1b46d9ec3788 added ML_source, doc_source;
wenzelm
parents: 27851
diff changeset
   220
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   221
(* outer syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   222
24870
9d057ff8e74c added keyword_decl, command_decl;
wenzelm
parents: 24777
diff changeset
   223
val (keyword_declN, keyword_decl) = markup_string "keyword_decl" nameN;
9d057ff8e74c added keyword_decl, command_decl;
wenzelm
parents: 24777
diff changeset
   224
9d057ff8e74c added keyword_decl, command_decl;
wenzelm
parents: 24777
diff changeset
   225
val command_declN = "command_decl";
9d057ff8e74c added keyword_decl, command_decl;
wenzelm
parents: 24777
diff changeset
   226
fun command_decl name kind : T = (command_declN, [(nameN, name), (kindN, kind)]);
9d057ff8e74c added keyword_decl, command_decl;
wenzelm
parents: 24777
diff changeset
   227
27836
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
   228
val (keywordN, keyword) = markup_string "keyword" nameN;
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
   229
val (commandN, command) = markup_string "command" nameN;
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
   230
val (identN, ident) = markup_elem "ident";
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   231
val (stringN, string) = markup_elem "string";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   232
val (altstringN, altstring) = markup_elem "altstring";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   233
val (verbatimN, verbatim) = markup_elem "verbatim";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   234
val (commentN, comment) = markup_elem "comment";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   235
val (controlN, control) = markup_elem "control";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   236
val (malformedN, malformed) = markup_elem "malformed";
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   237
27851
wenzelm
parents: 27836
diff changeset
   238
val (tokenN, token) = markup_elem "token";
wenzelm
parents: 27836
diff changeset
   239
27660
61fef1137a25 renamed command span markup;
wenzelm
parents: 27615
diff changeset
   240
val (command_spanN, command_span) = markup_string "command_span" nameN;
61fef1137a25 renamed command span markup;
wenzelm
parents: 27615
diff changeset
   241
val (ignored_spanN, ignored_span) = markup_elem "ignored_span";
27836
74e8228757c5 renamed unknown_span to malformed_span;
wenzelm
parents: 27828
diff changeset
   242
val (malformed_spanN, malformed_span) = markup_elem "malformed_span";
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   243
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   244
23637
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   245
(* toplevel *)
f3e16ee56f32 added toplevel markup;
wenzelm
parents: 23626
diff changeset
   246
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   247
val (stateN, state) = markup_elem "state";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   248
val (subgoalN, subgoal) = markup_elem "subgoal";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   249
val (sendbackN, sendback) = markup_elem "sendback";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   250
val (hiliteN, hilite) = markup_elem "hilite";
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   251
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   252
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   253
(* command status *)
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   254
29417
779ff1187327 added running task markup;
wenzelm
parents: 29325
diff changeset
   255
val taskN = "task";
779ff1187327 added running task markup;
wenzelm
parents: 29325
diff changeset
   256
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   257
val (unprocessedN, unprocessed) = markup_elem "unprocessed";
29417
779ff1187327 added running task markup;
wenzelm
parents: 29325
diff changeset
   258
val (runningN, running) = markup_string "running" taskN;
27615
wenzelm
parents: 27606
diff changeset
   259
val (failedN, failed) = markup_elem "failed";
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   260
val (finishedN, finished) = markup_elem "finished";
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   261
val (disposedN, disposed) = markup_elem "disposed";
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   262
29488
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   263
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   264
(* interactive documents *)
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   265
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   266
val (editsN, edits) = markup_string "edits" idN;
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   267
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   268
val editN = "edit";
8fc3aeece219 replaced command_state by edits/edit;
wenzelm
parents: 29482
diff changeset
   269
fun edit id state_id : T = (editN, [(idN, id), (stateN, state_id)]);
29482
fe044b49e34f added command_state markup;
wenzelm
parents: 29417
diff changeset
   270
27606
82399f3a8ca8 support for command status;
wenzelm
parents: 27523
diff changeset
   271
27969
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   272
(* messages *)
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   273
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   274
val pidN = "pid";
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   275
val sessionN = "session";
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   276
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   277
val (promptN, prompt) = markup_elem "prompt";
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   278
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   279
46d7057b8614 added messages and process information;
wenzelm
parents: 27894
diff changeset
   280
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   281
(* print mode operations *)
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   282
29325
a205acc94356 Markup.no_output;
wenzelm
parents: 29318
diff changeset
   283
val no_output = ("", "");
a205acc94356 Markup.no_output;
wenzelm
parents: 29318
diff changeset
   284
fun default_output (_: T) = no_output;
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   285
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   286
local
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   287
  val default = {output = default_output};
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   288
  val modes = ref (Symtab.make [("", default)]);
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   289
in
23922
707639e9497d marked some CRITICAL sections (for multithreading);
wenzelm
parents: 23794
diff changeset
   290
  fun add_mode name output = CRITICAL (fn () =>
707639e9497d marked some CRITICAL sections (for multithreading);
wenzelm
parents: 23794
diff changeset
   291
    change modes (Symtab.update_new (name, {output = output})));
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   292
  fun get_mode () =
24612
d1b315bdb8d7 avoid direct access to print_mode;
wenzelm
parents: 24555
diff changeset
   293
    the_default default (Library.get_first (Symtab.lookup (! modes)) (print_mode_value ()));
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   294
end;
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   295
29325
a205acc94356 Markup.no_output;
wenzelm
parents: 29318
diff changeset
   296
fun output m = if is_none m then no_output else #output (get_mode ()) m;
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   297
23719
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   298
val enclose = output #-> Library.enclose;
ccd9cb15c062 more markup for inner and outer syntax;
wenzelm
parents: 23704
diff changeset
   299
25552
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   300
fun markup m =
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   301
  let val (bg, en) = output m
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   302
  in Library.enclose (Output.escape bg) (Output.escape en) end;
e4d465bc5b35 added channels;
wenzelm
parents: 24870
diff changeset
   303
23704
18d6ee425689 added print_mode setup (from pretty.ML);
wenzelm
parents: 23695
diff changeset
   304
end;