src/Pure/Isar/args.ML
changeset 9538 3af720af9cd9
parent 9504 8168600e88a5
child 9748 67486cf2f8f6
equal deleted inserted replaced
9537:7e0ba737f98e 9538:3af720af9cd9
    23   val colon: T list -> string * T list
    23   val colon: T list -> string * T list
    24   val parens: (T list -> 'a * T list) -> T list -> 'a * T list
    24   val parens: (T list -> 'a * T list) -> T list -> 'a * T list
    25   val name: T list -> string * T list
    25   val name: T list -> string * T list
    26   val name_dummy: T list -> string option * T list
    26   val name_dummy: T list -> string option * T list
    27   val nat: T list -> int * T list
    27   val nat: T list -> int * T list
       
    28   val int: T list -> int * T list
    28   val var: T list -> indexname * T list
    29   val var: T list -> indexname * T list
    29   val enum: string -> ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    30   val enum: string -> ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    30   val enum1: string -> ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    31   val enum1: string -> ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    31   val and_list: ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    32   val and_list: ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    32   val and_list1: ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
    33   val and_list1: ('a * T list -> 'b * ('a * T list)) -> 'a * T list -> 'b list * ('a * T list)
   121   (fn Arg (Ident, (x, _)) =>
   122   (fn Arg (Ident, (x, _)) =>
   122     (case f x of Some y => Scan.succeed y | _ => Scan.fail)
   123     (case f x of Some y => Scan.succeed y | _ => Scan.fail)
   123   | _ => Scan.fail) >> #2;
   124   | _ => Scan.fail) >> #2;
   124 
   125 
   125 val nat = kind Syntax.read_nat;
   126 val nat = kind Syntax.read_nat;
       
   127 val int = Scan.optional ($$$ "-" >> K ~1) 1 -- nat >> op *;
   126 val var = kind (apsome #1 o try Term.dest_Var o Syntax.read_var);
   128 val var = kind (apsome #1 o try Term.dest_Var o Syntax.read_var);
   127 
   129 
   128 
   130 
   129 (* enumerations *)
   131 (* enumerations *)
   130 
   132