transform.dcl 1000 Bytes
Newer Older
Ronny Wichers Schreur's avatar
Ronny Wichers Schreur committed
1
2
3
4
5
6
7
8
definition module transform

import syntax, checksupport

::	Group =
	{	group_members	:: ![Int]
	}

9
10
partitionateAndLiftFunctions :: ![IndexRange] !Index !PredefinedSymbol !*{# FunDef} !*{# DclModule} !*VarHeap !*ExpressionHeap !*SymbolTable !*ErrorAdmin
	-> (!*{! Group}, !*{# FunDef}, !.{# DclModule}, !*VarHeap, !*ExpressionHeap,  !*SymbolTable, !*ErrorAdmin )
Ronny Wichers Schreur's avatar
Ronny Wichers Schreur committed
11

12
13
partitionateMacros :: !IndexRange !Index !PredefinedSymbol !*{# FunDef} !*{# DclModule} !*VarHeap !*ExpressionHeap !*SymbolTable !*ErrorAdmin
	-> (!*{# FunDef}, !.{# DclModule}, !*VarHeap, !*ExpressionHeap, !*SymbolTable, !*ErrorAdmin )
Ronny Wichers Schreur's avatar
Ronny Wichers Schreur committed
14
15

::	UnfoldState =
16
17
18
19
20
	{	us_var_heap				:: !.VarHeap
	,	us_symbol_heap			:: !.ExpressionHeap
	,	us_opt_type_heaps		:: !.Optional .TypeHeaps
	,	us_cleanup_info			:: ![ExprInfoPtr]
	,	us_handle_aci_free_vars	:: !AciFreeVarHandleMode
Ronny Wichers Schreur's avatar
Ronny Wichers Schreur committed
21
22
	}
	
23
24
:: AciFreeVarHandleMode = LeaveThem | RemoveThem | SubstituteThem

Ronny Wichers Schreur's avatar
Ronny Wichers Schreur committed
25
26
class unfold a :: !a !*UnfoldState -> (!a, !*UnfoldState)

27
instance unfold Expression, CasePatterns