src/Pure/General/markup.ML
author wenzelm
Sat, 07 Jul 2007 12:16:14 +0200
changeset 23626 5e6c5388e836
parent 23623 939b58b527ee
child 23637 f3e16ee56f32
permissions -rw-r--r--
position: line and name; tuned operations;
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
23626
5e6c5388e836 position: line and name;
wenzelm
parents: 23623
diff changeset
    15
  val pos_lineN: string
5e6c5388e836 position: line and name;
wenzelm
parents: 23623
diff changeset
    16
  val pos_nameN: string
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    17
  val classN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    18
  val class: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    19
  val tyconN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    20
  val tycon: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    21
  val constN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    22
  val const: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    23
  val axiomN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    24
  val axiom: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    25
  val sortN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    26
  val sort: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    27
  val typN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    28
  val typ: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    29
  val termN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    30
  val term: T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    31
  val keywordN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    32
  val keyword: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    33
  val commandN: string
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    34
  val command: string -> T
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    35
end;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    36
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    37
structure Markup: MARKUP =
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    38
struct
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    39
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    40
type property = string * string;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    41
type T = string * property list;
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    42
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    43
val none = ("", []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    44
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    45
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    46
(* properties *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    47
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    48
fun property x (name, xs) : T = (name, x :: xs);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    49
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    50
val nameN = "name";
23626
5e6c5388e836 position: line and name;
wenzelm
parents: 23623
diff changeset
    51
val pos_lineN = "pos_line";
5e6c5388e836 position: line and name;
wenzelm
parents: 23623
diff changeset
    52
val pos_nameN = "pos_name";
23623
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    53
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    54
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    55
(* logical entities *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    56
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    57
val classN = "class";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    58
fun class name = (classN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    59
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    60
val tyconN = "tycon";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    61
fun tycon name = (tyconN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    62
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    63
val constN = "const";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    64
fun const name = (constN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    65
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    66
val axiomN = "axiom";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    67
fun axiom name = (axiomN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    68
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    69
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    70
(* inner syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    71
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    72
val sortN = "sort";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    73
val sort = (sortN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    74
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    75
val typN = "typ";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    76
val typ = (typN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    77
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    78
val termN = "term";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    79
val term = (termN, []);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    80
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    81
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    82
(* outer syntax *)
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    83
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    84
val keywordN = "keyword";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    85
fun keyword name = (keywordN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    86
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    87
val commandN = "command";
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    88
fun command name = (commandN, [(nameN, name)]);
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    89
939b58b527ee Common markup elements.
wenzelm
parents:
diff changeset
    90
end;