Skip to content

Commit

Permalink
Remaining functions for new statements
Browse files Browse the repository at this point in the history
  • Loading branch information
serkm committed Sep 13, 2024
1 parent 2b783f8 commit c45bcdf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
6 changes: 6 additions & 0 deletions effekt/shared/src/main/scala/effekt/machine/Analysis.scala
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ def freeVariables(statement: Statement): Set[Variable] =
Set(ref) ++ freeVariables(rest) -- Set(name)
case Store(ref, value, rest) =>
Set(ref, value) ++ freeVariables(rest)
case Var(name, init, tpe, rest) =>
freeVariables(rest) ++ Set(init) -- Set(name)
case LoadVar(name, ref, rest) =>
Set(ref) ++ freeVariables(rest) -- Set(name)
case StoreVar(ref, value, rest) =>
Set(ref, value) ++ freeVariables(rest)
case PushFrame(frame, rest) =>
freeVariables(frame) ++ freeVariables(rest)
case Return(values) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ object PrettyPrinter extends ParenPrettyPrinter {
case Store(reference, value, rest) =>
"store" <> parens(List(reference, value) map toDoc) <> ";" <> line <> toDoc(rest)

case Var(name, init, _, rest) =>
"var" <+> name <+> "=" <+> toDoc(init) <> ";" <> line <> toDoc(rest)

case LoadVar(name, reference, rest) =>
"let" <+> name <+> "=" <+> "loadVar" <> parens(toDoc(reference)) <> ";" <> line <> toDoc(rest)

case StoreVar(reference, value, rest) =>
"storeVar" <> parens(List(reference, value) map toDoc) <> ";" <> line <> toDoc(rest)

case PushFrame(frame, rest) =>
"push" <+> toDoc(frame) <> ";" <> line <> toDoc(rest)

Expand Down

0 comments on commit c45bcdf

Please sign in to comment.