src/Pure/General/markup.ML
author wenzelm
Sat, 07 Jul 2007 00:17:10 +0200
changeset 23623 939b58b527ee
child 23626 5e6c5388e836
permissions -rw-r--r--
Common markup elements.
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
    ID:         $Id$
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     3
    Author:     Makarius
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     4
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     5
Common markup elements.
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     6
*)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     7
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     8
signature MARKUP =
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
     9
sig
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    10
  type property = string * string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    11
  type T = string * property list
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    12
  val none: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    13
  val property: string * string -> T -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    14
  val nameN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    15
  val add_name: string -> T -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    16
  val posN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    17
  val add_pos: Position.T -> T -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    18
  val classN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    19
  val class: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    20
  val tyconN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    21
  val tycon: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    22
  val constN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    23
  val const: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    24
  val axiomN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    25
  val axiom: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    26
  val sortN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    27
  val sort: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    28
  val typN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    29
  val typ: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    30
  val termN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    31
  val term: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    32
  val propN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    33
  val prop: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    34
  val thmN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    35
  val thm: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    36
  val keywordN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    37
  val keyword: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    38
  val commandN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    39
  val command: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    40
end;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    41
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    42
structure Markup: MARKUP =
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    43
struct
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    44
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    45
type property = string * string;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    46
type T = string * property list;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    47
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    48
val none = ("", []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    49
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    50
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    51
(* properties *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    52
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    53
fun property x (name, xs) : T = (name, x :: xs);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    54
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    55
val nameN = "name";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    56
fun add_name x = property (nameN, x);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    57
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    58
val posN = "pos";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    59
fun add_pos x = property (posN, Position.str_of x);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    60
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    61
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    62
(* logical entities *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    63
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    64
val classN = "class";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    65
fun class name = (classN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    66
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    67
val tyconN = "tycon";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    68
fun tycon name = (tyconN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    69
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    70
val constN = "const";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    71
fun const name = (constN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    72
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    73
val axiomN = "axiom";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    74
fun axiom name = (axiomN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    75
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    76
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    77
(* inner syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    78
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    79
val sortN = "sort";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    80
val sort = (sortN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    81
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    82
val typN = "typ";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    83
val typ = (typN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    84
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    85
val termN = "term";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    86
val term = (termN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    87
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    88
val propN = "prop";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    89
val prop = (propN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    90
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    91
val thmN = "thm";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    92
val thm = (thmN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    93
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    94
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    95
(* outer syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    96
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    97
val keywordN = "keyword";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    98
fun keyword name = (keywordN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    99
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   100
val commandN = "command";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   101
fun command name = (commandN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   102
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
   103
end;