src/Pure/Isar/parse.ML
changeset 63285 e9c777bfd78c
parent 63230 ae5275fa96dc
child 63672 5a7c919a4ada
equal deleted inserted replaced
63284:c20946f5b6fb 63285:e9c777bfd78c
    86   val syntax_mode: Syntax.mode parser
    86   val syntax_mode: Syntax.mode parser
    87   val where_: string parser
    87   val where_: string parser
    88   val const_decl: (string * string * mixfix) parser
    88   val const_decl: (string * string * mixfix) parser
    89   val const_binding: (binding * string * mixfix) parser
    89   val const_binding: (binding * string * mixfix) parser
    90   val params: (binding * string option * mixfix) list parser
    90   val params: (binding * string option * mixfix) list parser
    91   val fixes: (binding * string option * mixfix) list parser
    91   val vars: (binding * string option * mixfix) list parser
    92   val for_fixes: (binding * string option * mixfix) list parser
    92   val for_fixes: (binding * string option * mixfix) list parser
    93   val ML_source: Input.source parser
    93   val ML_source: Input.source parser
    94   val document_source: Input.source parser
    94   val document_source: Input.source parser
    95   val const: string parser
    95   val const: string parser
    96   val term: string parser
    96   val term: string parser
   372 val params =
   372 val params =
   373   (binding -- Scan.repeat binding) -- Scan.option ($$$ "::" |-- !!! (Scan.ahead typ -- embedded))
   373   (binding -- Scan.repeat binding) -- Scan.option ($$$ "::" |-- !!! (Scan.ahead typ -- embedded))
   374     >> (fn ((x, ys), T) =>
   374     >> (fn ((x, ys), T) =>
   375         (x, Option.map #1 T, NoSyn) :: map (fn y => (y, Option.map #2 T, NoSyn)) ys);
   375         (x, Option.map #1 T, NoSyn) :: map (fn y => (y, Option.map #2 T, NoSyn)) ys);
   376 
   376 
   377 val fixes = and_list1 (param_mixfix || params) >> flat;
   377 val vars = and_list1 (param_mixfix || params) >> flat;
   378 val for_fixes = Scan.optional ($$$ "for" |-- !!! fixes) [];
   378 
       
   379 val for_fixes = Scan.optional ($$$ "for" |-- !!! vars) [];
   379 
   380 
   380 
   381 
   381 (* embedded source text *)
   382 (* embedded source text *)
   382 
   383 
   383 val ML_source = input (group (fn () => "ML source") text);
   384 val ML_source = input (group (fn () => "ML source") text);