tuned usage of read;
authorwenzelm
Mon, 16 Nov 1998 10:40:23 +0100
changeset 5868 0022d0a913b5
parent 5867 1c4806b4bf43
child 5869 b279a84ac11c
tuned usage of read;
src/Pure/Syntax/lexicon.ML
--- a/src/Pure/Syntax/lexicon.ML	Mon Nov 16 10:39:30 1998 +0100
+++ b/src/Pure/Syntax/lexicon.ML	Mon Nov 16 10:40:23 1998 +0100
@@ -241,7 +241,9 @@
 fun implode_xstr cs = enclose "''" "''" (implode (map (fn "'" => "\\'" | c => c) cs));
 
 fun explode_xstr str =
-  #1 (Scan.error (Scan.finite Symbol.stopper scan_str) (Symbol.explode str));
+  (case Scan.read Symbol.stopper scan_str (Symbol.explode str) of
+    Some cs => cs
+  | _ => error ("Inner lexical error: literal string expected at " ^ quote str));
 
 
 
@@ -257,7 +259,7 @@
       scan_tvar >> pair TVarSy ||
       scan_var >> pair VarSy ||
       scan_tid >> pair TFreeSy ||
-      $$ "#" ^^ scan_int >> pair NumSy ||		(* FIXME remove "#" *)
+      $$ "#" ^^ scan_int >> pair NumSy ||
       scan_longid >> pair LongIdentSy ||
       scan_xid >> pair IdentSy;
 
@@ -302,8 +304,8 @@
 (* indexname *)
 
 fun indexname cs =
-  (case Scan.error (Scan.finite Symbol.stopper (Scan.option scan_vname)) cs of
-    (Some xi, []) => xi
+  (case Scan.read Symbol.stopper scan_vname cs of
+    Some xi => xi
   | _ => error ("Lexical error in variable name: " ^ quote (implode cs)));
 
 
@@ -321,9 +323,7 @@
       $$ "?" |-- $$ "'" |-- scan_vname >> tvar ||
       $$ "?" |-- scan_vname >> var ||
       Scan.any Symbol.not_eof >> (free o implode);
-  in
-    #1 (Scan.error (Scan.finite Symbol.stopper scan) (Symbol.explode str))
-  end;
+  in the (Scan.read Symbol.stopper scan (Symbol.explode str)) end;
 
 
 (* variable kinds *)
@@ -338,9 +338,7 @@
 (* read_nat *)
 
 fun read_nat str =
-  (case Scan.finite Symbol.stopper (Scan.option scan_digits1) (Symbol.explode str) of
-    (Some cs, []) => Some (#1 (Term.read_int cs))
-  | _ => None);
+  apsome (#1 o Term.read_int) (Scan.read Symbol.stopper scan_digits1 (Symbol.explode str));
 
 
 end;