src/Pure/Isar/value_parse.ML
author wenzelm
Sun, 11 Jan 2009 21:49:59 +0100
changeset 29450 ac7f67be7f1f
parent 29308 ddf7fad4448c
child 29458 98d749ae5edc
permissions -rw-r--r--
tuned categories;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29308
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/Isar/value_parse.ML
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     3
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     4
Outer syntax parsers for basic ML values.
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     5
*)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     6
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     7
signature VALUE_PARSE =
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     8
sig
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
     9
  type 'a parser = 'a OuterParse.parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    10
  val comma: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    11
  val equal: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    12
  val parens: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    13
  val pair: 'a parser -> 'b parser -> ('a * 'b) parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    14
  val triple: 'a parser -> 'b parser -> 'c parser -> ('a * 'b * 'c) parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    15
  val properties: Properties.T parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    16
end;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    17
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    18
structure ValueParse: VALUE_PARSE =
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    19
struct
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    20
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    21
structure P = OuterParse;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    22
type 'a parser = 'a P.parser;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    23
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    24
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    25
(* syntax utilities *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    26
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    27
fun comma p = P.$$$ "," |-- P.!!! p;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    28
fun equal p = P.$$$ "=" |-- P.!!! p;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    29
fun parens p = P.$$$ "(" |-- P.!!! (p --| P.$$$ ")");
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    30
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    31
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    32
(* tuples *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    33
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    34
val unit = parens (Scan.succeed ());
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    35
fun pair p1 p2 = parens (p1 -- comma p2);
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    36
fun triple p1 p2 p3 = parens (p1 -- comma p2 -- comma p3) >> P.triple1;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    37
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    38
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    39
(* lists *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    40
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    41
fun list p = parens (P.enum "," p);
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    42
val properties = list (P.string -- equal P.string);
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    43
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    44
end;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    45