src/Pure/Syntax/syntax.ML
changeset 4887 bbc13af86c16
parent 4703 a50ab39756db
child 5692 2e873c5f0e2c
equal deleted inserted replaced
4886:31f23b8d6851 4887:bbc13af86c16
    45   val type_syn: syntax
    45   val type_syn: syntax
    46   val pure_syn: syntax
    46   val pure_syn: syntax
    47   val print_gram: syntax -> unit
    47   val print_gram: syntax -> unit
    48   val print_trans: syntax -> unit
    48   val print_trans: syntax -> unit
    49   val print_syntax: syntax -> unit
    49   val print_syntax: syntax -> unit
       
    50   val trfun_names: syntax -> string list * string list * string list * string list
    50   val test_read: syntax -> string -> string -> unit
    51   val test_read: syntax -> string -> string -> unit
    51   val read: syntax -> typ -> string -> term list
    52   val read: syntax -> typ -> string -> term list
    52   val read_typ: syntax -> ((indexname * sort) list -> indexname -> sort) -> string -> typ
    53   val read_typ: syntax -> ((indexname * sort) list -> indexname -> sort) -> string -> typ
    53   val simple_read_typ: string -> typ
    54   val simple_read_typ: string -> typ
    54   val pretty_term: syntax -> bool -> term -> Pretty.T
    55   val pretty_term: syntax -> bool -> term -> Pretty.T
    69 (** tables of translation functions **)
    70 (** tables of translation functions **)
    70 
    71 
    71 (*does not subsume typed print translations*)
    72 (*does not subsume typed print translations*)
    72 type 'a trtab = (('a list -> 'a) * stamp) Symtab.table;
    73 type 'a trtab = (('a list -> 'a) * stamp) Symtab.table;
    73 
    74 
    74 val dest_trtab = Symtab.dest;
    75 fun dest_trtab tab = map fst (Symtab.dest tab);
    75 
    76 
    76 fun lookup_trtab tab c =
    77 fun lookup_trtab tab c =
    77   apsome fst (Symtab.lookup (tab, c));
    78   apsome fst (Symtab.lookup (tab, c));
    78 
    79 
    79 
    80 
   267   extend_syntax ("", true) empty_syntax type_ext;
   268   extend_syntax ("", true) empty_syntax type_ext;
   268 
   269 
   269 val pure_syn = extend_syntax ("", true) type_syn pure_ext;
   270 val pure_syn = extend_syntax ("", true) type_syn pure_ext;
   270 
   271 
   271 
   272 
       
   273 
   272 (** inspect syntax **)
   274 (** inspect syntax **)
   273 
   275 
   274 fun pretty_strs_qs name strs =
   276 fun pretty_strs_qs name strs =
   275   Pretty.strs (name :: map quote (sort_strings strs));
   277   Pretty.strs (name :: map quote (sort_strings strs));
   276 
   278 
   292 (* print_trans *)
   294 (* print_trans *)
   293 
   295 
   294 fun print_trans (Syntax tabs) =
   296 fun print_trans (Syntax tabs) =
   295   let
   297   let
   296     fun pretty_trtab name tab =
   298     fun pretty_trtab name tab =
   297       pretty_strs_qs name (map fst (dest_trtab tab));
   299       pretty_strs_qs name (dest_trtab tab);
   298 
   300 
   299     fun pretty_ruletab name tab =
   301     fun pretty_ruletab name tab =
   300       Pretty.big_list name (map pretty_rule (dest_ruletab tab));
   302       Pretty.big_list name (map pretty_rule (dest_ruletab tab));
   301 
   303 
   302     fun pretty_tokentr (mode, trs) = Pretty.strs (quote mode ^ ":" :: map fst trs);
   304     fun pretty_tokentr (mode, trs) = Pretty.strs (quote mode ^ ":" :: map fst trs);
   318 (* print_syntax *)
   320 (* print_syntax *)
   319 
   321 
   320 fun print_syntax syn = (print_gram syn; print_trans syn);
   322 fun print_syntax syn = (print_gram syn; print_trans syn);
   321 
   323 
   322 
   324 
       
   325 (* trfun_names *)
       
   326 
       
   327 fun trfun_names (Syntax {parse_ast_trtab, parse_trtab, print_trtab, print_ruletab, ...}) =
       
   328   (dest_trtab parse_ast_trtab, dest_trtab parse_trtab,
       
   329     dest_trtab print_trtab, dest_trtab print_ruletab);
       
   330 
       
   331 
   323 
   332 
   324 (** read **)
   333 (** read **)
   325 
   334 
   326 (* test_read *)
   335 (* test_read *)
   327 
   336