added mode parser;
authorwenzelm
Sat, 02 Sep 2000 21:52:33 +0200
changeset 9809 58e9d55a9f88
parent 9808 4e47e40c0ac5
child 9810 7e785df2b76a
added mode parser;
src/Pure/Isar/args.ML
--- a/src/Pure/Isar/args.ML	Sat Sep 02 21:52:15 2000 +0200
+++ b/src/Pure/Isar/args.ML	Sat Sep 02 21:52:33 2000 +0200
@@ -23,6 +23,7 @@
   val $$$ : string -> T list -> string * T list
   val colon: T list -> string * T list
   val parens: (T list -> 'a * T list) -> T list -> 'a * T list
+  val mode: string -> 'a * T list -> bool * ('a * T list)
   val name: T list -> string * T list
   val name_dummy: T list -> string option * T list
   val nat: T list -> int * T list
@@ -117,6 +118,7 @@
 
 val colon = $$$ ":";
 fun parens scan = $$$ "(" |-- scan --| $$$ ")";
+fun mode s = Scan.lift (Scan.optional (parens ($$$$ s) >> K true) false);
 
 val name = Scan.one (fn Arg (k, (x, _)) => k = Ident orelse k = String) >> val_of;
 val name_dummy = $$$ "_" >> K None || name >> Some;