src/HOL/Import/mono_scan.ML
changeset 32960 69916a850301
parent 19093 6d584f9d2021
child 40627 becf5d5187cc
--- a/src/HOL/Import/mono_scan.ML	Sat Oct 17 01:05:59 2009 +0200
+++ b/src/HOL/Import/mono_scan.ML	Sat Oct 17 14:43:18 2009 +0200
@@ -15,13 +15,13 @@
     type 'a scanner = seq -> 'a * seq
 
     val :--      : 'a scanner * ('a -> 'b scanner)
-		   -> ('a*'b) scanner
+                   -> ('a*'b) scanner
     val --       : 'a scanner * 'b scanner -> ('a * 'b) scanner
     val >>       : 'a scanner * ('a -> 'b) -> 'b scanner
     val --|      : 'a scanner * 'b scanner -> 'a scanner
     val |--      : 'a scanner * 'b scanner -> 'b scanner
     val ^^       : string scanner * string scanner
-		   -> string scanner 
+                   -> string scanner 
     val ||       : 'a scanner * 'a scanner -> 'a scanner
     val one      : (item -> bool) -> item scanner
     val anyone   : item scanner
@@ -50,7 +50,7 @@
     val scan_nat : int scanner
 
     val this : item list -> item list scanner
-    val this_string : string -> string scanner					    
+    val this_string : string -> string scanner                                      
 
 end    
 
@@ -73,48 +73,48 @@
 
 fun (sc1 :-- sc2) toks =
     let
-	val (x,toks2) = sc1 toks
-	val (y,toks3) = sc2 x toks2
+        val (x,toks2) = sc1 toks
+        val (y,toks3) = sc2 x toks2
     in
-	((x,y),toks3)
+        ((x,y),toks3)
     end
 
 fun (sc1 -- sc2) toks =
     let
-	val (x,toks2) = sc1 toks
-	val (y,toks3) = sc2 toks2
+        val (x,toks2) = sc1 toks
+        val (y,toks3) = sc2 toks2
     in
-	((x,y),toks3)
+        ((x,y),toks3)
     end
 
 fun (sc >> f) toks =
     let
-	val (x,toks2) = sc toks
+        val (x,toks2) = sc toks
     in
-	(f x,toks2)
+        (f x,toks2)
     end
 
 fun (sc1 --| sc2) toks =
     let
-	val (x,toks2) = sc1 toks
-	val (_,toks3) = sc2 toks2
+        val (x,toks2) = sc1 toks
+        val (_,toks3) = sc2 toks2
     in
-	(x,toks3)
+        (x,toks3)
     end
 
 fun (sc1 |-- sc2) toks =
     let
-	val (_,toks2) = sc1 toks
+        val (_,toks2) = sc1 toks
     in
-	sc2 toks2
+        sc2 toks2
     end
 
 fun (sc1 ^^ sc2) toks =
     let
-	val (x,toks2) = sc1 toks
-	val (y,toks3) = sc2 toks2
+        val (x,toks2) = sc1 toks
+        val (y,toks3) = sc2 toks2
     in
-	(x^y,toks3)
+        (x^y,toks3)
     end
 
 fun (sc1 || sc2) toks =
@@ -129,22 +129,22 @@
 
 fun any p toks =
     case pull toks of
-	NONE =>  ([],toks)
+        NONE =>  ([],toks)
       | SOME(x,toks2) => if p x
-			 then
-			     let
-				 val (xs,toks3) = any p toks2
-			     in
-				 (x::xs,toks3)
-			     end
-			 else ([],toks)
+                         then
+                             let
+                                 val (xs,toks3) = any p toks2
+                             in
+                                 (x::xs,toks3)
+                             end
+                         else ([],toks)
 
 fun any1 p toks =
     let
-	val (x,toks2) = one p toks
-	val (xs,toks3) = any p toks2
+        val (x,toks2) = one p toks
+        val (xs,toks3) = any p toks2
     in
-	(x::xs,toks3)
+        (x::xs,toks3)
     end
 
 fun optional sc def =  sc || succeed def
@@ -153,16 +153,16 @@
 (*
 fun repeat sc =
     let
-	fun R toks =
-	    let
-		val (x,toks2) = sc toks
-		val (xs,toks3) = R toks2
-	    in
-		(x::xs,toks3)
-	    end
-	    handle SyntaxError => ([],toks)
+        fun R toks =
+            let
+                val (x,toks2) = sc toks
+                val (xs,toks3) = R toks2
+            in
+                (x::xs,toks3)
+            end
+            handle SyntaxError => ([],toks)
     in
-	R
+        R
     end
 *)
 
@@ -174,44 +174,44 @@
  *)
 fun repeat sc =
     let
-	fun R xs toks =
-	    case SOME (sc toks) handle SyntaxError => NONE of
-		SOME (x,toks2) => R (x::xs) toks2
-	      | NONE => (List.rev xs,toks)
+        fun R xs toks =
+            case SOME (sc toks) handle SyntaxError => NONE of
+                SOME (x,toks2) => R (x::xs) toks2
+              | NONE => (List.rev xs,toks)
     in
-	R []
+        R []
     end
 
 fun repeat1 sc toks =
     let
-	val (x,toks2) = sc toks
-	val (xs,toks3) = repeat sc toks2
+        val (x,toks2) = sc toks
+        val (xs,toks3) = repeat sc toks2
     in
-	(x::xs,toks3)
+        (x::xs,toks3)
     end
 
 fun repeat_fixed n sc =
     let
-	fun R n xs toks =
-	    if (n <= 0) then (List.rev xs, toks)
-	    else case (sc toks) of (x, toks2) => R (n-1) (x::xs) toks2
+        fun R n xs toks =
+            if (n <= 0) then (List.rev xs, toks)
+            else case (sc toks) of (x, toks2) => R (n-1) (x::xs) toks2
     in
-	R n []
+        R n []
     end
 
 fun ahead (sc:'a->'b*'a) toks = (#1 (sc toks),toks)
 
 fun unless test sc toks =
     let
-	val test_failed = (test toks;false) handle SyntaxError => true
+        val test_failed = (test toks;false) handle SyntaxError => true
     in
-	if test_failed
-	then sc toks
-	else raise SyntaxError
+        if test_failed
+        then sc toks
+        else raise SyntaxError
     end
 
 fun !! f sc toks = (sc toks
-		    handle SyntaxError => raise Fail (f toks))
+                    handle SyntaxError => raise Fail (f toks))
 
 end