diff options
Diffstat (limited to 'frontend/transform.dcl')
-rw-r--r-- | frontend/transform.dcl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/frontend/transform.dcl b/frontend/transform.dcl new file mode 100644 index 0000000..79e47e8 --- /dev/null +++ b/frontend/transform.dcl @@ -0,0 +1,75 @@ +definition module transform + +import syntax, checksupport + +:: Group = + { group_members :: ![Int] + } + +partitionateAndLiftFunctions :: ![IndexRange] !Index !*{# FunDef} !u:{# DclModule} !*VarHeap !*ExpressionHeap !*SymbolTable !*ErrorAdmin + -> (!*{! Group}, !*{# FunDef}, !u:{# DclModule}, !*VarHeap, !*ExpressionHeap, !*SymbolTable, !*ErrorAdmin ) + +partitionateMacros :: !IndexRange !Index !*{# FunDef} !u:{# DclModule} !*VarHeap !*ExpressionHeap !*SymbolTable !*ErrorAdmin + -> (!*{# FunDef}, !u:{# DclModule}, !*VarHeap, !*ExpressionHeap, !*SymbolTable, !*ErrorAdmin ) + +:: UnfoldState = + { us_var_heap :: !.VarHeap + , us_symbol_heap :: !.ExpressionHeap + } + +class unfold a :: !a !*UnfoldState -> (!a, !*UnfoldState) + +instance unfold Expression//, PatternExpression + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |