src/Pure/Syntax/syn_ext.ML
changeset 2382 e7c2bce815ba
parent 2364 821f44a0abba
child 2694 b98365c6e869
     1.1 --- a/src/Pure/Syntax/syn_ext.ML	Fri Dec 13 17:29:22 1996 +0100
     1.2 +++ b/src/Pure/Syntax/syn_ext.ML	Fri Dec 13 17:30:28 1996 +0100
     1.3 @@ -38,25 +38,27 @@
     1.4        parse_ast_translation: (string * (Ast.ast list -> Ast.ast)) list,
     1.5        parse_rules: (Ast.ast * Ast.ast) list,
     1.6        parse_translation: (string * (term list -> term)) list,
     1.7 -      print_translation: (string * (term list -> term)) list,
     1.8 +      print_translation: (string * (typ -> term list -> term)) list,
     1.9        print_rules: (Ast.ast * Ast.ast) list,
    1.10        print_ast_translation: (string * (Ast.ast list -> Ast.ast)) list}
    1.11    val mk_syn_ext: bool -> string list -> mfix list ->
    1.12      string list -> (string * (Ast.ast list -> Ast.ast)) list *
    1.13      (string * (term list -> term)) list *
    1.14 -    (string * (term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    1.15 +    (string * (typ -> term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    1.16      -> (Ast.ast * Ast.ast) list * (Ast.ast * Ast.ast) list -> syn_ext
    1.17    val syn_ext: string list -> mfix list -> string list ->
    1.18      (string * (Ast.ast list -> Ast.ast)) list * (string * (term list -> term)) list *
    1.19 -    (string * (term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    1.20 +    (string * (typ -> term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    1.21      -> (Ast.ast * Ast.ast) list * (Ast.ast * Ast.ast) list -> syn_ext
    1.22    val syn_ext_logtypes: string list -> syn_ext
    1.23    val syn_ext_const_names: string list -> string list -> syn_ext
    1.24    val syn_ext_rules: string list -> (Ast.ast * Ast.ast) list * (Ast.ast * Ast.ast) list -> syn_ext
    1.25 +  val fix_tr': (term list -> term) -> typ -> term list -> term
    1.26    val syn_ext_trfuns: string list ->
    1.27      (string * (Ast.ast list -> Ast.ast)) list * (string * (term list -> term)) list *
    1.28      (string * (term list -> term)) list * (string * (Ast.ast list -> Ast.ast)) list
    1.29      -> syn_ext
    1.30 +  val syn_ext_trfunsT: string list -> (string * (typ -> term list -> term)) list -> syn_ext
    1.31    val pure_ext: syn_ext
    1.32    end;
    1.33  
    1.34 @@ -281,7 +283,7 @@
    1.35      parse_ast_translation: (string * (Ast.ast list -> Ast.ast)) list,
    1.36      parse_rules: (Ast.ast * Ast.ast) list,
    1.37      parse_translation: (string * (term list -> term)) list,
    1.38 -    print_translation: (string * (term list -> term)) list,
    1.39 +    print_translation: (string * (typ -> term list -> term)) list,
    1.40      print_rules: (Ast.ast * Ast.ast) list,
    1.41      print_ast_translation: (string * (Ast.ast list -> Ast.ast)) list};
    1.42  
    1.43 @@ -310,6 +312,7 @@
    1.44        print_ast_translation = print_ast_translation}
    1.45    end;
    1.46  
    1.47 +
    1.48  val syn_ext = mk_syn_ext true;
    1.49  
    1.50  fun syn_ext_logtypes logtypes =
    1.51 @@ -321,8 +324,14 @@
    1.52  fun syn_ext_rules logtypes rules =
    1.53    syn_ext logtypes [] [] ([], [], [], []) rules;
    1.54  
    1.55 -fun syn_ext_trfuns logtypes trfuns =
    1.56 -  syn_ext logtypes [] [] trfuns ([], []);
    1.57 +fun fix_tr' f _ args = f args;
    1.58 +
    1.59 +fun syn_ext_trfuns logtypes (atrs, trs, tr's, atr's) =
    1.60 +  syn_ext logtypes [] [] (atrs, trs, map (apsnd fix_tr') tr's, atr's) ([], []);
    1.61 +
    1.62 +fun syn_ext_trfunsT logtypes tr's =
    1.63 +  syn_ext logtypes [] [] ([], [], tr's, []) ([], []);
    1.64 +
    1.65  
    1.66  (* pure_ext *)
    1.67