mirror of
https://github.com/kanaka/mal.git
synced 2024-09-17 16:47:22 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using Mal;
|
|
|
|
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) {
|
|
if (args.Length > 0 && args[0] == "--raw") {
|
|
Mal.readline.mode = Mal.readline.Mode.Raw;
|
|
}
|
|
|
|
// repl loop
|
|
while (true) {
|
|
string line;
|
|
try {
|
|
line = Mal.readline.Readline("user> ");
|
|
if (line == null) { break; }
|
|
if (line == "") { continue; }
|
|
} catch (IOException e) {
|
|
Console.WriteLine("IOException: " + e.Message);
|
|
break;
|
|
}
|
|
Console.WriteLine(PRINT(RE(null, line)));
|
|
}
|
|
}
|
|
}
|
|
}
|