--- a/src/Pure/Isar/spec_parse.ML Fri Dec 12 19:58:26 2008 +0100
+++ b/src/Pure/Isar/spec_parse.ML Sun Dec 14 15:43:04 2008 +0100
@@ -104,7 +104,7 @@
val rename = P.name -- Scan.option P.mixfix;
-val prefix = P.name --| P.$$$ ":";
+val prefix = P.name -- Scan.optional (P.$$$ "!" >> K true) false --| P.$$$ ":";
val named = P.name -- (P.$$$ "=" |-- P.term);
val position = P.maybe P.term;
val instance = P.$$$ "where" |-- P.and_list1 named >> Expression.Named ||
@@ -127,7 +127,7 @@
val locale_expression =
let
fun expr2 x = P.xname x;
- fun expr1 x = (Scan.optional prefix "" -- expr2 --
+ fun expr1 x = (Scan.optional prefix ("", false) -- expr2 --
Scan.optional instance (Expression.Named []) >> (fn ((p, l), i) => (l, (p, i)))) x;
fun expr0 x = (plus1_unless locale_keyword expr1) x;
in expr0 -- Scan.optional (P.$$$ "for" |-- P.!!! locale_fixes) [] end;