2 (** This module provides folding functions over the constructors of the
5 val expression_subs : Cminor.expression -> Cminor.expression list
7 val expression_fill_subs : Cminor.expression -> Cminor.expression list ->
10 (* In [expression f e], [f]'s second argument is the list of
11 [expression]'s results on [e]'s sub-expressions. *)
13 val expression : (Cminor.expression -> 'a list -> 'a) ->
17 val statement_subs : Cminor.statement ->
18 (Cminor.expression list * Cminor.statement list)
20 val statement_fill_subs : Cminor.statement ->
21 Cminor.expression list ->
22 Cminor.statement list ->
25 (* In [statement f_expr f_stmt stmt], [f_stmt]'s second argument is the
26 list of [expression f_expr]'s results on [stmt]'s sub-expressions, and
27 [f_stmt]'s third argument is the list of [statement]'s results
28 on [stmt]'s sub-statements. *)
30 val statement : (Cminor.expression -> 'a list -> 'a) ->
31 (Cminor.statement -> 'a list -> 'b list -> 'b) ->