26 datatype 'a trrule = |
26 datatype 'a trrule = |
27 ParseRule of 'a * 'a | |
27 ParseRule of 'a * 'a | |
28 PrintRule of 'a * 'a | |
28 PrintRule of 'a * 'a | |
29 ParsePrintRule of 'a * 'a |
29 ParsePrintRule of 'a * 'a |
30 type syntax |
30 type syntax |
31 val extend_log_types: syntax -> string list -> syntax |
31 val extend_log_types: string list -> syntax -> syntax |
32 val extend_type_gram: syntax -> (string * int * mixfix) list -> syntax |
32 val extend_type_gram: (string * int * mixfix) list -> syntax -> syntax |
33 val extend_const_gram: syntax -> string * bool -> (string * typ * mixfix) list -> syntax |
33 val extend_const_gram: string * bool -> (string * typ * mixfix) list -> syntax -> syntax |
34 val extend_consts: syntax -> string list -> syntax |
34 val extend_consts: string list -> syntax -> syntax |
35 val extend_trfuns: syntax -> |
35 val extend_trfuns: |
36 (string * (ast list -> ast)) list * |
36 (string * (ast list -> ast)) list * |
37 (string * (term list -> term)) list * |
37 (string * (term list -> term)) list * |
38 (string * (term list -> term)) list * |
38 (string * (term list -> term)) list * |
39 (string * (ast list -> ast)) list -> syntax |
39 (string * (ast list -> ast)) list -> syntax -> syntax |
40 val extend_trfunsT: syntax -> (string * (bool -> typ -> term list -> term)) list -> syntax |
40 val extend_trfunsT: (string * (bool -> typ -> term list -> term)) list -> syntax -> syntax |
41 val extend_tokentrfuns: syntax -> (string * string * (string -> string * real)) list -> syntax |
41 val extend_tokentrfuns: (string * string * (string -> string * real)) list -> syntax -> syntax |
42 val extend_trrules: syntax -> (string * string) trrule list -> syntax |
42 val extend_trrules: (string * string) trrule list -> syntax -> syntax |
43 val extend_trrules_i: syntax -> ast trrule list -> syntax |
43 val extend_trrules_i: ast trrule list -> syntax -> syntax |
44 val map_trrule: ('a -> 'b) -> 'a trrule -> 'b trrule |
44 val map_trrule: ('a -> 'b) -> 'a trrule -> 'b trrule |
45 val merge_syntaxes: syntax -> syntax -> syntax |
45 val merge_syntaxes: syntax -> syntax -> syntax |
46 val type_syn: syntax |
46 val type_syn: syntax |
47 val pure_syn: syntax |
47 val pure_syn: syntax |
48 val print_gram: syntax -> unit |
48 val print_gram: syntax -> unit |
472 |
472 |
473 |
473 |
474 |
474 |
475 (** extend syntax (external interfaces) **) |
475 (** extend syntax (external interfaces) **) |
476 |
476 |
477 fun ext_syntax mk_syn_ext prmode (syn as Syntax {logtypes, ...}) decls = |
477 fun ext_syntax mk_syn_ext prmode decls (syn as Syntax {logtypes, ...}) = |
478 extend_syntax prmode syn (mk_syn_ext logtypes decls); |
478 extend_syntax prmode syn (mk_syn_ext logtypes decls); |
479 |
479 |
480 |
480 |
481 fun extend_log_types syn logtypes = |
481 fun extend_log_types logtypes syn = |
482 extend_syntax ("", true) syn (SynExt.syn_ext_logtypes logtypes); |
482 extend_syntax ("", true) syn (SynExt.syn_ext_logtypes logtypes); |
483 |
483 |
484 val extend_type_gram = ext_syntax Mixfix.syn_ext_types ("", true); |
484 val extend_type_gram = ext_syntax Mixfix.syn_ext_types ("", true); |
485 |
485 |
486 fun extend_const_gram syn prmode = ext_syntax Mixfix.syn_ext_consts prmode syn; |
486 fun extend_const_gram prmode = ext_syntax Mixfix.syn_ext_consts prmode; |
487 |
487 |
488 val extend_consts = ext_syntax SynExt.syn_ext_const_names ("", true); |
488 val extend_consts = ext_syntax SynExt.syn_ext_const_names ("", true); |
489 |
489 |
490 val extend_trfuns = ext_syntax SynExt.syn_ext_trfuns ("", true); |
490 val extend_trfuns = ext_syntax SynExt.syn_ext_trfuns ("", true); |
491 |
491 |
492 val extend_trfunsT = ext_syntax SynExt.syn_ext_trfunsT ("", true); |
492 val extend_trfunsT = ext_syntax SynExt.syn_ext_trfunsT ("", true); |
493 |
493 |
494 val extend_tokentrfuns = ext_syntax SynExt.syn_ext_tokentrfuns ("", true); |
494 val extend_tokentrfuns = ext_syntax SynExt.syn_ext_tokentrfuns ("", true); |
495 |
495 |
496 fun extend_trrules syn rules = |
496 fun extend_trrules rules syn = |
497 ext_syntax SynExt.syn_ext_rules ("", true) syn (prep_rules (read_pattern syn) rules); |
497 ext_syntax SynExt.syn_ext_rules ("", true) (prep_rules (read_pattern syn) rules) syn; |
498 |
498 |
499 fun extend_trrules_i syn rules = |
499 fun extend_trrules_i rules = ext_syntax SynExt.syn_ext_rules ("", true) (prep_rules I rules); |
500 ext_syntax SynExt.syn_ext_rules ("", true) syn (prep_rules I rules); |
|
501 |
500 |
502 |
501 |
503 |
502 |
504 (** export parts of internal Syntax structures **) |
503 (** export parts of internal Syntax structures **) |
505 |
504 |