src/Pure/General/markup.ML
changeset 23658 d9f8aa7fe6b0
parent 23644 e28b8e8a85b6
child 23671 9e8257472c27
equal deleted inserted replaced
23657:2332c79f4dc8 23658:d9f8aa7fe6b0
     6 *)
     6 *)
     7 
     7 
     8 signature MARKUP =
     8 signature MARKUP =
     9 sig
     9 sig
    10   type property = string * string
    10   type property = string * string
       
    11   type T = string * property list
    11   val nameN: string
    12   val nameN: string
       
    13   val kindN: string
    12   val pos_lineN: string
    14   val pos_lineN: string
    13   val pos_nameN: string
    15   val pos_nameN: string
    14   type T = string * property list
       
    15   val none: T
    16   val none: T
    16   val indentN: string
    17   val indentN: string
    17   val blockN: string val block: int -> T
    18   val blockN: string val block: int -> T
    18   val breakN: string val break: int -> T
    19   val breakN: string val break: int -> T
    19   val fbreakN: string val fbreak: T
    20   val fbreakN: string val fbreak: T
    33 end;
    34 end;
    34 
    35 
    35 structure Markup: MARKUP =
    36 structure Markup: MARKUP =
    36 struct
    37 struct
    37 
    38 
    38 (* properties *)
    39 (* basic markup *)
    39 
    40 
    40 type property = string * string;
    41 type property = string * string;
    41 
       
    42 val nameN = "name";
       
    43 val pos_lineN = "pos_line";
       
    44 val pos_nameN = "pos_name";
       
    45 
       
    46 
       
    47 (* markup *)
       
    48 
       
    49 type T = string * property list;
    42 type T = string * property list;
    50 
    43 
    51 val none = ("", []);
    44 val none = ("", []);
    52 
    45 
       
    46 val nameN = "name";
       
    47 val kindN = "kind";
       
    48 val pos_lineN = "pos_line";
       
    49 val pos_nameN = "pos_name";
       
    50 
    53 fun markup kind = (kind, (kind, []): T);
    51 fun markup kind = (kind, (kind, []): T);
    54 fun markup_name kind = (kind, fn name => (kind, [(nameN, name)]): T);
    52 fun markup_string kind prop = (kind, fn s => (kind, [(prop, s)]): T);
    55 fun markup_int kind prop = (kind, fn i => (kind, [(prop, string_of_int i)]): T);
    53 fun markup_int kind prop = (kind, fn i => (kind, [(prop, string_of_int i)]): T);
    56 
    54 
    57 
    55 
    58 (* pretty printing *)
    56 (* pretty printing *)
    59 
    57 
    66 val (fbreakN, fbreak) = markup "fbreak";
    64 val (fbreakN, fbreak) = markup "fbreak";
    67 
    65 
    68 
    66 
    69 (* logical entities *)
    67 (* logical entities *)
    70 
    68 
    71 val (classN, class) = markup_name "class";
    69 val (classN, class) = markup_string "class" nameN;
    72 val (tyconN, tycon) = markup_name "tycon";
    70 val (tyconN, tycon) = markup_string "tycon" nameN;
    73 val (constN, const) = markup_name "const";
    71 val (constN, const) = markup_string "const" nameN;
    74 val (axiomN, axiom) = markup_name "axiom";
    72 val (axiomN, axiom) = markup_string "axiom" nameN;
    75 
    73 
    76 
    74 
    77 (* inner syntax *)
    75 (* inner syntax *)
    78 
    76 
    79 val (sortN, sort) = markup "sort";
    77 val (sortN, sort) = markup "sort";
    81 val (termN, term) = markup "term";
    79 val (termN, term) = markup "term";
    82 
    80 
    83 
    81 
    84 (* outer syntax *)
    82 (* outer syntax *)
    85 
    83 
    86 val (keywordN, keyword) = markup_name "keyword";
    84 val (keywordN, keyword) = markup_string "keyword" nameN;
    87 val (commandN, command) = markup_name "command";
    85 val (commandN, command) = markup_string "command" nameN;
    88 
    86 
    89 
    87 
    90 (* toplevel *)
    88 (* toplevel *)
    91 
    89 
    92 val (promptN, prompt) = markup "prompt";
    90 val (promptN, prompt) = markup "prompt";