src/Pure/Isar/spec_parse.ML
changeset 28083 103d9282a946
parent 27816 0dfed2f2822a
child 28084 a05ca48ef263
--- a/src/Pure/Isar/spec_parse.ML	Tue Sep 02 14:10:32 2008 +0200
+++ b/src/Pure/Isar/spec_parse.ML	Tue Sep 02 14:10:45 2008 +0200
@@ -11,34 +11,34 @@
   val attrib: OuterLex.token list -> Attrib.src * token list
   val attribs: token list -> Attrib.src list * token list
   val opt_attribs: token list -> Attrib.src list * token list
-  val thm_name: string -> token list -> (bstring * Attrib.src list) * token list
-  val opt_thm_name: string -> token list -> (bstring * Attrib.src list) * token list
-  val spec: token list -> ((bstring * Attrib.src list) * string list) * token list
-  val named_spec: token list -> ((bstring * Attrib.src list) * string list) * token list
-  val spec_name: token list -> ((bstring * string) * Attrib.src list) * token list
-  val spec_opt_name: token list -> ((bstring * string) * Attrib.src list) * token list
+  val thm_name: string -> token list -> (Name.binding * Attrib.src list) * token list
+  val opt_thm_name: string -> token list -> (Name.binding * Attrib.src list) * token list
+  val spec: token list -> ((Name.binding * Attrib.src list) * string list) * token list
+  val named_spec: token list -> ((Name.binding * Attrib.src list) * string list) * token list
+  val spec_name: token list -> ((Name.binding * string) * Attrib.src list) * token list
+  val spec_opt_name: token list -> ((Name.binding * string) * Attrib.src list) * token list
   val xthm: token list -> (Facts.ref * Attrib.src list) * token list
   val xthms1: token list -> (Facts.ref * Attrib.src list) list * token list
   val name_facts: token list ->
-    ((bstring * Attrib.src list) * (Facts.ref * Attrib.src list) list) list * token list
+    ((Name.binding * Attrib.src list) * (Facts.ref * Attrib.src list) list) list * token list
   val locale_mixfix: token list -> mixfix * token list
-  val locale_fixes: token list -> (string * string option * mixfix) list * token list
+  val locale_fixes: token list -> (Name.binding * string option * mixfix) list * token list
   val locale_insts: token list ->
-    (string option list * ((bstring * Attrib.src list) * string) list) * token list
+    (string option list * ((Name.binding * Attrib.src list) * string) list) * token list
   val class_expr: token list -> string list * token list
   val locale_expr: token list -> Locale.expr * token list
   val locale_keyword: token list -> string * token list
   val locale_element: token list -> Element.context Locale.element * token list
   val context_element: token list -> Element.context * token list
   val statement: token list ->
-    ((bstring * Attrib.src list) * (string * string list) list) list * token list
+    ((Name.binding * Attrib.src list) * (string * string list) list) list * token list
   val general_statement: token list ->
     (Element.context Locale.element list * Element.statement) * OuterLex.token list
   val statement_keyword: token list -> string * token list
   val specification: token list ->
-    (string *
-      (((bstring * Attrib.src list) * string list) list * (string * string option) list)) list *
-    token list
+    (Name.binding *
+      (((Name.binding * Attrib.src list) * string list) list *
+        (Name.binding * string option) list)) list * token list
 end;
 
 structure SpecParse: SPEC_PARSE =
@@ -54,9 +54,11 @@
 val attribs = P.$$$ "[" |-- P.list attrib --| P.$$$ "]";
 val opt_attribs = Scan.optional attribs [];
 
-fun thm_name s = P.name -- opt_attribs --| P.$$$ s;
+fun thm_name s = P.binding -- opt_attribs --| P.$$$ s;
+
 fun opt_thm_name s =
-  Scan.optional ((P.name -- opt_attribs || attribs >> pair "") --| P.$$$ s) ("", []);
+  Scan.optional ((P.binding -- opt_attribs || attribs >> pair Name.no_binding) --| P.$$$ s)
+    (Name.no_binding, []);
 
 val spec = opt_thm_name ":" -- Scan.repeat1 P.prop;
 val named_spec = thm_name ":" -- Scan.repeat1 P.prop;
@@ -79,7 +81,7 @@
 val locale_mixfix = P.$$$ "(" -- P.$$$ "structure" -- P.!!! (P.$$$ ")") >> K Structure || P.mixfix;
 
 val locale_fixes =
-  P.and_list1 (P.name -- Scan.option (P.$$$ "::" |-- P.typ) -- locale_mixfix
+  P.and_list1 (P.binding -- Scan.option (P.$$$ "::" |-- P.typ) -- locale_mixfix
     >> (single o P.triple1) ||
   P.params >> map Syntax.no_syn) >> flat;
 
@@ -134,7 +136,7 @@
 val statement = P.and_list1 (opt_thm_name ":" -- Scan.repeat1 P.propp);
 
 val obtain_case =
-  P.parname -- (Scan.optional (P.simple_fixes --| P.$$$ "where") [] --
+  P.parbinding -- (Scan.optional (P.simple_fixes --| P.$$$ "where") [] --
     (P.and_list1 (Scan.repeat1 P.prop) >> flat));
 
 val general_statement =
@@ -148,6 +150,6 @@
 
 (* specifications *)
 
-val specification = P.enum1 "|" (P.parname -- (P.and_list1 spec -- P.for_simple_fixes));
+val specification = P.enum1 "|" (P.parbinding -- (P.and_list1 spec -- P.for_simple_fixes));
 
 end;