summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/actinide-repl33
1 files changed, 33 insertions, 0 deletions
diff --git a/bin/actinide-repl b/bin/actinide-repl
new file mode 100755
index 0000000..de19617
--- /dev/null
+++ b/bin/actinide-repl
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+
+import sys
+
+import actinide as a
+import actinide.ports as ap
+import actinide.types as at
+
+def repl(session, port):
+ while True:
+ try:
+ sys.stdout.write("> ")
+ sys.stdout.flush()
+ form = session.read(port)
+ if form is None:
+ print()
+ return 0
+ results = session.eval(form)
+ print(*(at.display(result) for result in results))
+ except Exception as e:
+ print(e)
+ except KeyboardInterrupt:
+ print()
+ print("(Interrupted)")
+
+def main():
+ port = ap.Port(sys.stdin)
+ session = a.Session()
+
+ return repl(session, port)
+
+if __name__ == '__main__':
+ sys.exit(main())