src/Pure/Syntax/lexicon.ML
changeset 42290 b1f544c84040
parent 42264 b6c1b0c4c511
child 42476 d0bc1268ef09
--- a/src/Pure/Syntax/lexicon.ML	Fri Apr 08 15:48:14 2011 +0200
+++ b/src/Pure/Syntax/lexicon.ML	Fri Apr 08 16:34:14 2011 +0200
@@ -4,10 +4,11 @@
 Lexer for the inner Isabelle syntax (terms and types).
 *)
 
-signature LEXICON0 =
+signature LEXICON =
 sig
   val is_identifier: string -> bool
   val is_ascii_identifier: string -> bool
+  val is_xid: string -> bool
   val is_tid: string -> bool
   val scan_id: Symbol_Pos.T list -> Symbol_Pos.T list * Symbol_Pos.T list
   val scan_longid: Symbol_Pos.T list -> Symbol_Pos.T list * Symbol_Pos.T list
@@ -19,37 +20,6 @@
   val scan_bin: Symbol_Pos.T list -> Symbol_Pos.T list * Symbol_Pos.T list
   val scan_var: Symbol_Pos.T list -> Symbol_Pos.T list * Symbol_Pos.T list
   val scan_tvar: Symbol_Pos.T list -> Symbol_Pos.T list * Symbol_Pos.T list
-  val implode_xstr: string list -> string
-  val explode_xstr: string -> string list
-  val read_indexname: string -> indexname
-  val read_var: string -> term
-  val read_variable: string -> indexname option
-  val const: string -> term
-  val free: string -> term
-  val var: indexname -> term
-  val read_nat: string -> int option
-  val read_int: string -> int option
-  val read_xnum: string -> {radix: int, leading_zeros: int, value: int}
-  val read_float: string -> {mant: int, exp: int}
-  val mark_class: string -> string val unmark_class: string -> string
-  val mark_type: string -> string val unmark_type: string -> string
-  val mark_const: string -> string val unmark_const: string -> string
-  val mark_fixed: string -> string val unmark_fixed: string -> string
-  val unmark:
-   {case_class: string -> 'a,
-    case_type: string -> 'a,
-    case_const: string -> 'a,
-    case_fixed: string -> 'a,
-    case_default: string -> 'a} -> string -> 'a
-  val is_marked: string -> bool
-  val dummy_type: term
-  val fun_type: term
-end;
-
-signature LEXICON =
-sig
-  include LEXICON0
-  val is_xid: string -> bool
   datatype token_kind =
     Literal | IdentSy | LongIdentSy | VarSy | TFreeSy | TVarSy |
     NumSy | FloatSy | XNumSy | StrSy | Space | Comment | EOF
@@ -73,7 +43,32 @@
   val matching_tokens: token * token -> bool
   val valued_token: token -> bool
   val predef_term: string -> token option
+  val implode_xstr: string list -> string
+  val explode_xstr: string -> string list
   val tokenize: Scan.lexicon -> bool -> Symbol_Pos.T list -> token list
+  val read_indexname: string -> indexname
+  val const: string -> term
+  val free: string -> term
+  val var: indexname -> term
+  val read_var: string -> term
+  val read_variable: string -> indexname option
+  val read_nat: string -> int option
+  val read_int: string -> int option
+  val read_xnum: string -> {radix: int, leading_zeros: int, value: int}
+  val read_float: string -> {mant: int, exp: int}
+  val mark_class: string -> string val unmark_class: string -> string
+  val mark_type: string -> string val unmark_type: string -> string
+  val mark_const: string -> string val unmark_const: string -> string
+  val mark_fixed: string -> string val unmark_fixed: string -> string
+  val unmark:
+   {case_class: string -> 'a,
+    case_type: string -> 'a,
+    case_const: string -> 'a,
+    case_fixed: string -> 'a,
+    case_default: string -> 'a} -> string -> 'a
+  val is_marked: string -> bool
+  val dummy_type: term
+  val fun_type: term
 end;
 
 structure Lexicon: LEXICON =
@@ -352,37 +347,6 @@
   in Scan.read Symbol_Pos.stopper scan (Symbol_Pos.explode (str, Position.none)) end;
 
 
-(* logical entities *)
-
-fun marker s = (prefix s, unprefix s);
-
-val (mark_class, unmark_class) = marker "\\<^class>";
-val (mark_type, unmark_type) = marker "\\<^type>";
-val (mark_const, unmark_const) = marker "\\<^const>";
-val (mark_fixed, unmark_fixed) = marker "\\<^fixed>";
-
-fun unmark {case_class, case_type, case_const, case_fixed, case_default} s =
-  (case try unmark_class s of
-    SOME c => case_class c
-  | NONE =>
-      (case try unmark_type s of
-        SOME c => case_type c
-      | NONE =>
-          (case try unmark_const s of
-            SOME c => case_const c
-          | NONE =>
-              (case try unmark_fixed s of
-                SOME c => case_fixed c
-              | NONE => case_default s))));
-
-val is_marked =
-  unmark {case_class = K true, case_type = K true, case_const = K true,
-    case_fixed = K true, case_default = K false};
-
-val dummy_type = const (mark_type "dummy");
-val fun_type = const (mark_type "fun");
-
-
 (* read numbers *)
 
 local
@@ -456,4 +420,35 @@
     exp = length fracpart}
   end;
 
+
+(* marked logical entities *)
+
+fun marker s = (prefix s, unprefix s);
+
+val (mark_class, unmark_class) = marker "\\<^class>";
+val (mark_type, unmark_type) = marker "\\<^type>";
+val (mark_const, unmark_const) = marker "\\<^const>";
+val (mark_fixed, unmark_fixed) = marker "\\<^fixed>";
+
+fun unmark {case_class, case_type, case_const, case_fixed, case_default} s =
+  (case try unmark_class s of
+    SOME c => case_class c
+  | NONE =>
+      (case try unmark_type s of
+        SOME c => case_type c
+      | NONE =>
+          (case try unmark_const s of
+            SOME c => case_const c
+          | NONE =>
+              (case try unmark_fixed s of
+                SOME c => case_fixed c
+              | NONE => case_default s))));
+
+val is_marked =
+  unmark {case_class = K true, case_type = K true, case_const = K true,
+    case_fixed = K true, case_default = K false};
+
+val dummy_type = const (mark_type "dummy");
+val fun_type = const (mark_type "fun");
+
 end;