src/Pure/Isar/args.ML
changeset 9809 58e9d55a9f88
parent 9748 67486cf2f8f6
child 9901 09a142decdda
equal deleted inserted replaced
9808:4e47e40c0ac5 9809:58e9d55a9f88
    21   val position: (T list -> 'a * 'b) -> T list -> ('a * Position.T) * 'b
    21   val position: (T list -> 'a * 'b) -> T list -> ('a * Position.T) * 'b
    22   val !!! : (T list -> 'a) -> T list -> 'a
    22   val !!! : (T list -> 'a) -> T list -> 'a
    23   val $$$ : string -> T list -> string * T list
    23   val $$$ : string -> T list -> string * T list
    24   val colon: T list -> string * T list
    24   val colon: T list -> string * T list
    25   val parens: (T list -> 'a * T list) -> T list -> 'a * T list
    25   val parens: (T list -> 'a * T list) -> T list -> 'a * T list
       
    26   val mode: string -> 'a * T list -> bool * ('a * T list)
    26   val name: T list -> string * T list
    27   val name: T list -> string * T list
    27   val name_dummy: T list -> string option * T list
    28   val name_dummy: T list -> string option * T list
    28   val nat: T list -> int * T list
    29   val nat: T list -> int * T list
    29   val int: T list -> int * T list
    30   val int: T list -> int * T list
    30   val var: T list -> indexname * T list
    31   val var: T list -> indexname * T list
   115 fun $$$$ x = Scan.one (fn Arg (k, (y, _)) => (k = Ident orelse k = Keyword) andalso x = y);
   116 fun $$$$ x = Scan.one (fn Arg (k, (y, _)) => (k = Ident orelse k = Keyword) andalso x = y);
   116 fun $$$ x = $$$$ x >> val_of;
   117 fun $$$ x = $$$$ x >> val_of;
   117 
   118 
   118 val colon = $$$ ":";
   119 val colon = $$$ ":";
   119 fun parens scan = $$$ "(" |-- scan --| $$$ ")";
   120 fun parens scan = $$$ "(" |-- scan --| $$$ ")";
       
   121 fun mode s = Scan.lift (Scan.optional (parens ($$$$ s) >> K true) false);
   120 
   122 
   121 val name = Scan.one (fn Arg (k, (x, _)) => k = Ident orelse k = String) >> val_of;
   123 val name = Scan.one (fn Arg (k, (x, _)) => k = Ident orelse k = String) >> val_of;
   122 val name_dummy = $$$ "_" >> K None || name >> Some;
   124 val name_dummy = $$$ "_" >> K None || name >> Some;
   123 
   125 
   124 val keyword_symid =
   126 val keyword_symid =