aboutsummaryrefslogtreecommitdiff
path: root/cs/step0_repl.cs
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-04-06 19:23:28 -0500
committerJoel Martin <github@martintribe.org>2014-04-06 19:23:28 -0500
commitafde2df05daa178cf4d4bddccc0f27093416a9c2 (patch)
tree3624fc9c2d3a3f74842dfbd670ca78f8786e0932 /cs/step0_repl.cs
parentf1b72c6a7b4ada599cbd5d3f2dad5c3dee191bd2 (diff)
downloadmal-afde2df05daa178cf4d4bddccc0f27093416a9c2.tar.gz
mal-afde2df05daa178cf4d4bddccc0f27093416a9c2.zip
C#: step0_repl using de Icaza's getline.cs
Diffstat (limited to 'cs/step0_repl.cs')
-rw-r--r--cs/step0_repl.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/cs/step0_repl.cs b/cs/step0_repl.cs
new file mode 100644
index 0000000..665aab6
--- /dev/null
+++ b/cs/step0_repl.cs
@@ -0,0 +1,44 @@
+using System;
+using System.IO;
+using Mono.Terminal;
+
+namespace Mal {
+ class step0_repl {
+ // read
+ static string READ(string str) {
+ return str;
+ }
+
+ // eval
+ static string EVAL(string ast, string env) {
+ return ast;
+ }
+
+ // print
+ static string PRINT(string exp) {
+ return exp;
+ }
+
+ // REPL
+ static string RE(string env, string str) {
+ return EVAL(READ(str), env);
+ }
+
+ static void Main(string[] args) {
+ string prompt = "user> ";
+ LineEditor lineedit = new LineEditor("Mal");
+
+ while (true) {
+ string line;
+ try {
+ line = lineedit.Edit(prompt, "");
+ if (line == null) { break; }
+ } catch (IOException e) {
+ Console.WriteLine("IOException: " + e.Message);
+ break;
+ }
+ Console.WriteLine(PRINT(RE(null, line)));
+ }
+ }
+ }
+}