src/Pure/Syntax/syntax.ML
changeset 42224 578a51fae383
parent 42223 098c86e53153
child 42225 cf48af306290
equal deleted inserted replaced
42223:098c86e53153 42224:578a51fae383
     5 (specified by mixfix declarations).
     5 (specified by mixfix declarations).
     6 *)
     6 *)
     7 
     7 
     8 signature BASIC_SYNTAX =
     8 signature BASIC_SYNTAX =
     9 sig
     9 sig
    10   include AST0
       
    11   include SYN_TRANS0
    10   include SYN_TRANS0
    12   include MIXFIX0
    11   include MIXFIX0
    13   include PRINTER0
    12   include PRINTER0
    14 end;
    13 end;
    15 
    14 
    16 signature SYNTAX =
    15 signature SYNTAX =
    17 sig
    16 sig
    18   include AST1
       
    19   include LEXICON0
    17   include LEXICON0
    20   include SYN_EXT0
    18   include SYN_EXT0
    21   include TYPE_EXT0
    19   include TYPE_EXT0
    22   include SYN_TRANS1
    20   include SYN_TRANS1
    23   include MIXFIX1
    21   include MIXFIX1
   127     Parse_Rule of 'a * 'a |
   125     Parse_Rule of 'a * 'a |
   128     Print_Rule of 'a * 'a |
   126     Print_Rule of 'a * 'a |
   129     Parse_Print_Rule of 'a * 'a
   127     Parse_Print_Rule of 'a * 'a
   130   val map_trrule: ('a -> 'b) -> 'a trrule -> 'b trrule
   128   val map_trrule: ('a -> 'b) -> 'a trrule -> 'b trrule
   131   val is_const: syntax -> string -> bool
   129   val is_const: syntax -> string -> bool
   132   val read_rule_pattern: Proof.context -> type_context -> syntax -> string * string -> ast
   130   val read_rule_pattern: Proof.context -> type_context -> syntax -> string * string -> Ast.ast
   133   val standard_unparse_sort: {extern_class: string -> xstring} ->
   131   val standard_unparse_sort: {extern_class: string -> xstring} ->
   134     Proof.context -> syntax -> sort -> Pretty.T
   132     Proof.context -> syntax -> sort -> Pretty.T
   135   val standard_unparse_typ: {extern_class: string -> xstring, extern_type: string -> xstring} ->
   133   val standard_unparse_typ: {extern_class: string -> xstring, extern_type: string -> xstring} ->
   136     Proof.context -> syntax -> typ -> Pretty.T
   134     Proof.context -> syntax -> typ -> Pretty.T
   137   val standard_unparse_term: {structs: string list, fixes: string list} ->
   135   val standard_unparse_term: {structs: string list, fixes: string list} ->
   138     {extern_class: string -> xstring, extern_type: string -> xstring,
   136     {extern_class: string -> xstring, extern_type: string -> xstring,
   139       extern_const: string -> xstring} -> Proof.context -> syntax -> bool -> term -> Pretty.T
   137       extern_const: string -> xstring} -> Proof.context -> syntax -> bool -> term -> Pretty.T
   140   val update_trfuns:
   138   val update_trfuns:
   141     (string * ((ast list -> ast) * stamp)) list *
   139     (string * ((Ast.ast list -> Ast.ast) * stamp)) list *
   142     (string * ((term list -> term) * stamp)) list *
   140     (string * ((term list -> term) * stamp)) list *
   143     (string * ((bool -> typ -> term list -> term) * stamp)) list *
   141     (string * ((bool -> typ -> term list -> term) * stamp)) list *
   144     (string * ((ast list -> ast) * stamp)) list -> syntax -> syntax
   142     (string * ((Ast.ast list -> Ast.ast) * stamp)) list -> syntax -> syntax
   145   val update_advanced_trfuns:
   143   val update_advanced_trfuns:
   146     (string * ((Proof.context -> ast list -> ast) * stamp)) list *
   144     (string * ((Proof.context -> Ast.ast list -> Ast.ast) * stamp)) list *
   147     (string * ((Proof.context -> term list -> term) * stamp)) list *
   145     (string * ((Proof.context -> term list -> term) * stamp)) list *
   148     (string * ((Proof.context -> bool -> typ -> term list -> term) * stamp)) list *
   146     (string * ((Proof.context -> bool -> typ -> term list -> term) * stamp)) list *
   149     (string * ((Proof.context -> ast list -> ast) * stamp)) list -> syntax -> syntax
   147     (string * ((Proof.context -> Ast.ast list -> Ast.ast) * stamp)) list -> syntax -> syntax
   150   val extend_tokentrfuns: (string * string * (Proof.context -> string -> Pretty.T)) list ->
   148   val extend_tokentrfuns: (string * string * (Proof.context -> string -> Pretty.T)) list ->
   151     syntax -> syntax
   149     syntax -> syntax
   152   val update_type_gram: bool -> mode -> (string * typ * mixfix) list -> syntax -> syntax
   150   val update_type_gram: bool -> mode -> (string * typ * mixfix) list -> syntax -> syntax
   153   val update_const_gram: bool -> (string -> bool) ->
   151   val update_const_gram: bool -> (string -> bool) ->
   154     mode -> (string * typ * mixfix) list -> syntax -> syntax
   152     mode -> (string * typ * mixfix) list -> syntax -> syntax
   155   val update_trrules: ast trrule list -> syntax -> syntax
   153   val update_trrules: Ast.ast trrule list -> syntax -> syntax
   156   val remove_trrules: ast trrule list -> syntax -> syntax
   154   val remove_trrules: Ast.ast trrule list -> syntax -> syntax
   157 end;
   155 end;
   158 
   156 
   159 structure Syntax: SYNTAX =
   157 structure Syntax: SYNTAX =
   160 struct
   158 struct
   161 
   159 
   941 val update_trrules = ext_syntax Syn_Ext.syn_ext_rules o check_rules;
   939 val update_trrules = ext_syntax Syn_Ext.syn_ext_rules o check_rules;
   942 val remove_trrules = remove_syntax mode_default o Syn_Ext.syn_ext_rules o check_rules;
   940 val remove_trrules = remove_syntax mode_default o Syn_Ext.syn_ext_rules o check_rules;
   943 
   941 
   944 
   942 
   945 (*export parts of internal Syntax structures*)
   943 (*export parts of internal Syntax structures*)
   946 open Lexicon Syn_Ext Ast Parser Type_Ext Syn_Trans Mixfix Printer;
   944 open Lexicon Syn_Ext Parser Type_Ext Syn_Trans Mixfix Printer;
   947 
   945 
   948 end;
   946 end;
   949 
   947 
   950 structure Basic_Syntax: BASIC_SYNTAX = Syntax;
   948 structure Basic_Syntax: BASIC_SYNTAX = Syntax;
   951 open Basic_Syntax;
   949 open Basic_Syntax;
   952 
   950 
   953 forget_structure "Ast";
       
   954 forget_structure "Syn_Ext";
   951 forget_structure "Syn_Ext";
   955 forget_structure "Parser";
   952 forget_structure "Parser";
   956 forget_structure "Type_Ext";
   953 forget_structure "Type_Ext";
   957 forget_structure "Syn_Trans";
   954 forget_structure "Syn_Trans";
   958 forget_structure "Mixfix";
   955 forget_structure "Mixfix";