5 Abstract syntax trees, translation rules, matching and normalization of asts. |
5 Abstract syntax trees, translation rules, matching and normalization of asts. |
6 *) |
6 *) |
7 |
7 |
8 signature AST0 = |
8 signature AST0 = |
9 sig |
9 sig |
10 structure Pretty: PRETTY |
|
11 datatype ast = |
10 datatype ast = |
12 Constant of string | |
11 Constant of string | |
13 Variable of string | |
12 Variable of string | |
14 Appl of ast list |
13 Appl of ast list |
|
14 exception AST of string * ast list |
|
15 end; |
|
16 |
|
17 signature AST1 = |
|
18 sig |
|
19 include AST0 |
|
20 structure Pretty: PRETTY |
15 val mk_appl: ast -> ast list -> ast |
21 val mk_appl: ast -> ast list -> ast |
16 exception AST of string * ast list |
|
17 val str_of_ast: ast -> string |
22 val str_of_ast: ast -> string |
18 val pretty_ast: ast -> Pretty.T |
23 val pretty_ast: ast -> Pretty.T |
19 val pretty_rule: (ast * ast) -> Pretty.T |
24 val pretty_rule: ast * ast -> Pretty.T |
20 val pprint_ast: ast -> pprint_args -> unit |
25 val pprint_ast: ast -> pprint_args -> unit |
21 val trace_norm_ast: bool ref |
26 val trace_norm_ast: bool ref |
22 val stat_norm_ast: bool ref |
27 val stat_norm_ast: bool ref |
23 end |
28 end; |
24 |
29 |
25 signature AST = |
30 signature AST = |
26 sig |
31 sig |
27 include AST0 |
32 include AST1 |
28 val raise_ast: string -> ast list -> 'a |
33 val raise_ast: string -> ast list -> 'a |
29 val head_of_rule: ast * ast -> string |
34 val head_of_rule: ast * ast -> string |
30 val rule_error: ast * ast -> string option |
35 val rule_error: ast * ast -> string option |
31 val fold_ast: string -> ast list -> ast |
36 val fold_ast: string -> ast list -> ast |
32 val fold_ast_p: string -> ast list * ast -> ast |
37 val fold_ast_p: string -> ast list * ast -> ast |