43 |
| S.E_Seq(xs, _) => List.foldl doVar env xs |
| S.E_Seq(xs, _) => List.foldl doVar env xs |
44 |
| S.E_Slice(x, indices, _) => let |
| S.E_Slice(x, indices, _) => let |
45 |
fun doIndex (NONE, env) = env |
fun doIndex (NONE, env) = env |
46 |
| doIndex (SOME ix, env) => doVar(ix, env) |
| doIndex (SOME ix, env) = doVar(ix, env) |
47 |
in |
in |
48 |
doVar (x, List.foldl doIndex env indices) |
doVar (x, List.foldl doIndex env indices) |
49 |
end |
end |
55 |
anal |
anal |
56 |
end |
end |
57 |
|
|
58 |
|
(* transform a strand definition. This includes introducing shadow state variables for |
59 |
|
* parameters, eliminating unused state variables, and identifying and lifting invariant |
60 |
|
* computations. |
61 |
|
*) |
62 |
|
fun doStrand (S.Strand{name, params, state, stateInit, initM, updateM, stabilizeM}) = let |
63 |
|
in |
64 |
|
() |
65 |
|
end |
66 |
|
|
67 |
fun transform prog = prog |
fun transform prog = prog |
68 |
|
|
69 |
end |
end |