--- a/src/Pure/Isar/parse.ML Fri Oct 29 23:15:01 2010 +0200
+++ b/src/Pure/Isar/parse.ML Sat Oct 30 15:26:40 2010 +0200
@@ -26,6 +26,7 @@
val type_ident: string parser
val type_var: string parser
val number: string parser
+ val float_number: string parser
val string: string parser
val alt_string: string parser
val verbatim: string parser
@@ -46,6 +47,7 @@
val opt_begin: bool parser
val nat: int parser
val int: int parser
+ val real: real parser
val enum: string -> 'a parser -> 'a list parser
val enum1: string -> 'a parser -> 'a list parser
val and_list: 'a parser -> 'a list parser
@@ -168,6 +170,7 @@
val type_ident = kind Token.TypeIdent;
val type_var = kind Token.TypeVar;
val number = kind Token.Nat;
+val float_number = kind Token.Float;
val string = kind Token.String;
val alt_string = kind Token.AltString;
val verbatim = kind Token.Verbatim;
@@ -192,6 +195,7 @@
val nat = number >> (#1 o Library.read_int o Symbol.explode);
val int = Scan.optional (minus >> K ~1) 1 -- nat >> op *;
+val real = float_number >> (the o Real.fromString);
val tag_name = group "tag name" (short_ident || string);
val tags = Scan.repeat ($$$ "%" |-- !!! tag_name);