src/Pure/Syntax/syntax.ML
changeset 12073 b4401452928e
parent 11546 2b3f02227c35
child 12094 db9a3ad6e90e
equal deleted inserted replaced
12072:4281198fb8cd 12073:b4401452928e
    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