src/Pure/Isar/value_parse.ML
author wenzelm
Fri, 13 Mar 2009 21:25:15 +0100
changeset 30513 1796b8ea88aa
parent 29458 98d749ae5edc
child 32787 4271aab3aa4a
permissions -rw-r--r--
eliminated type Args.T; pervasive types 'a parser and 'a context_parser;
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
  val comma: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    10
  val equal: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    11
  val parens: 'a parser -> 'a parser
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    12
  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
    13
  val triple: 'a parser -> 'b parser -> 'c parser -> ('a * 'b * 'c) parser
29458
98d749ae5edc export list;
wenzelm
parents: 29308
diff changeset
    14
  val list: 'a parser -> 'a list parser
29308
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
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
(* syntax utilities *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    25
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    26
fun comma p = P.$$$ "," |-- P.!!! p;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    27
fun equal p = P.$$$ "=" |-- P.!!! p;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    28
fun parens p = P.$$$ "(" |-- P.!!! (p --| P.$$$ ")");
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    29
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
(* tuples *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    32
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    33
val unit = parens (Scan.succeed ());
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    34
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
    35
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
    36
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
(* lists *)
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    39
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    40
fun list p = parens (P.enum "," p);
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    41
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
    42
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    43
end;
ddf7fad4448c added Isar/value_parse.ML: Outer syntax parsers for basic ML values.
wenzelm
parents:
diff changeset
    44