equal
deleted
inserted
replaced
22 val --$$ : ('a -> 'b * token list) * string -> 'a -> 'b * token list |
22 val --$$ : ('a -> 'b * token list) * string -> 'a -> 'b * token list |
23 val ident: token list -> string * token list |
23 val ident: token list -> string * token list |
24 val long_ident: token list -> string * token list |
24 val long_ident: token list -> string * token list |
25 val long_id: token list -> string * token list |
25 val long_id: token list -> string * token list |
26 val type_var: token list -> string * token list |
26 val type_var: token list -> string * token list |
|
27 val type_args: token list -> string list * token list |
27 val nat: token list -> string * token list |
28 val nat: token list -> string * token list |
28 val string: token list -> string * token list |
29 val string: token list -> string * token list |
29 val verbatim: token list -> string * token list |
30 val verbatim: token list -> string * token list |
30 val empty: 'a -> 'b list * 'a |
31 val empty: 'a -> 'b list * 'a |
31 val optional: ('a -> 'b * 'a) -> 'b -> 'a -> 'b * 'a |
32 val optional: ('a -> 'b * 'a) -> 'b -> 'a -> 'b * 'a |
41 -> token list -> 'a list * token list |
42 -> token list -> 'a list * token list |
42 val name: token list -> string * token list |
43 val name: token list -> string * token list |
43 val sort: token list -> string * token list |
44 val sort: token list -> string * token list |
44 val opt_infix: token list -> string * token list |
45 val opt_infix: token list -> string * token list |
45 val opt_mixfix: token list -> string * token list |
46 val opt_mixfix: token list -> string * token list |
|
47 val opt_witness: token list -> string * token list |
46 type syntax |
48 type syntax |
47 val make_syntax: string list -> |
49 val make_syntax: string list -> |
48 (string * (token list -> (string * string) * token list)) list -> syntax |
50 (string * (token list -> (string * string) * token list)) list -> syntax |
49 val parse_thy: syntax -> string -> string -> string |
51 val parse_thy: syntax -> string -> string -> string |
50 val section: string -> string -> (token list -> string * token list) |
52 val section: string -> string -> (token list -> string * token list) |
54 -> (string * (token list -> (string * string) * token list)) |
56 -> (string * (token list -> (string * string) * token list)) |
55 val pure_keywords: string list |
57 val pure_keywords: string list |
56 val pure_sections: |
58 val pure_sections: |
57 (string * (token list -> (string * string) * token list)) list |
59 (string * (token list -> (string * string) * token list)) list |
58 (*items for building strings*) |
60 (*items for building strings*) |
59 val parens : string -> string |
61 val parens: string -> string |
60 val brackets : string -> string |
62 val brackets: string -> string |
61 val mk_list : string list -> string |
63 val mk_list: string list -> string |
62 val mk_big_list : string list -> string |
64 val mk_big_list: string list -> string |
63 val mk_pair : string * string -> string |
65 val mk_pair: string * string -> string |
64 val mk_triple : string * string * string -> string |
66 val mk_triple: string * string * string -> string |
65 end; |
67 end; |
66 |
68 |
67 functor ThyParseFun(structure Symtab: SYMTAB and ThyScan: THY_SCAN): THY_PARSE = |
69 functor ThyParseFun(structure Symtab: SYMTAB and ThyScan: THY_SCAN): THY_PARSE = |
68 struct |
70 struct |
69 |
71 |
327 optional ("(" $$-- list1 axm_or_thm --$$ ")") [] -- |
329 optional ("(" $$-- list1 axm_or_thm --$$ ")") [] -- |
328 optional (verbatim >> (parens o cat "Some" o parens)) "None" |
330 optional (verbatim >> (parens o cat "Some" o parens)) "None" |
329 >> mk_witness; |
331 >> mk_witness; |
330 |
332 |
331 val instance_decl = |
333 val instance_decl = |
332 (name --$$ "<" -- name >> (pair "|> add_inst_subclass" o mk_pair) || |
334 (name --$$ "<" -- name >> (pair "|> AxClass.add_inst_subclass" o mk_pair) || |
333 name --$$ "::" -- arity >> (pair "|> add_inst_arity" o mk_triple2)) |
335 name --$$ "::" -- arity >> (pair "|> AxClass.add_inst_arity" o mk_triple2)) |
334 -- opt_witness |
336 -- opt_witness |
335 >> (fn ((x, y), z) => (cat_lines [x, y, z], "")); |
337 >> (fn ((x, y), z) => (cat_lines [x, y, z], "")); |
336 |
338 |
337 |
339 |
338 |
340 |
457 section "translations" "|> add_trrules" trans_decls, |
459 section "translations" "|> add_trrules" trans_decls, |
458 section "MLtrans" "|> add_trfuns" mltrans, |
460 section "MLtrans" "|> add_trfuns" mltrans, |
459 ("MLtext", verbatim >> rpair ""), |
461 ("MLtext", verbatim >> rpair ""), |
460 axm_section "rules" "|> add_axioms" axiom_decls, |
462 axm_section "rules" "|> add_axioms" axiom_decls, |
461 axm_section "defs" "|> add_defs" axiom_decls, |
463 axm_section "defs" "|> add_defs" axiom_decls, |
462 axm_section "axclass" "|> add_axclass" axclass_decl, |
464 axm_section "axclass" "|> AxClass.add_axclass" axclass_decl, |
463 ("instance", instance_decl)]; |
465 ("instance", instance_decl)]; |
464 |
466 |
465 |
467 |
466 end; |
468 end; |
467 |
469 |