src/HOL/BNF/Tools/bnf_fp_def_sugar.ML
changeset 51787 1267c28c7bdd
parent 51781 0504e286d66d
child 51788 5fe72280a49f
equal deleted inserted replaced
51786:61ed47755088 51787:1267c28c7bdd
  1222   @{keyword "("} |-- @{keyword "defaults"} |-- Scan.repeat parse_bound_term --| @{keyword ")"};
  1222   @{keyword "("} |-- @{keyword "defaults"} |-- Scan.repeat parse_bound_term --| @{keyword ")"};
  1223 
  1223 
  1224 val parse_type_arg_constrained =
  1224 val parse_type_arg_constrained =
  1225   Parse.type_ident -- Scan.option (@{keyword "::"} |-- Parse.!!! Parse.sort)
  1225   Parse.type_ident -- Scan.option (@{keyword "::"} |-- Parse.!!! Parse.sort)
  1226 
  1226 
  1227 val parse_type_arg_named_constrained = parse_opt_binding_colon -- parse_type_arg_constrained
  1227 val parse_type_arg_named_constrained =
       
  1228   parse_opt_binding_colon Binding.empty -- parse_type_arg_constrained
  1228 
  1229 
  1229 val parse_type_args_named_constrained =
  1230 val parse_type_args_named_constrained =
  1230   parse_type_arg_constrained >> (single o pair Binding.empty) ||
  1231   parse_type_arg_constrained >> (single o pair Binding.empty) ||
  1231   @{keyword "("} |-- Parse.!!! (Parse.list1 parse_type_arg_named_constrained --| @{keyword ")"}) ||
  1232   @{keyword "("} |-- Parse.!!! (Parse.list1 parse_type_arg_named_constrained --| @{keyword ")"}) ||
  1232   Scan.succeed [];
  1233   Scan.succeed [];
  1246   @{keyword "("} |-- Scan.repeat parse_map_rel_binding --| @{keyword ")"}
  1247   @{keyword "("} |-- Scan.repeat parse_map_rel_binding --| @{keyword ")"}
  1247     >> (fn ps => fold extract_map_rel ps no_map_rel) ||
  1248     >> (fn ps => fold extract_map_rel ps no_map_rel) ||
  1248   Scan.succeed no_map_rel;
  1249   Scan.succeed no_map_rel;
  1249 
  1250 
  1250 val parse_ctr_spec =
  1251 val parse_ctr_spec =
  1251   parse_opt_binding_colon -- Parse.binding -- Scan.repeat parse_ctr_arg --
  1252   parse_opt_binding_colon smart_binding -- Parse.binding -- Scan.repeat parse_ctr_arg --
  1252   Scan.optional parse_defaults [] -- Parse.opt_mixfix;
  1253   Scan.optional parse_defaults [] -- Parse.opt_mixfix;
  1253 
  1254 
  1254 val parse_spec =
  1255 val parse_spec =
  1255   parse_type_args_named_constrained -- Parse.binding -- parse_map_rel_bindings --
  1256   parse_type_args_named_constrained -- Parse.binding -- parse_map_rel_bindings --
  1256   Parse.opt_mixfix -- (@{keyword "="} |-- Parse.enum1 "|" parse_ctr_spec);
  1257   Parse.opt_mixfix -- (@{keyword "="} |-- Parse.enum1 "|" parse_ctr_spec);