author | wenzelm |
Fri, 02 Jan 2009 15:44:32 +0100 | |
changeset 29308 | ddf7fad4448c |
child 29458 | 98d749ae5edc |
permissions | -rw-r--r-- |
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 |