equal
deleted
inserted
replaced
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 |