summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2017-11-13 04:38:51 -0500
committerOwen Jacobson <owen@grimoire.ca>2017-11-13 04:38:51 -0500
commitd17c5d6354ab2a8a822107d59b0cf221edf99ee3 (patch)
tree5eb5348717411beee1cc6cf257884b3f7cb4c993 /bin
parent6ee8b48ce8f2189c23f8bf64bcf93e2210e67d26 (diff)
Re-add the repl, and a bunch of stdlib glue.
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())